我尝试使用SSL设置aws负载均衡器(ELB),遵循#6566上的说明。证书附在ELB上。错误或在标头之前断开连接/重置。“重置原因:连接终止”尝试在浏览器上访问我们的网站时。用于安装istio(头盔模板)的自定义values.yaml:

这是我的gateways

helm template ./istio/install/kubernetes/helm/istio --name istio \
--namespace istio-system --values ./mesh/values.yaml | kubectl apply -f -


评论

日志表示什么?

@ 030:我认为引导程序和istio-proxy之间的同步数据存在问题。第一次启动服务时,无法登录。但是,如果我删除所有服务并再次启动它,它就可以工作了!

#1 楼

我已经通过更新网关清单解决了问题。
不知道为什么添加多个“匹配项”时会发生错误。

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: istio-gateway
spec:
  selector:
    istio: ingressgateway #default istio ingressgateway
  servers:
  - port:
      number: 80
      name: http-istio-gateway
      protocol: HTTP
    hosts:
    - "*"
    tls:
      httpsRedirect: true
  - port:
      number: 443
      name: https-istio-gateway
      protocol: HTTP
    hosts:
    - "*"
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: api-gateway
spec:
  gateways:
  - istio-gateway
  hosts:
  - "*"
  http:
  - match:
    - uri:
        prefix: "/socket.io"
    route:
    - destination:
        host: api-gateway-ws.default.svc.cluster.local
        port:
          number: 5001
    websocketUpgrade: true
  - route:
    - destination:
        host: api-gateway.default.svc.cluster.local
        port:
          number: 5000


#2 楼

我遇到了相同的错误,但有不同的问题。服务端口需要添加一个名称。 https://github.com/istio/istio/issues/19966。并且他们需要遵循以下格式(协议后缀)https://istio.io/docs/ops/deployment/requirements/

ports:
    - name: https # Use http or https
       protocol: TCP
       port: 8080
       targetPort: 8080


#3 楼

将大型虚拟服务和目标规则拆分为多个资源:这种配置的缺点是,任何基础微服务的其他配置(例如,路由规则)也需要包含在此单个配置文件中。 >参考:https://istio.io/docs/ops/best-practices/traffic-management/在此处输入链接说明

#4 楼

这很可能与DOCKER中运行的应用程序与DOCKER配置中公开的端口不同的端口不匹配
Docker文件EXPOSE <PORT>应该与应用程序启动的端口相同。网关可以绑定到容器端口,但无法与应用程序通信。

#5 楼

有时在应用Istio mTLS时会发生这种情况,因此请先尝试在相关名称空间中禁用mTLS。 (尤其是如果您在Pod中使用某种gRPC)
kubectl get peerauthentication --all-namespaces