使用 AWS NLB 配置 Istio Ingress

介绍如何在 AWS 上使用网络负载均衡器配置 Istio Ingress。

2018 年 4 月 20 日 | 作者:Julien SENON

本文提供使用和配置带有 AWS 网络负载均衡器 的 Istio Ingress 的说明。

网络负载均衡器 (NLB) 可用于替代经典负载均衡器。您可以查看不同 AWS loadbalancer 之间的 比较 以了解更多说明。

先决条件

以下说明需要 1.9.0 或更高版本 的 Kubernetes 集群。

IAM 策略

您需要在主角色上应用策略才能能够配置网络负载均衡器。

  1. 在 AWS iam 控制台中,点击策略,然后点击创建新的策略

    Create a new policy
    创建一个新的策略
  2. 选择 json

    Select json
    选择 json
  3. 复制/粘贴下面的文本

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "kopsK8sNLBMasterPermsRestrictive",
                "Effect": "Allow",
                "Action": [
                    "ec2:DescribeVpcs",
                    "elasticloadbalancing:AddTags",
                    "elasticloadbalancing:CreateListener",
                    "elasticloadbalancing:CreateTargetGroup",
                    "elasticloadbalancing:DeleteListener",
                    "elasticloadbalancing:DeleteTargetGroup",
                    "elasticloadbalancing:DescribeListeners",
                    "elasticloadbalancing:DescribeLoadBalancerPolicies",
                    "elasticloadbalancing:DescribeTargetGroups",
                    "elasticloadbalancing:DescribeTargetHealth",
                    "elasticloadbalancing:ModifyListener",
                    "elasticloadbalancing:ModifyTargetGroup",
                    "elasticloadbalancing:RegisterTargets",
                    "elasticloadbalancing:SetLoadBalancerPoliciesOfListener"
                ],
                "Resource": [
                    "*"
                ]
            },
            {
                "Effect": "Allow",
                "Action": [
                    "ec2:DescribeVpcs",
                    "ec2:DescribeRegions"
                ],
                "Resource": "*"
            }
        ]
    }
    
  4. 点击审查策略,填写所有字段,然后点击创建策略

    Validate policy
    验证策略
  5. 点击角色,选择您的主节点角色,然后点击附加策略

    Attach policy
    附加策略
  6. 您的策略现在已附加到您的主节点。

生成 Istio 清单

要使用 AWS nlb 负载均衡器,需要向 Istio 安装添加特定于 AWS 的注释。这些说明解释了如何添加注释。

将其保存为文件 override.yaml

gateways:
  istio-ingressgateway:
    serviceAnnotations:
      service.beta.kubernetes.io/aws-load-balancer-type: "nlb"

使用 Helm 生成清单

$ helm template install/kubernetes/helm/istio --namespace istio -f override.yaml > $HOME/istio.yaml
分享此文章