Мы настроили кластер Kubernetes на наборе (виртуальных) хостов Linux. Каждый хост запускает внутренний HTTP-прокси на хосте 127.0.0.1:3128
. Чтобы получить доступ к внешним ресурсам HTTP / HTTPS из этой сети, должен использоваться прокси.
Мы хотели бы сделать внешнюю сеть доступной из контейнеров в кластере. Контейнеры, работающие на данном хосте, должны использовать экземпляр прокси HTTP с этого хоста.
Как мы можем сделать эти прокси-сервисы доступными изнутри контейнеров?
IP-адрес узла всегда доступен для контейнеров через fieldRef:
, и можно ссылаться на других участников env:
, используя $()
синтаксис (обратите внимание, что это не синтаксис оболочки, это синтаксис интерполяции kubernetes)
spec:
containers:
- name: use-proxy
env:
- name: NODE_IP
valueFrom:
fieldRef:
fieldPath: status.hostIP
- name: HTTP_PROXY
value: $(NODE_IP):3128
- name: HTTPS_PROXY
value: $(NODE_IP):3128
и не забывайте, что вам, вероятно, потребуется внедрить ЦС для прокси-сервера HTTPS, если он работает в режиме MITM
Также имейте в виду, что если он буквально привязан к 127.0.0.1 на узле, вы не сможете получить к нему доступ изнутри кластера kubernetes, поскольку эти интерфейсы не считаются «локальными». Вам нужно будет сделать прокси доступным для интерфейса CNI