Ответ
Для развертывания Ingress-контроллера я использовал Helm-чарт ingress-nginx, так как это стандартный и поддерживаемый сообществом метод.
Базовая установка:
# Добавление репозитория и обновление индексов
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm repo update
# Установка в namespace ingress-nginx
helm install ingress-nginx ingress-nginx/ingress-nginx
-n ingress-nginx
--create-namespace
Проверка: После установки проверял, что контроллер запустился и получил внешний IP (в случае Cloud LoadBalancer).
kubectl get svc -n ingress-nginx
Кастомизация под облако: В AWS для использования Network Load Balancer (NLB) вместо Classic применял аннотации через values.yaml:
controller:
service:
type: LoadBalancer
annotations:
service.beta.kubernetes.io/aws-load-balancer-type: "nlb"
service.beta.kubernetes.io/aws-load-balancer-scheme: "internet-facing"
Для bare-metal или локальных кластеров: Настраивал контроллер в режиме NodePort и использовал внешний балансировщик (например, HAProxy) или разворачивал MetalLB в layer2-режиме для выделения IP-адресов из внутренней сети.
Дополнительные настройки: Часто добавлял конфигурационные параметры для увеличения таймаутов, настройки SSL или включения модулей, например, modsecurity для WAF.