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

时间:2020-06-16 11:27:32

标签: kubernetes devops kubernetes-ingress istio aws-application-load-balancer

我正在尝试在Kubernetes AWS中设置ALB负载均衡器而不是默认的ELB负载均衡器。该负载均衡器必须连接到istio Ingressgateway。我在寻找解决方案,但仅找到one。 但是提到的istio版本是V1,现在istio发生了很多更改。我试图将服务类型更改为图表中的nodeport(根据博客),但是该服务还是作为Loadbalancer提供的。

有人可以提及为istio Ingressgateway配置ALB的步骤吗?

感谢阅读

3 个答案:

答案 0 :(得分:5)

第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
如果用:p标记vpc的子网,则可以避免

alb.ingress.kubernetes.io/subnets批注。

kubernetes.io/cluster/:拥有

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

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

否则,您可以提供两个子网值,并且每个子网应位于上述yaml中的不同可用区域中

它在Istio 1.6中起作用

答案 1 :(得分:3)

当前接受的答案是正确的。但是,我想对其进行一些更新。 安装并配置好 AWS alb 控制器后,需要执行几个步骤才能使其工作并可用:

  1. 使用 ProductID Name SerialNo ------------------------------------- P1001 NOKIA 1001 命令生成清单列表
  2. 查找 istioctl manifest generate 服务配置
  3. 将其更新为 NodePort 类型
  4. 更新端口配置以获得节点和目标端口的预定义映射。请注意 istio-ingressgateway NodePort
  5. 应用这些清单而不是使用 status-port 命令安装/更新 istio。在某些情况下,尽管依赖 istio helm 安装可能会更好
  6. 更新入口配置以具有以下注释
istioctl install

答案 2 :(得分:0)

我可以通过tibin_tomy在Istio 1.7.4上为我工作的解决方案来确认解决方案。另外,我在第1步中使用了ClusterIP而不是NodePort。

第一步-将istioingresssgateway服务类型更改为ClusterIP(使用IstioOperator安装Istio):

apiVersion: install.istio.io/v1alpha1
kind: IstioOperator

metadata:
  namespace: istio-system
  name:      istio
spec:
  profile: default
  components:
    ingressGateways:
      - name: istio-ingressgateway
        k8s:
          service:
            type: ClusterIP # Disable classic load balancer creation (default), routing to here will be done via Kubernetes Ingress resource

注意:在与istio-ingressgateway相同的名称空间中部署“ Ingress”(默认为istio-system)。 例如,如果istio-ingressgateway在命名空间istio-system中,而Ingress在命名空间系统中,则aws-alb-ingress-controller错误出现:

“ kubebuilder / controller” msg“ =”协调器错误“” error“ =”失败 由于无法加载serviceAnAnnotation而协调targetGroups 本地存储中没有与键“ system / istio-ingressgateway”匹配的对象” “控制器” =“ alb-ingress-controller” “ request” = {“命名空间”:“系统”,“名称”:“奏鸣曲”}“