我已在启用了服务网格的 openshift 容器平台中部署了一个应用程序。这里 istio-ingressgateway 服务是 clusterip 类型,所以为了通过 istio-ingressgateway 从集群外部访问我的应用程序,我创建了一个 openshift 路由,它使用以下配置指向 istio-ingressgateway 服务的目标端口 8080。当我使用 openshift 路由中指定的主机名和 http 协议访问应用程序 url 时,url 加载正常。
Istio ingressgateway 服务配置:
Selector: app=istio-ingressgateway,istio=ingressgateway,release=istio
Type: ClusterIP
IP: 171.30.254.232
Port: status-port 15020/TCP
TargetPort: 15020/TCP
Endpoints: 10.132.2.255:15020
Port: http2 80/TCP
TargetPort: 8080/TCP
Endpoints: 10.132.2.255:8080
Port: https 443/TCP
TargetPort: 8443/TCP
Endpoints: 10.132.2.255:8443
Port: tls 15443/TCP
TargetPort: 15443/TCP
Endpoints: 10.132.2.255:15443
OpenShift HTTP 路由:
kind: Route
apiVersion: route.openshift.io/v1
metadata:
name: sptestroute
namespace: istio-system
spec:
host: sptest.clps.oc.oc.local
to:
kind: Service
name: istio-ingressgateway
weight: 100
#tls:
#termination: edge
#insecureEdgeTerminationPolicy: Allow
port:
targetPort: 8080
wildcardPolicy: None
网格中的 Istio 网关配置:
spec:
selector:
istio: ingressgateway
servers:
- hosts:
- ./sptest.clps.oc.oc.local
port:
name: http
number: 80
protocol: HTTP
我在启用 istio mtls 的情况下重新部署了我的应用程序,并为 istio-ingressgateway 服务的目标端口 8443 和端口 443 的 istio 网关创建了路由。当我使用 openshift 路由中指定的主机名和 https 协议访问应用程序 url 时,url 不是工作和在浏览器中我得到应用程序不可用,当我检查 openshift 路由器日志时,我可以看到以下错误。
2021-01-06T05:57:17.124588+00:00 ocworker7 ocworker7.evoc.local haproxy[52643]: 服务器 be_edge_http:istio-system:sptestroute/pod:istio-ingressgateway-85bdbd88mgresswayistl https:10.132.2.255:8443 DOWN,原因:Layer4 连接问题,信息:“连接被拒绝”,检查持续时间:1ms。 0 个活动服务器和 0 个备用服务器。 0 个会话处于活动状态,0 个重新排队,0 个剩余在队列中。 2021-01-06T05:57:17.124617+00:00 ocworker7 ocworker7.evoc.local haproxy[52643]: 后端 be_edge_http:istio-system:sptestroute1 没有可用的服务器!
我对路由创建的查询很少:
Openshift HTTPS 路由:
kind: Route
apiVersion: route.openshift.io/v1
metadata:
name: sptestroute
namespace: istio-system
spec:
host: sptest.clps.oc.oc.local
to:
kind: Service
name: istio-ingressgateway
weight: 100
tls:
termination: edge
insecureEdgeTerminationPolicy: Allow
port:
targetPort: 8443
wildcardPolicy: None
Istio 网关:
spec:
selector:
istio: ingressgateway
servers:
- hosts:
- ./sptest.apps.evoc.evoc.local
port:
name: https
number: 443
protocol: HTTPS
tls:
credentialName: my-istio-secret
mode: SIMPLE