使用 Helm 安裝 AWS Load Balancer 控制器 - Amazon EKS

協助改進此頁面

若要為本使用者指南貢獻內容,請點選每個頁面右側面板中的在 GitHub 上編輯此頁面連結。

使用 Helm 安裝 AWS Load Balancer 控制器

提示

使用 Amazon EKS 自動模式,您無需安裝或升級聯網附加元件。自動模式包括 Pod 聯網和負載平衡功能。

如需詳細資訊,請參閱 利用 EKS 自動模式自動運作叢集基礎設施

本主題會說明如何使用 Helm、Kubernetes 的套件管理工具和 eksctl 來安裝 AWS Load Balancer 控制器。已使用預設選項安裝控制器。如需有關控制器的詳細資訊,包括使用註釋設定控制器的詳細資訊,請參閱 GitHub 上的AWS Load Balancer 控制器文件

在下列步驟中,使用您自己的值取代範例值

先決條件

開始本教學之前,您必須完成下列步驟:

考量事項

在繼續此頁面上的組態步驟之前,請考量下列情況:

  • IAM 政策和角色 (AmazonEKSLoadBalancerControllerRole) 可以在相同 AWS 帳戶中的多個 EKS 叢集之間重複使用。

  • 如果您要在最初建立角色 (AmazonEKSLoadBalancerControllerRole) 的相同叢集上安裝控制器,請在驗證角色存在後,前往步驟 2:安裝 Load Balancer 控制器

  • 如果您使用服務帳戶的 IAM 角色 (IRSA),則必須為每個叢集設定 IRSA,而且角色信任政策中的 OpenID Connect (OIDC) 提供商 ARN 專屬於每個 EKS 叢集。此外,如果您要在具有現有 AmazonEKSLoadBalancerControllerRole 的新叢集上安裝控制器,請更新角色的信任政策,以包含新叢集的 OIDC 提供商,並使用適當的角色註釋來建立新的服務帳戶。若要判定您是否已經擁有 OIDC 提供商,或是要建立一個,則請參閱 為您的叢集建立 IAM OIDC 身分提供者

步驟 1:使用 eksctl 建立 IAM 角色

下列步驟會參考 AWS Load Balancer 控制器 v2.13.3 發行版本。如需有關所有發行版本的詳細資訊,請參閱 GitHub 上的 AWS Load Balancer 控制器發行頁面

  1. 下載適用於 AWS Load Balancer 控制器的 IAM 政策,允許它代表您呼叫 AWS API。

    curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.13.3/docs/install/iam_policy.json
  2. 使用上一個步驟中下載的政策,建立 IAM 政策。

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

    如果您在 AWS 管理主控台 中檢視政策,則主控台會顯示 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:安裝 AWS Load Balancer 控制器

  1. 新增 eks-charts Helm Chart 儲存庫。AWS 會在 GitHub 上維護此儲存庫

    helm repo add eks https://aws.github.io/eks-charts
  2. 更新您的本機儲存庫,以確定您擁有最新的圖表。

    helm repo update eks
  3. 安裝 AWS Load Balancer 控制器。

    如果您要將控制器部署到限制存取 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 Chart 的詳細資訊,請參閱 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
重要

部署的圖表不會自動接收安全更新。當圖表可用時,您需要手動升級到較新的圖表。升級時,請將先前命令中的安裝變更為 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. 在使用控制器佈建 AWS 資源之前,您的叢集必須符合特定需求。如需詳細資訊,請參閱透過 Application Load Balancer 路由應用程式與 HTTP 流量透過 Network Load Balancer 路由 TCP 與 UDP 流量