fix(proxy): make all egress workloads proxy-aware (wire the dead HTTP_PROXY_* values)#229
Merged
Merged
Conversation
…_PROXY_* values) The env.HTTP_PROXY_HOST/PORT/USERNAME/PASSWORD values were declared in values.yaml + values.schema.json but consumed by no template, and no workload pod received HTTP(S)_PROXY/NO_PROXY env. Behind a corporate proxy the installer's node-level proxy (scripts/lib/cluster.sh) handles image pulls, but the application pods make direct external calls (jobs-manager -> api.tracebloc.io) the network refuses -> CrashLoopBackOff. Add a tracebloc.proxyEnv helper that derives HTTP(S)_PROXY + an auto-augmented NO_PROXY (cluster-internal ranges always included, mirroring cluster.sh, so in-cluster + MySQL traffic never traverses the proxy) from the env.HTTP_PROXY_* values, and reference it on every external-egress workload: jobs-manager (api + pods-monitor), requests-proxy, image-refresh CronJob, auto-upgrade CronJob. Renders nothing when no proxy is set, so non-proxy installs are unchanged. Excludes mysql-client and resource-monitor (no external egress) and the ingestor sub-chart (talks only to jobs-manager.<ns>.svc, in-cluster). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Contributor
Author
|
👋 Heads-up — Code review queue is at 9 / 8 Above the WIP limit. The team convention is to review existing PRs before opening new work. Open PRs currently in Code review (oldest first):
Pull from review before opening new work. (This is a nudge from the kanban WIP check, not a block.) |
…red, none when not (backend#768) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This was referenced Jun 8, 2026
saadqbal
approved these changes
Jun 9, 2026
saadqbal
added a commit
that referenced
this pull request
Jun 9, 2026
fix(#229): dedupe NO_PROXY — exclude proxy keys from generic env passthrough
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Behind a corporate proxy, the chart's workload pods are proxy-blind: no pod received
HTTP(S)_PROXY/NO_PROXYenv, so any pod making a direct external call (jobs-manager →api.tracebloc.io) failed with[Errno 111] Connection refused→ CrashLoopBackOff. Theenv.HTTP_PROXY_HOST/PORT/USERNAME/PASSWORDvalues were declared invalues.yaml+values.schema.jsonbut wired into nothing — a promise the chart never kept. The installer's proxy hardening (scripts/lib/cluster.sh) only covers the k3s node (image pulls), not the application pods.This makes those values real: a
tracebloc.proxyEnvhelper derivesHTTP_PROXY/HTTPS_PROXY/http_proxy/https_proxy(http://[user:pass@]host[:port]) + an auto-augmentedNO_PROXY(always carrying the cluster-internal ranges fromcluster.sh, so in-cluster + MySQL traffic never traverses the proxy), referenced on every external-egress workload. Renders nothing when no proxy is set → non-proxy installs are byte-unchanged.Root-cause + egress analysis: tracebloc/backend#768.
Workloads covered (and excluded)
api+pods-monitor-containerapi.tracebloc.iodataset push)jobs-manager.<ns>.svconlyThis makes the per-pod
kubectl set envbridge patches used to recover the affected deployment unnecessary going forward.Type
Test plan (helm template,
ci/bm-values.yaml)--set-string env.HTTP_PROXY_HOST=proxy.example.com --set-string env.HTTP_PROXY_PORT=8080): all 5 egress containers renderHTTP_PROXY=http://proxy.example.com:8080;NO_PROXYincludes172.16.0.0/12,10.0.0.0/8,.svc,.cluster.local; full manifest parses as valid YAML.HTTP_PROXYentries — non-proxy installs unchanged; parses cleanly.env.HTTP_PROXY_PORTis a string in the schema → set with--set-string.Checklist
develophelm-ci,installer-tests) greenFollow-ups (in backend#768, not this PR)
env.HTTP_PROXY_HOST/PORTfrom the proxy it already detects, so a proxied install is zero-config (no manual values).e2e-proxy.sh: assert a workload pod (not just the node) reaches an allowlisted external host through the proxy — the test that would have caught this.