'Duplicate entries for key' 在 EKS 上创建 Istio IngrressGateway 时出错

'Duplicate entries for key' error when creating an Istio IngrressGateway on EKS

我正在尝试创建一个 Istio 入口网关(istio:1.9.1,EKS:1.18),其中包含一个副本 targetPort,如下所示:

apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
metadata:
  name: istio
spec:
  components:
    ingressGateways:
      - name: ingressgateway
        k8s:
          service:
            ports:
              - port: 80
                targetPort: 8080
                name: http2
              - port: 443
                name: https
                targetPort: 8080

但我收到错误:

- Processing resources for Ingress gateways.
✘ Ingress gateways encountered an error: failed to update resource with server-side apply for obj Deployment/istio-system/istio: failed to create typed patch object: errors:
.spec.template.spec.containers[name="istio-proxy"].ports: duplicate entries for key [containerPort=8080,protocol="TCP"]

我是 EKS 中的 运行 Istio,所以我们在 NLB 终止 TLS,因此所有流量(httphttps)都应该转到同一端口(8080)上的 pod )

有什么办法可以解决这个问题吗?

最后不得不使用不同的 targetPorts 才能使它正常工作

在 istio 1.8 版本之前,这种类型的配置有效(尽管最初存在问题)- github #53526.

从 1.9 版开始,会生成一个错误,您不能再在一个定义中使用两个相同的端口。在 github:

上也创建了(或重新打开)报告

但是,问题出在撰写回复时 Kubernetes 和 Istio 的版本已过时。

可能的解决方法:

  • 使用不同的targetPort
  • 将 Kubernetes 和 Istio 升级到最新版本。