concourse: Bug: worker mangles no_proxy environment variable

Bug Report

We just upgraded from 3.9.2 to 3.13.0 and had saw all our pipelines failing. In our setup we rely on http(s)_proxy and no_proxy as our corporate proxy refuses to serve internal resources. Since the upgrade we can’t access internal resources anymore which means the no_proxy environment variable is not set or wrong. Inspecting running /opt/resource/check processes via /proc/$PID/environ we noticed that the no_proxy environment variable only contains the very last part the value we pass via the http_proxy environment variable to the worker: env no_proxy=host1,host2,host3 concourse worker ... ends up as no_proxy=host3 in containers scheduled by the atc to that worker.

We also confirmed that this is already wrong in the database via select name,no_proxy from workers. So the worker seems to be picking this up wrong during startup.

I opened a PR that hopefully fixes this issue: https://github.com/concourse/worker/pull/1

The following can also be handy:

  • Concourse version: 3.13.0

  • Deployment type (BOSH/Docker/binary): binary

  • Did this used to work? Yes with 3.9.2

About this issue

  • Original URL
  • State: closed
  • Created 6 years ago
  • Reactions: 8
  • Comments: 16 (8 by maintainers)

Commits related to this issue

Most upvoted comments

@cfasnacht As this bug only effects how environment variables are parsed you can mitigate this by starting the worker with the command line flag --no-proxy=$no_proxy. This works because command line arguments have a higher precedence then environment variables.