С какими Ingress-контроллерами вы работали?

«С какими Ingress-контроллерами вы работали?» — вопрос из категории Kubernetes, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Работал с несколькими популярными Ingress-контроллерами, выбирая их под задачи проекта:

1. NGINX Ingress Controller (kubernetes-ingress-nginx):

  • Сценарии: Стандартный выбор для большинства проектов, работающих на bare-metal или любом облаке. Использовал для сложной маршрутизации, canary-релизов (через аннотации nginx.ingress.kubernetes.io/canary) и терминации TLS.
  • Пример конфигурации для canary:
    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: myapp-canary
      annotations:
        nginx.ingress.kubernetes.io/canary: "true"
        nginx.ingress.kubernetes.io/canary-weight: "10"
    spec:
      ingressClassName: nginx
      rules:
      - host: app.example.com
        http:
          paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: myapp-new
                port:
                  number: 80

2. AWS Load Balancer Controller (ранее ALB Ingress Controller):

  • Сценарии: Проекты, глубоко интегрированные в AWS. Позволяет создавать Application Load Balancer (ALB) напрямую из манифестов Kubernetes. Использовал для упрощения инфраструктуры (ALB создаётся автоматически) и использования native AWS features (WAF, Shield).

3. Traefik Proxy:

  • Сценарии: Динамические среды, где сервисы часто добавляются/удаляются. Особенно удобен в связке с Let's Encrypt для автоматического получения и обновления TLS-сертификатов через CRD (IngressRoute).

Критерии выбора: Интеграция с облачным провайдером (для использования native LB), потребность в специфических функциях (gRPC, WebSocket) и сложность правил маршрутизации.