Kubernetes 具有HTTPS后端的VirtualService

Kubernetes 具有HTTPS后端的VirtualService,kubernetes,istio,envoyproxy,Kubernetes,Istio,Envoyproxy,我有一个带有自签名SSL证书的服务,我想将其公开给internet。我希望Istio网关终止SSL连接(使用来自cert manager的证书)和Istio侧车,以便在后端服务内部处理HTTPS通信 然而,当我尝试这一点时,我从特使那里得到了错误: TLS error: 268435648:SSL routines:OPENSSL_internal:PEER_DID_NOT_RETURN_A_CERTIFICATE 我的后端服务是这样公开的: --- kind: VirtualService

我有一个带有自签名SSL证书的服务,我想将其公开给internet。我希望Istio网关终止SSL连接(使用来自cert manager的证书)和Istio侧车,以便在后端服务内部处理HTTPS通信

然而,当我尝试这一点时,我从特使那里得到了错误:

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侧车中,我可以
curl-khttps://localhost
没有问题。然而,当我使用
curl-k时,我得到了一个SSL错误https://console-ui-ext.stratos.svc.cluster.local

我错过了什么?我发现一件奇怪的事情是,添加到特使的路线都是
出站的| 443
,我也希望在那里看到入站路线。我不希望在网关上通过TLS,因为后端服务的证书无效

Istio正在使用严格的mTLS设置


在使用HTTPS后端时,我是否忘记了一个步骤?

结果表明,这是由于MTL非常严格。sidecar不希望只有TLS流量到达导致问题。禁用此应用的MTL解决了我的问题

apiVersion: security.istio.io/v1beta1
kind: PeerAuthentication
metadata:
  name: stratos
  namespace: stratos
spec:
  mtls:
    mode: DISABLE

原来这是因为MTL是严格的。sidecar不希望只有TLS流量到达导致问题。禁用此应用的MTL解决了我的问题

apiVersion: security.istio.io/v1beta1
kind: PeerAuthentication
metadata:
  name: stratos
  namespace: stratos
spec:
  mtls:
    mode: DISABLE