Proxy Configuration - gpillon/k4all GitHub Wiki
-
What it does: Applies system-wide proxy for services managed by
systemd(e.g.,kubelet,crio,NetworkManager) viaDefaultEnvironmentinsystemdmanager config. -
Where it’s configured: JSON config at
/etc/k4all-config.json(key:.proxy). -
How it’s applied:
scripts/setup-proxy.shwrites to/etc/systemd/system.conf.d/proxy.conf, ensures[Manager], upsertsDefaultEnvironment=..., reloadssystemd, restarts key services.
Place in your configuration file (e.g. /etc/k4all-config.json or the file you pass to the validator):
{
"proxy": {
"http_proxy": "http://proxy.example.com:3128",
"https_proxy": "http://proxy.example.com:3128",
"no_proxy": "127.0.0.1,localhost,.svc,.cluster.local,10.96.0.0/12,10.244.0.0/16"
}
}-
http_proxy/https_proxy: URL (optionally with auth), e.g.
http://user:pass@proxy:3128 -
no_proxy: Comma-separated list (no spaces), supports domains like
.example.comand CIDRs.
Use the built-in validator before applying:
bash /root/fcos-k8s/install-scripts/validate_config.sh /etc/k4all-config.json- Ensures
.proxyexists and that.proxy.http_proxy,.proxy.https_proxy,.proxy.no_proxyare present and strings.
Note: installer does it for you..
Script: scripts/setup-proxy.sh
- Reads values from
K4ALL_CONFIG_FILE(set inscripts/k4all-utilsto/etc/k4all-config.json). - Ensures file
/etc/systemd/system.conf.d/proxy.confexists with[Manager]. - Upserts lines:
DefaultEnvironment="HTTP_PROXY=..."DefaultEnvironment="HTTPS_PROXY=..."DefaultEnvironment="NO_PROXY=..."- Also writes lowercase variants for wider CLI compatibility:
DefaultEnvironment="http_proxy=..."DefaultEnvironment="https_proxy=..."DefaultEnvironment="no_proxy=..."
- If a value is empty/missing, the corresponding
DefaultEnvironment="VAR=..."line is removed. - Reloads and restarts:
systemctl daemon-reloadsystemctl restart systemd-resolvedsystemctl restart NetworkManager
- Idempotent; a sentinel file
/opt/k4all/setup-proxy.doneprevents re-running automatically.
"proxy": {
"http_proxy": "http://proxy.corp.local:3128",
"https_proxy": "http://proxy.corp.local:3128",
"no_proxy": "127.0.0.1,localhost,.svc,.cluster.local,10.0.0.0/8"
}"proxy": {
"http_proxy": "http://user:[email protected]:3128",
"https_proxy": "http://user:[email protected]:3128",
"no_proxy": "127.0.0.1,localhost,.corp.local"
}"proxy": {
"http_proxy": "",
"https_proxy": "",
"no_proxy": ""
}Empty values remove the corresponding DefaultEnvironment lines.
If you need to force re-apply:
sudo rm -f /opt/k4all/setup-proxy.done
sudo bash /root/fcos-k8s/scripts/setup-proxy.sh- Check systemd manager config file:
sudo sed -n '1,120p' /etc/systemd/system.conf.d/proxy.conf- Check a service’s effective environment (example:
kubelet):
systemctl show kubelet -p Environment- Quick curl test (should route via proxy):
curl -I https://www.google.com-
Lines not in
proxy.conf: Ensure config has non-empty.proxy.*values; re-run setup. -
Service not honoring proxy:
- Inspect per-unit overrides in
/etc/systemd/system/<unit>.d/*.confthat may override environment. - Check with
systemctl show <unit> -p Environment.
- Inspect per-unit overrides in
-
Name resolution issues through proxy: Adjust
no_proxyto include cluster/service domains (e.g.,.svc,.cluster.local) and internal CIDRs. -
Re-apply after edits: Remove
/opt/k4all/setup-proxy.doneand re-run the setup script. - Invalid JSON or missing keys: Run the validator to get clear messages.
- If using credentials in proxy URLs, prefer least-privilege accounts and avoid committing secrets to version control.
- Consider using a secret manager or environment injection mechanism if extending beyond system-wide proxy.