如何在 Istio 中设置 AWS ALB 而不是 ELB?

sac*_*hin 7 kubernetes devops istio kubernetes-ingress aws-application-load-balancer

我正在尝试在 Kubernetes AWS 中设置 ALB 负载均衡器而不是默认的 ELB 负载均衡器。负载均衡器必须连接到 istio ingressgateway。我寻找了解决方案,但只找到了一个。但是提到的istio版本是V1,现在istio的变化太多了。我尝试将图表中的服务类型更改为nodeport(根据博客)但该服务仍然作为负载均衡器出现。

有人可以提到如何为 istio ingressgateway 配置 ALB 的步骤吗?

谢谢阅读

小智 9

第 1 步:将 istioingresssgateway 服务类型更改为 nodeport

第 2 步:安装 ALB 入口控制器

第 3 步:为 istioingressgateway 编写 ingress.yaml 如下:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  namespace: istio-system
  name: ingress
  labels:
    app: ingress
  annotations:
    kubernetes.io/ingress.class: alb
    alb.ingress.kubernetes.io/scheme: internet-facing
    alb.ingress.kubernetes.io/subnets: <subnet1>,<subnet2>
spec:
  rules:
    - http:
        paths:
          - path: /*
            backend:
              serviceName: istio-ingressgateway
              servicePort: 80
Run Code Online (Sandbox Code Playgroud)

如果您将 vpc 的子网标记为:

kubernetes.io/cluster/:拥有

kubernetes.io/role/internal-elb: 1(用于内部 ELB)

kubernetes.io/role/elb: 1(用于外部 ELB)

或者你可以提供两个子网值,每个子网应该在上面的 yaml 中不同的可用区

它适用于 Istio 1.6

  • @MichaelMartin,以及那些希望解决同样问题的人。您需要更改 ALB 目标组健康检查配置以使用 Istio 状态端口作为健康检查端口。使用映射 Istio 15021 targetPort 和 /healthz/ready URL 的 nodePort (2认同)