Настройка внедряемого gateway для входящего трафика

Когда gateway устанавливается через внедрение gateway injection, вы можете настроить его для обработки входящего трафика, используя ресурсы Istio Gateway и VirtualService вместе. Ресурс Istio Gateway определяет балансировщик нагрузки, который работает на границе mesh, обрабатывая входящие или исходящие HTTP/TCP соединения. Спецификация Gateway описывает набор портов для экспонирования, используемый протокол и настройки Server Name Indication (SNI) для балансировщика нагрузки. VirtualServices используются для определения правил маршрутизации для Istio Gateway, аналогично тому, как они определяют правила маршрутизации для трафика внутри mesh.

В приведённом ниже примере ресурс Istio Gateway настраивает прокси gateway, чтобы служить точкой входа для внешнего трафика. Эта конфигурация открывает порт 443 (HTTPS) для хоста bookinfo.com. Настройка применяется к pod'ам с меткой istio: ingressgateway. Режим tls установлен в SIMPLE, что означает, что входящий HTTPS трафик завершается с использованием предоставленного TLS Secret.

Пример конфигурации

apiVersion: networking.istio.io/v1
kind: Gateway
metadata:
  name: bookinfo-gateway
  namespace: bookinfo
spec:
  selector:
    istio: ingressgateway
  servers:
    - port:
        number: 443
        name: https-443
        protocol: HTTPS
      hosts:
        - bookinfo.com
      tls:
        mode: SIMPLE
        credentialName: bookinfo-credential

Ниже приведён VirtualService, связанный с ресурсом Istio Gateway из предыдущего примера конфигурации. Его спецификация создаёт правила для направления трафика с префиксом пути /reviews/ к сервису reviews в пространстве имён bookinfo. VirtualService явно ссылается на ранее показанный ресурс Gateway, обеспечивая применение этих правил маршрутизации только к трафику, проходящему через этот конкретный gateway.

Пример конфигурации

kind: VirtualService
metadata:
  name: bookinfo-rule
  namespace: bookinfo
spec:
  hosts:
    - bookinfo.com
  gateways:
    - bookinfo/bookinfo-gateway
  http:
    - match:
        - uri:
            prefix: /reviews/
      route:
        - destination:
            port:
              number: 9080
            host: reviews.bookinfo.svc.cluster.local