使用 Helm 安装 Amazon 负载均衡器控制器 - Amazon EKS
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

帮助改进此页面

要帮助改进本用户指南,请选择位于每个页面右侧窗格中的在 GitHub 上编辑此页面链接。

使用 Helm 安装 Amazon 负载均衡器控制器

提示

使用 Amazon EKS 自动模式时,您无需安装或升级联网附加组件。自动模式包含容器组联网和负载均衡功能。

有关更多信息,请参阅 使用 EKS 自动模式实现集群基础设施自动化

本主题介绍如何使用 Helm(Kubernetes 的程序包管理器)和 eksctl 安装 Amazon 负载均衡器控制器。控制器安装了默认的选项。有关控制器的更多信息,包括使用注释对其进行配置的详细信息,请参阅 GitHub 上的 Amazon Load Balancer Controller 文档。

在以下步骤中,将 example values 替换为您自己的值。

先决条件

在开始本教程之前,请完成以下步骤:

注意事项

在继续执行本页面的配置步骤之前,请注意以下事项:

  • IAM 策略和角色 (AmazonEKSLoadBalancerControllerRole) 可以在同一 Amazon 账户中的多个 EKS 集群中重复使用。

  • 如果要在最初创建角色 (AmazonEKSLoadBalancerControllerRole) 的同一集群上安装控制器,请先确认角色存在,然后转到步骤 2:安装负载均衡器控制器

  • 如果使用的是服务账户的 IAM 角色(IRSA),则必须为每个集群设置 IRSA,并且角色信任策略中的 OpenID Connect(OIDC)提供者 ARN 应特定于每个 EKS 集群。此外,如果要在具有现有 AmazonEKSLoadBalancerControllerRole 的新集群上安装控制器,请更新该角色的信任策略以包含新集群的 OIDC 提供者,并通过适当的角色注释创建一个新的服务账户。要确定是否已经拥有 OIDC 提供者或者要创建一个 OIDC 提供者,请参阅为集群创建 IAM OIDC 提供商

步骤 1:使用 eksctl 创建 IAM 角色

以下步骤参考 Amazon 负载均衡器控制器发行版 v2.13.0。有关所有发行版的更多信息,请参阅 GitHub 上的 Amazon Load Balancer Controller Release 页面。

  1. 下载Amazon负载均衡器控制器的 IAM 策略,该策略允许负载均衡器代表您调用 Amazon API。

    curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.13.0/docs/install/iam_policy.json
  2. 使用上一步中下载的策略创建一个 IAM 策略。

    aws iam create-policy \ --policy-name AWSLoadBalancerControllerIAMPolicy \ --policy-document file://iam_policy.json
    注意

    如果您在Amazon Web Services Management Console中查看策略,则控制台会显示有关 ELB 服务的警告,但不会显示有关 ELB v2 服务的警告。之所以发生这种情况,是因为策略中的某些操作适用于 ELB v2,但不适用于 ELB。您可以忽略有关 ELB 的警告。

  3. 替换集群名称、区域代码和账户 ID 的值。

    eksctl create iamserviceaccount \ --cluster=<cluster-name> \ --namespace=kube-system \ --name=aws-load-balancer-controller \ --attach-policy-arn=arn:aws:iam::<AWS_ACCOUNT_ID>:policy/AWSLoadBalancerControllerIAMPolicy \ --override-existing-serviceaccounts \ --region <aws-region-code> \ --approve

步骤 2:安装 Amazon 负载均衡器控制器

  1. 添加 eks-charts Helm 图表存储库。Amazon 在 GitHub 上维护此存储库

    helm repo add eks https://aws.github.io/eks-charts
  2. 更新您的本地存储库,以确保您拥有最新的图表。

    helm repo update eks
  3. 安装Amazon负载均衡器控制器。

    如果要将控制器部署到限制访问 Amazon EC2 实例元数据服务(IMDS) 的 Amazon EC2 节点,或者部署到 Fargate 节点或 Amazon EKS 混合节点功能,则需要在以下 helm 命令中添加以下标志:

    • --set region=region-code

    • --set vpcId=vpc-xxxxxxxx

      my-cluster 替换为您的集群的名称。在以下命令中,aws-load-balancer-controller 是您在上一步中创建的 Kubernetes 服务账户。

      有关配置 Helm 图表的更多信息,请参阅 GitHub 上的 values.yaml

      helm install aws-load-balancer-controller eks/aws-load-balancer-controller \ -n kube-system \ --set clusterName=my-cluster \ --set serviceAccount.create=false \ --set serviceAccount.name=aws-load-balancer-controller \ --version 1.13.0
重要

已部署的图表不会自动接收安全更新。当新图表可用时,您需要手动升级到新图表。升级时,在上一个命令中将 install 更改为 upgrade

helm install 命令会自动安装控制器的自定义资源定义(CRD)。helm upgrade 命令不会。如果您使用 helm upgrade,,则必须手动安装 CRD。运行以下命令来安装 CRD:

wget https://raw.githubusercontent.com/aws/eks-charts/master/stable/aws-load-balancer-controller/crds/crds.yaml kubectl apply -f crds.yaml

步骤 3:验证控制器是否已安装

  1. 验证控制器是否已安装。

    kubectl get deployment -n kube-system aws-load-balancer-controller

    示例输出如下。

    NAME READY UP-TO-DATE AVAILABLE AGE aws-load-balancer-controller 2/2 2 2 84s

    如果使用 Helm 进行部署,则会收到之前的输出结果。如果您使用 Kubernetes 清单进行部署,则只有一个副本。

  2. 在使用控制器预置Amazon资源前,您的集群必须满足特定要求。有关更多信息,请参阅使用应用程序负载均衡器路由应用程序和 HTTP 流量使用网络负载均衡器路由 TCP 和 UDP 流量