Как исключить переменные proxy env из пакетов для Kubernetes / OpenShift? - PullRequest
0 голосов
/ 20 декабря 2018

В моих модулях OpenShift есть набор переменных окружения прокси (http_proxy, HTTP_PROXY, https_proxy, HTTPS_PROXY, no_proxy, NO_PROXY), которые я не включил явно, и я не хочу их там.

Например,

$ 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-переменные попадают в мои блоки.

Я не Настройка переменных среды прокси в модулях .

$ 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 на моих узлах master / app нет прокси env vars.

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

Kubelet(openshift-node) на моих главных узлах / узлах приложения не имеют переменных env прокси.

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

Главные компоненты на моих главных узлах не имеют переменных env прокси.

$ 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-переменные попадают в мои модули.

Версии:

  • OpenShift v3.9.51

1 Ответ

0 голосов
/ 22 января 2019

Мы наконец поняли это.openshift_http_proxy, openshift_https_proxy и openshift_no_proxy установлены в переменных инвентаризации нашего установщика согласно Настройка глобальных параметров прокси .

Мы знали, что это также означало, что это также неявно устанавливало *Переменные инвентаризации установщика 1008 *, openshift_builddefaults_https_proxy и openshift_builddefaults_no_proxy и в соответствии с документами

Эта переменная определяет переменную среды HTTP_PROXY, вставляемую в сборки с использованием контроллера допуска BuildDefaults.Если вы не определяете этот параметр, но определяете параметр openshift_http_proxy, используется значение openshift_http_proxy.Установите значение openshift_builddefaults_http_proxy в False, чтобы отключить http-прокси по умолчанию для сборок независимо от значения openshift_http_proxy.

Что мы сделали не знать (и я бы сказал, что это совсем не ясно изприведенное выше описание) заключается в том, что установка этих переменных инвентаря установщика постоянно устанавливает переменные HTTP_PROXY, HTTPS_PROXY и NO_PROXY env в ваших изображениях.

Это болезненно очевидно сейчас, когда мы оглядываемся назад на сборкурегистрировать и видеть такие строки

...
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"
...

Мы не можем исключить прокси envars из пакетов, потому что эти env vars были установлены во время сборки.

...