При управлении кластерами Kubernetes в корпоративной сетевой среде вы часто сталкиваетесь с ситуациями, когда вам необходимо настроить поды для доступа в Интернет через прокси-сервер HTTP. Это может быть связано с различными причинами, такими как ограничения политики безопасности, требования к сетевой архитектуре или необходимость доступа к определенным ресурсам. В этой статье будут представлены два распространенных способа настройки прокси-сервера, используемого подами в Kubernetes: через ConfigMap и непосредственная установка его в переменных среды приложения.
Сценарии настройки подов для использования агентов в кластере Kubernetes могут включать в себя:
Далее будут представлены два распространенных метода настройки:
создаватьодинназванныйproxy-config
изConfigMapвключить информацию о настройках прокси:
apiVersion: v1
kind: ConfigMap
metadata:
name: proxy-config
data:
http_proxy: http://<proxy-server>:<port>
https_proxy: http://<proxy-server>:<port>
no_proxy: .cluster.local,.svc,.my-company.com,127.0.0.1
заменять<proxy-server>
и<port>
для фактическогопрокси-серверизадресипорт。
Измените определение модуля, чтобы использовать переменные среды в ConfigMap:
apiVersion: v1
kind: Pod
metadata:
name: example-pod
spec:
containers:
- name: example-container
image: nginx
envFrom:
- configMapRef:
name: proxy-config
В приложении Pod убедитесь, что эти переменные среды используются правильно. Например, в инструментах командной строки, таких как Curl и wget, переменные среды HTTP_PROXY и HTTPS_PROXY распознаются автоматически, тогда как клиентские библиотеки HTTP некоторых языков программирования могут требовать явной настройки прокси в коде.
В отличие от ConfigMap, вы можете установить переменные среды непосредственно в определении Pod или Deployment. Я использую переменные среды непосредственно здесь:
apiVersion: apps/v1
kind: Deployment
metadata:
name: example-deployment
spec:
replicas: 2
selector:
matchLabels:
app: example
template:
metadata:
labels:
app: example
spec:
containers:
- name: example-container
image: nginx
env:
- name: http_proxy
value: http://<proxy-server>:<port>
- name: https_proxy
value: http://<proxy-server>:<port>
- name: no_proxy
value: .cluster.local,.svc,.my-company.com,127.0.0.1
Этот подход обеспечивает более гибкую настройку, поскольку вы можете указать разные настройки прокси-сервера для разных развертываний.
Аналогичным образом убедитесь, что ваше приложение или служба считывает и правильно использует эти настройки переменных среды.
http_proxy
/ https_proxy
: обозначениеHTTP/HTTPSизпрокси-сервер,Формат:http://<proxy-user>:<proxy-password>@<proxy-server>:<port>
。no_proxy
: обозначениеизадрес不通过прокси-сервердоступ。обычно включаютKubernetesиз Суффикс обнаружения службы похож на.cluster.local
、.svc
и локальная сетьизобъем。После развертывания модуля мы можем проверить, вступят ли в силу эти настройки:
kubectl exec -it example-pod -- /bin/sh
curl
Проверьте, работает ли прокси: curl -I 'https://discord.com'Если возвращается нормальный HTTP-ответ, настройки прокси-сервера действуют и работают правильно. Если у вас возникли тайм-ауты соединения или ошибки прокси-сервера, возможно, вам придется проверить конфигурацию прокси-сервера и настройки политики сети.
Проверьте интерфейс Discord, предоставленный вашим другом:
curl --location --request POST 'https://discord.com/api/v10/oauth2/token'
Правильная настройка модулей Pod в Kubernetes для использования HTTP-прокси — ключевой шаг в удовлетворении требований корпоративной сети. Вы можете обеспечить контроль и гибкость исходящего трафика вашего кластера, используя ConfigMap или задав информацию о прокси-сервере непосредственно в переменных среды. Однако не забудьте тщательно протестировать перед развертыванием, чтобы убедиться, что все работает должным образом.