• Русский
  • Создание 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