Istio с соединением mTLS дает 503, но работает между службой mTLS->HTTP

Итак, у меня есть установка, в которой у меня есть Istio IngressGateway с VirtualService, который направляет запросы от HTTPS на порт 80 обычного модуля Nginx, а этот модуль Nginx затем proxy_pass для других служб.

Я включил mTLS везде.

Когда я попытался получить доступ к сервису, которого нет в сетке istio, nginx смог успешно подключиться, и я получил ответ. (Это будет nginx (mTLS) -> otherService (HTTP) и DestinationRule, отключающие tls для этой службы HTTP)

Но когда я пытаюсь получить доступ к другой службе с включенным mTLS (это будет nginx (mTLS) -> otherService (mTLS)), я получаю 503, когда вижу журналы Nginx. Таким образом, запрос поступил из входа в службу nginx, но затем не удалось подключиться к следующему.

Мой шлюз выглядит следующим образом:

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: ingress-gateway
  namespace: istio-system
spec:
  selector:
    istio: ingressgateway # use istio default ingress gateway
  servers:
    - port:
        number: 80
        name: http
        protocol: HTTP
      hosts:
        - test.example.com
      tls:
        httpsRedirect: true # sends 301 redirect for http requests
    - port:
        number: 443
        name: https
        protocol: HTTPS
      tls:
        mode: SIMPLE
        serverCertificate: /etc/istio/ingressgateway-certs/tls.crt
        privateKey: /etc/istio/ingressgateway-certs/tls.key
      hosts:
        - test.example.com

И тогда мой VirtualService, соединяющий шлюз с моей службой nginx:

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: ingress-nginx
  namespace: gateway
spec:
  hosts:
    - test.example.com
  gateways:
    - ingress-gateway.istio-system
  http:
    - match:
        - uri:
            prefix: /
      route:
        - destination:
            port:
              number: 80
            host: nginx.gateway.svc.cluster.local

Я не понимаю, что еще мне не хватает

Также попытался настроить VirtualService из nginx для этого другого сервиса с тем же результатом

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: otherService
  namespace: auth
spec:
  hosts:
    - nginx.gateway.svc.cluster.local
  gateways:
    - mesh
  http:
    - match:
        - uri:
            prefix: /
      route:
        - destination:
            port:
              number: 80
            host: otherService.auth.svc.cluster.local

0 ответов

Общие советы по отладке сервисной сети Istio:

  1. Ознакомьтесь с требованиями к службам и модулям.
  2. Попробуйте выполнить задачу, аналогичную той, которую вы пытаетесь выполнить, из списка задач Istio. Посмотрите, работает ли эта задача, и найдите отличия от своей задачи.
  3. Следуйте инструкциям в разделе устранения неполадок Istio.
Другие вопросы по тегам