Kubernetes 具有HTTPS后端的VirtualService
我有一个带有自签名SSL证书的服务,我想将其公开给internet。我希望Istio网关终止SSL连接(使用来自cert manager的证书)和Istio侧车,以便在后端服务内部处理HTTPS通信 然而,当我尝试这一点时,我从特使那里得到了错误: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
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