具有 TLS 终止的 Istio Ingress Gateway 返回 503 服务不可用

罗尼·福伯格

我们想使用 Istio Ingress Gateway 将 https 流量路由到 https 端点。

我们在 Ingress 网关终止 TLS 流量,但我们的后端服务也使用 https。

我有以下清单:

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: datalake-dsodis-istio-gateway
spec:
  selector:
    istio: ingressgateway
  servers:
  - hosts:
    - "gw-hdfs-spark.dsodis.domain"
    - "spark-history.dsodis.domain"
    port:
      name: https-wildcard
      number: 443
      protocol: HTTPS
    tls:
      mode: SIMPLE
      serverCertificate: /etc/istio/ingressgateway-certs/tls.crt
      privateKey: /etc/istio/ingressgateway-certs/tls.key
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: gw-spark-history-istio-vs
spec:
  gateways:
  - default/datalake-dsodis-istio-gateway
  hosts:
  - "spark-history.dsodis.domain"
  http:
    - match:
      - uri:
          prefix: /
      route:
        - destination:
            host: gateway-svc-clusterip.our_application_namespace.svc.cluster.local
            port:
              number: 8443
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: originate-tls-for-spark-history
spec:
  host: gateway-svc-clusterip.our_application_namespace.svc.cluster.local
  trafficPolicy:
    loadBalancer:
      simple: ROUND_ROBIN
    portLevelSettings:
    - port:
        number: 8443 
      tls:
        mode: SIMPLE

问题很可能是,我们将 TLS 终止的流量(可以说是 HTTP 流量)发送到 HTTPS 后端。因此,当我们通过 Istio 访问服务时,我们可能会得到 503 Service Unavailable。

访问它的命令是:

curl -vvvv -H"Host: spark-history.dsodis.domain" --resolve "spark-history.dsodis.domain:31390:IP" https://spark-history.dsodis.domain:31390/gateway/default/sparkhistory  -k

我的问题是,如何告诉 Istio 使用 https 将流量路由到后端服务?

提前致谢。

最好的问候, rforberger

彼得·马雷克

正如 RonnyForberger 在他的评论中提到的,这可以通过创建DestinationRule告诉目标服务的流量进行TLS连接来实现

所以在这个场景中:

  1. HTTPS请求TLSGateWayto 处终止HTTP
  2. 然后将HTTP请求转换为 TLS 并使用DestinationRuleto HTTPS
  3. HTTPS请求到达HTTPS后端。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Kubernetes Ingress Controller返回503服务不可用

从 istio 获取 503 服务不可用

Python:Goslate翻译请求返回“ 503:服务不可用”

(a)Smack在login()上返回“服务不可用(503)”错误

具有503服务的Asp Net Core 3示例不可用

K8s Ingress服务返回503,在Pod日志中什么也没有

在OpenShift上运行peerjs-server返回503服务不可用

Spotify API队列方法返回503服务不可用错误

位于“ ...”的V2供稿返回了意外的状态码“ 503服务不可用”

Istio Ingress TLS使用ACM:上游连接错误或在标头之前断开连接/重置。重置原因:连接终止

启用mTLS后,使用istio ingress访问服务会显示503错误

我的微服务是否也需要TLS或Ingress TLS终止是否足够?

DocuSign Connect-错误-远程服务器返回错误:(503)服务器不可用

Heroku 503服务不可用

如何修复 503(服务不可用)?

Python urllib2.HTTPError:HTTP错误503:服务在有效网站上不可用

如何使用 kind Service 在 Istio Ingress Gateway 上启用 HTTPS

由于凭据名称,使用SDS的Istio Ingress Gateway失败

服务返回的对象的属性不可用

Google App Engine错误503-服务不可用

Rails / Uberspacify:503服务暂时不可用

AWS 503 服务暂时不可用

HTTP错误:503服务不可用IntelliJ IDEA GWT

503服务不可用,PHP 5.3 Web App

码头:HTTP错误:503 /服务不可用

TFS 503服务在检索文件时不可用

TFS 2013:HTTP代码503:服务不可用

正确的方式使用503(服务不可用)状态代码

Azure网站上出现503错误(服务不可用)