不确定之前是否有人遇到过这个问题,在我将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
答案 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的相关文档。