У меня есть служба с самоподписанным сертификатом SSL, которую я хочу предоставить в Интернете. Я хотел бы, чтобы Istio Gateway разорвала SSL-соединение (используя сертификат от cert-manager), а дополнительный компонент istio для внутренней обработки HTTPS-трафика в серверной службе.
Однако, когда я пытаюсь это сделать, я получаю ошибки от Envoy:
TLS error: 268435648:SSL routines:OPENSSL_internal:PEER_DID_NOT_RETURN_A_CERTIFICATE
Моя внутренняя служба представлена так:
---
kind: VirtualService
apiVersion: networking.istio.io/v1alpha3
metadata:
name: stratos
namespace: stratos
spec:
gateways:
- cf-system/istio-ingressgateway
hosts:
- console.example.com
http:
- route:
- destination:
host: console-ui-ext
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: stratos
namespace: stratos
spec:
host: console-ui-ext
trafficPolicy:
tls:
mode: SIMPLE
---
kind: Gateway
SNIP
- hosts:
- console.example.com
port:
name: https-workloads
number: 443
protocol: HTTPS
tls:
credentialName: my-cert
mode: SIMPLE
В istio-sidecar я могу curl -k https://localhost
без проблем. Однако я получаю сообщение об ошибке SSL, когда использую curl -k https://console-ui-ext.stratos.svc.cluster.local
Что мне не хватает? Мне показалось странным, что все маршруты, добавленные в Envoy, outbound|443
, я ожидал увидеть и входящие маршруты там. Я не хочу передавать TLS на шлюз, так как сертификат серверной службы недействителен.
Istio использует настройку STRICT
mTLS.
Есть ли шаг, который я забыл при использовании бэкэнда HTTPS?