Создание Ingress

Правила Ingress (Kubernetes Ingress) открывают HTTP/HTTPS маршруты снаружи кластера для внутренней маршрутизации (Kubernetes Service), позволяя контролировать внешний доступ к вычислительным компонентам.

Создайте Ingress для управления внешним HTTP/HTTPS доступом к Service.

WARNING

При создании нескольких ingress в одном и том же namespace, разные ingress НЕ ДОЛЖНЫ иметь одинаковые Domain, Protocol и Path (то есть дублирование точек доступа не допускается).

Содержание

Метод реализации

Правила Ingress зависят от реализации Ingress Controller, который отвечает за отслеживание изменений в Ingress и Service. После создания нового Ingress, когда Ingress Controller получает запрос, он сопоставляет правило переадресации из Ingress и распределяет трафик по указанным внутренним маршрутам, как показано на схеме ниже.

NOTE

Для протокола HTTP Ingress поддерживает только порт 80 в качестве внешнего порта. Для протокола HTTPS Ingress поддерживает только порт 443 в качестве внешнего порта. Балансировщик нагрузки платформы автоматически добавляет порты 80 и 443 для прослушивания.

Пример Ingress:

# nginx-ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: nginx-ingress
  namespace: k-1
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  ingressClassName: nginx
  rules:
    - host: demo.local
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: nginx-service
                port:
                  number: 80
  1. Для получения дополнительной информации о конфигурациях см.
    nginx-configuration.
  2. nginx используется для контроллера ingress-nginx, $alb_name — для использования alb в качестве ingress controller.
  3. Если вы хотите запускать ingress локально, предварительно настройте hosts.

Создание Ingress через веб-консоль

  1. Зайдите в Container Platform.

  2. В левой навигационной панели выберите Network > Ingress.

  3. Нажмите Create Ingress.

  4. Используйте инструкции ниже для настройки параметров.

    ПараметрОписание
    Ingress ClassIngress может реализовываться разными контроллерами с разными именами IngressClass. Если на платформе доступно несколько ingress контроллеров, пользователь может выбрать нужный с помощью этой опции.
    Domain NameХосты могут быть точными совпадениями (например, foo.bar.com) или с подстановочным знаком (например, *.foo.com). Доступные доменные имена выделяются администратором платформы.
    CertificatesTLS секреты или сертификаты, выделенные администратором платформы.
    Match Type и Path
    • Prefix: Совпадение по префиксу пути, например, /abcd совпадает с /abcd/efg или /abcde.
    • Exact: Совпадение по точному пути, например, /abcd.
    • Implementation specific: Если вы используете кастомный Ingress controller для управления правилами Ingress, можно позволить контроллеру решать самостоятельно.
    ServiceВнешний трафик будет перенаправлен на этот Service.
    Service PortУкажите порт Service, на который будет перенаправлен трафик.
  5. Нажмите Create.

Создание Ingress через CLI

kubectl apply -f nginx-ingress.yaml