OpenShift和Istio Gateway流量配置,以便使用外部域进行访问

时间:2019-04-12 15:34:57

标签: kubernetes openshift openshift-origin istio

在OpenShift上部署Istio 1.1.2之后,便有一条istio-ingressgateway路由及其相关的服务和pod。

我已经成功地使用该入口网关来访问应用程序,并使用*作为主机来配置网关和VirtualService。

但是我想配置一个域(例如insuranceinc.es)来访问该应用程序。根据文档,我具有以下Istio配置:

网关:

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: insuranceinc-gateway
  namespace: istio-insuranceinc
spec:
  selector:
    istio: ingressgateway # use istio default controller
  servers:
  - port:
      number: 80
      name: http
      protocol: HTTP
    hosts:
    - "insuranceinc.es"

VirtualService

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: insuranceinc
  namespace: istio-insuranceinc
spec:
  hosts:
    - insuranceinc.es
  gateways:
    - insuranceinc-gateway
  http:
    - route:
        - destination:
            host: insuranceinc-web
            port:
              number: 8080

如果我进行curl调用...

curl http://istio-ingressgateway-istio-system.apps.mycluster.com/login

...我可以在入口网关窗格中看到404错误:

[2019-04-12T15:27:51.765Z] "GET /login HTTP/1.1" 404 NR "-" 0 0 1 - "xxx" "curl/7.54.0" "xxx" "istio-ingressgateway-istio-system.apps.mycluster.com" "-" - - xxx -

这很有意义,因为它不是来自insuranceinc.es主机的。因此,我更改了卷曲以发送Host: insuranceinc.es标头:

curl -H "Host: insuranceinc.es" http://istio-ingressgateway-istio-system.apps.mycluster.com/login

现在我遇到503错误,并且istio-ingressgateway窗格中没有日志。

  

应用程序不可用

     

应用程序当前不在此端点上处理请求。它可能尚未启动或仍在启动。

这意味着该istio-ingressgateway路由-> service-> poc尚未处理该请求。

由于它是Openshift Route,因此必须使用包含路由主机istio-ingressgateway-istio-system.apps.mycluster.com的Host标头。实际上,如果我发送curl -H "Host: istio-ingressgateway-istio-system.apps.mycluster.com" http://istio-ingressgateway-istio-system.apps.mycluster.com/login,它会由istio入口网关返回404处理。

那么,如何发送我的Host insuranceinc.es标头并到达istio入口网关(实际上是OpenShift路由)?

1 个答案:

答案 0 :(得分:0)

您需要在istio-system名称空间中创建一个openshift路由,以与您创建的主机名相关。

例如:

oc -n istio-system get routes
NAME              HOST/PORT                                            PATH      SERVICES               PORT      TERMINATION   WILDCARD
gateway1-lvlfn    insuranceinc.es                                                istio-ingressgateway   <all>                   None