后端使用503来部署带有istio网关资源的amassador

时间:2020-07-21 09:09:03

标签: istio

不确定之前是否有人遇到过这个问题,在我将istio gateway resoruce部署为massador作为后端后,我得到了503

upstream connect error or disconnect/reset before headers. reset reason: connection failure

如果我将大使后端更改为nginx入口资源,则一切正常。


更新,请耐心等待,在我的情况下,我正在访问大使并配置了映射规则到istio网关,https://test-internal.url是我的情况下的istio入口网关资源。

这是示例配置。

kind: Service
metadata:
  annotations:
    cloud.google.com/neg: '{"ingress": true}'
    getambassador.io/config: |
      ---
      apiVersion: ambassador/v1
      kind: Mapping
      name: test-mapping
      ambassador_id: ambassador-1
      prefix: /
      host: test.url
      service: https://test.url
      host_rewrite: test-internal.url

1 个答案:

答案 0 :(得分:1)

如果我对问题的理解正确,那么您会询问有关Routing to Services的大使文件中提到的内容。

我认为问题出在这里,大使文件说

Istio默认为PERMISSIVE mTLS,它不需要集群中容器之间的身份验证。

这不是AFAIK,因为istio 1.5的默认mtls为STRICT。

STRICT-> 连接是一个mTLS隧道(必须提供带有客户端证书的TLS)。


因此,如果您进入documentation,则会出现相同的错误

$ kubectl apply -f - <<EOF
apiVersion: getambassador.io/v2
kind: Mapping
metadata:
  name: quote-backend
spec:
  prefix: /backend/
  service: quote
EOF


$ curl -k https://{{AMBASSADOR_HOST}}/backend/
upstream connect error or disconnect/reset before headers. reset reason: connection termination

有一个答案

配置大使以使用mTLS证书

如上所述,我们可以告诉大使使用Istio的mTLS证书对报价窗格中的istio-proxy进行身份验证。

$ kubectl apply -f - <<EOF
---
apiVersion: getambassador.io/v2
kind: Mapping
metadata:
  name: quote-backend
spec:
  prefix: /backend/
  service: quote
  tls: istio-upstream
EOF

现在,大使将在路由到报价服务时使用Istio mTLS证书。

$ curl -k https://{{AMBASSADOR_HOST}}/backend/
{
    "server": "bewitched-acai-5jq7q81r",
    "quote": "Non-locality is the driver of truth. By summoning, we vibrate.",
    "time": "2020-06-02T11:06:53.854468941Z"
}

有有关在Kubernetes上一起部署istio and ambassador的相关文档。