为 istio 入口网关 https 端口创建 Openshift 路由

时间:2021-01-07 05:44:36

标签: routes openshift istio gateway mtls

我已在启用了服务网格的 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 没有可用的服务器!

我对路由创建的查询很少:

  1. 既然我想将流量路由到 istio-ingressgateway 服务端口 8443,那么 tls 是否必须在 openshift 路由中使用终止配置?
  2. 我可以看到 tls 终端在 openshift 路由中有边缘、重新加密、直通配置。这些配置有什么意义

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

0 个答案:

没有答案