我如何从kubernetes/openshift的豆荚中排除代理env var



有一组代理环境变量(http_proxy,http_proxy,https_proxy,https_proxy,https_proxy,no_proxy,no_proxy,no_proxy,no_proxy)在我的openshift pods中,我不希望他们在那儿不需要他们。

例如

$ oc run netshoot -it --image docker-registry.default.svc:5000/default/netshoot -- bash
If you don't see a command prompt, try pressing enter.
bash-4.4$ env | grep -i proxy | sort
HTTPS_PROXY=http://xx.xx.xx.xx:8081/
HTTP_PROXY=http://xx.xx.xx.xx:8081/
NO_PROXY=.cluster.local,.mydomain.nz,.localdomain.com,.svc,10.xx.xx.xx,127.0.0.1,172.30.0.1,app01.mydomain.nz,app02.mydomain.nz,inf01.mydomain.nz,inf02.mydomain.nz,mst01.mydomain.nz,localaddress,localhost,.edpay.nz
http_proxy=xx.xx.xx.xx:8081
https_proxy=xx.xx.xx.xx:8081
no_proxy=.cluster.local,.mydomain.nz,.localdomain.com,.svc,10.xx.xx.xx,127.0.0.1,172.30.0.1,app01.mydomain.nz,app02.mydomain.nz,inf01.mydomain.nz,inf02.mydomain.nz,mst01.mydomain.nz,localaddress,localhost,.edpay.nz

我还没有追踪这些env var如何进入我的豆荚。

我没有设置豆荚中的代理环境变量。

$ oc get pod netshoot-1-hjp2p -o yaml | grep -A 10 env
[no output]
$ oc get deploymentconfig netshoot -o yaml | grep -A 10 env
[no output]

我不是在创建POD预设

$ oc get podpresets --all-namespaces
No resources found.

我的主/应用节点上的docker没有代理env vars。

$ grep -i proxy /etc/sysconfig/docker
[no output]

kubelet(openshift节点)在我的主/应用节点上没有代理env vars。

$ grep -i proxy /etc/sysconfig/atomic-openshift-node
[no output]

主节点上的主组件没有代理env vars。

$ grep -i proxy /etc/sysconfig/atomic-openshift-master
[no output]
$ grep -i proxy /etc/sysconfig/atomic-openshift-master-api
[no output]
$ grep -i proxy /etc/sysconfig/atomic-openshift-master-controllers
[no output]

sysconfig文件的内容(不包括注释)

$ cat /etc/sysconfig/atomic-openshift-master
OPTIONS="--loglevel=0"
CONFIG_FILE=/etc/origin/master/master-config.yaml
$ cat /etc/sysconfig/atomic-openshift-node
OPTIONS=--loglevel=2
CONFIG_FILE=/etc/origin/node/node-config.yaml
IMAGE_VERSION=v3.9.51
$ cat /etc/sysconfig/docker
OPTIONS=' --selinux-enabled       --signature-verification=False         --insecure-registry 172.30.0.0/16'
if [ -z "${DOCKER_CERT_PATH}" ]; then
    DOCKER_CERT_PATH=/etc/docker
fi
ADD_REGISTRY='--add-registry registry.access.redhat.com'
$ cat /etc/sysconfig/atomic-openshift-master-api
OPTIONS=--loglevel=2 --listen=https://0.0.0.0:8443 --master=https://mst01.mydomain.nz:8443
CONFIG_FILE=/etc/origin/master/master-config.yaml
OPENSHIFT_DEFAULT_REGISTRY=docker-registry.default.svc:5000
$ cat /etc/sysconfig/atomic-openshift-master-controllers
OPTIONS=--loglevel=2 --listen=https://0.0.0.0:8444
CONFIG_FILE=/etc/origin/master/master-config.yaml
OPENSHIFT_DEFAULT_REGISTRY=docker-registry.default.svc:5000

那些代理env vars如何进入我的豆荚,我感到不知所措。

版本:

  • OpenShift v3.9.51

我们终于弄清楚了。根据配置全局代理选项,我们在安装程序清单变量中设置了openshift_http_proxyopenshift_https_proxyopenshift_no_proxy

我们知道,这也意味着它也暗中设置了openshift_builddefaults_http_proxyopenshift_builddefaults_https_proxyopenshift_builddefaults_no_proxy安装程序库存变量,并根据DOCS

此变量定义了使用BuildDefaults录取控制器插入构建中的HTTP_Proxy环境变量。如果您不定义此参数,而是定义openshift_http_proxy参数,则使用openshift_http_proxy值。将openshift_builddefaults_http_proxy值设置为false到false to disable default HTTP代理,无论openshift_http_proxy value。

我们所做的知道(我认为从上面的描述中完全不清楚),是设置那些安装程序库存变量设置HTTP_PROXYHTTPS_PROXYNO_PROXY ENDS在内部永久性您的图像。

当我们回顾构建日志并看到类似的行

时,现在很明显
...
Step 2/19 : ENV "HTTP_PROXY" "xxx.xxx.xxx.xxx" "HTTPS_PROXY" "xxx.xxx.xxx.xxx" "NO_PROXY" "127.0.0.1,localhost,172.30.0.1,.svc,.cluster.local" "http_proxy" "xxx.xxx.xxx.xxx" "https_proxy" "xxx.xxx.xxx.xxx" "no_proxy" "127.0.0.1,localhost,172.30.0.1,.svc,.cluster.local"
...

我们不能从吊舱中排除代理env vars,因为这些env var是在构建时间设置的。

最新更新