☸️ Выявление служб TCP с помощью ingress-nginx |

☸️ Выявление служб TCP с помощью ingress-nginx

Мануал

Руководство по раскрытию TCP-сервисов с помощью ingress-nginx.

Установим службу TCP

Установите службу, которая связывает TCP-порт, который вам нужно выставить.

Для этого примера мы установим развертывание dind (Docker in Docker) и выставим TCP-порт 2376.

helm repo add itsecforu https://chartmuseum.itsecforu .ru
helm repo update
helm install dind itsecforu/dind --set extraHosts[0]=example.com

Примечание: Установите extraHosts в DNS-имя, которое будет резолвить службу.

Установим ingress-nginx

Установите контроллер ingress-nginx для вашего кластера.

Создайте configmap

cat <<EOF |kubectl apply -n ingress-nginx -f -
apiVersion: v1
data:
"2376": default/dind:2376
kind: ConfigMap
metadata:
name: tcp-services
EOF

Настроим ingress-controller

Внесите Patch в spec.template.spec.containers[0].args развертывания ingress-nginx с аргументом –tcp-services, используя формат –tcp-services=<имя пространства имен/имя configmap>:

INGRESS_NGINX_ARGS=$(\
    kubectl get deployments.apps \
    -n ingress-nginx \
    nginx-ingress-controller \
    -o json | jq '.spec.template.spec.containers[]|select(.name=="nginx-ingress-controller")|.args+=["--tcp-services=ingress-nginx/tcp-services"]|.args|unique'
)
PATCH='{"spec":{"template":{"spec":{"containers":[{"name":"nginx-ingress-controller","args":[{}]}]}}}}'
kubectl patch deployments.apps -n ingress-nginx nginx-ingress-controller -p "$(echo "$PATCH" |jq ".spec.template.spec.containers[0].args=$INGRESS_NGINX_ARGS")"

Настроим службу ingress-nginx

Исправьте службу ingress-nginx:

kubectl patch service -n ingress-nginx ingress-nginx -p '{"spec": {"ports": [{"port": 2376,"targetPort": 2376,"name": "dind"}]}}'

Совет: Google Kubernetes Engine и DigitalOcean автоматически обновят существующие правила брандмауэра для разрешения трафика на указанном порту.

Проверьте соединение

Скопируйте клиентские TLS-сертификаты для подключения к демону docker:

kubectl cp dind-0:/certs/client client

Установите пользовательское окружение и подключитесь к удаленному демону docker:

export DOCKER_HOST=tcp://example.com:2376
export DOCKER_CERT_PATH=${PWD}/client
export DOCKER_TLS_VERIFY=1
docker ps

см. также:

 

 

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий