協助改善此頁面
想要為此使用者指南做出貢獻嗎? 捲動至此頁面底部,然後選取 [編輯此頁面於] GitHub。您的貢獻將有助於使我們的用戶指南更適合所有人。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
AWS Load Balancer Controller使用清單進行安裝
本主題說明如何透過下載和套用資Kubernetes訊清單來安裝控制器。您可以檢視 GitHub 上的完整文件
在下列步驟中,使用自己的值取代
。example values
必要條件
在開始本教學課程之前,您必須安裝並設定下列建立和管理 Amazon EKS 叢集所需的工具和資源。
-
現有的 Amazon EKS 群集。若要部署叢集,請參閱 開始使用 Amazon EKS。
-
叢集的現有 AWS Identity and Access Management OpenID Connect (IAMOIDC) () 提供者。若要判定您是否已經擁有一個,或是要建立一個,請參閱 為您的叢集建立IAMOIDC提供者。
-
確認您的 Amazon VPC CNI plugin for Kubernetes、
kube-proxy
及 CoreDNS 附加元件為服務帳戶字符中列出的最低版本。 -
熟悉 E AWS lastic Load Balancing。如需詳細資訊,請參閱《Elastic Load Balancing 使用者指南》。
步驟 1:設定 IAM
注意
您只需要為每個 AWS 帳戶創建AWS Load Balancer Controller一個角色。檢查IAM控制台AmazonEKSLoadBalancerControllerRole
存在。如果此角色存在,請跳至步驟 2:安裝 cert-manager。
建立IAM策略。
-
下載的IAM政策AWS Load Balancer Controller,允許其代表您撥 AWS APIs打電話。
-
使用上一個IAM步驟中下載的策略建立策略。
$
aws iam create-policy \ --policy-name
AWSLoadBalancerControllerIAMPolicy
\ --policy-document file://iam_policy.json注意
如果您在中檢視原則 AWS Management Console,主控台會顯示ELB服務的警告,但不會顯示 ELBv2 服務的警告。發生這種情況是因為原則中的某些動作適用於 ELBv2,但不適用於 ELB. 您可以忽略的警告ELB。
步驟 2:安裝 cert-manager
使用以下其中一個方法安裝 cert-manager
,將憑證組態注入 Webhook。如需詳細資訊,請參閱 cert-manager
cert-manager 文件上的入門
我們建議您使用quay.io
容器登錄進行安裝cert-manager
。如果您的節點無法存取quay.io
容器登錄,請cert-manager
使用 Amazon 進行安裝 ECR (請參閱下文)。
步驟 3:安裝 AWS Load Balancer Controller
AWS Load Balancer Controller使用Kubernetes資訊清單安裝
-
下載控制器規格。如需控制器的詳細資訊,請參閱 GitHub 上的文件
。 curl -Lo v2_7_2_full.yaml https://github.com/kubernetes-sigs/aws-load-balancer-controller/releases/download/v2.7.2/v2_7_2_full.yaml
-
對檔案進行以下編輯。
-
如果您已下載
v2_7_2_full.yaml
檔案,請執行下列命令以移除清單檔案中的ServiceAccount
區段。如果您未移除此區段,則會覆寫您在前一個步驟中對服務帳戶所做的必要註解。如果您刪除控制器,移除此區段還可保留您在上一個步驟中建立的服務帳戶。$
sed -i.bak -e '612,620d' ./v2_7_2_full.yaml
如果您下載不同的檔案版本,請在編輯器中開啟檔案並移除下列各行。
apiVersion: v1 kind: ServiceAccount metadata: labels: app.kubernetes.io/component: controller app.kubernetes.io/name: aws-load-balancer-controller name: aws-load-balancer-controller namespace: kube-system ---
-
使用叢集名稱取代
,從而使用叢集名稱取代檔案的my-cluster
Deployment
spec
區段中的your-cluster-name
。$
sed -i.bak -e 's|your-cluster-name|
my-cluster
|' ./v2_7_2_full.yaml -
如果您的節點無法存取 Amazon EKS Amazon ECR 映像儲存庫,則需要提取以下映像並將其推送到節點可存取的儲存庫。有關如何提取、標記映像並將其推送到您儲存庫的詳細資訊,請參閱 將容器映像從一個儲存庫複製到另一個儲存庫。
public.ecr.aws/eks/aws-load-balancer-controller:v2.7.2
將您的登錄檔名稱新增至清單檔案。以下命令假定私有儲存庫的名稱與來源儲存庫的名稱相同,並將您的私有登錄檔名稱新增至檔案中。將
取代為您的登錄檔。此行假定您將私有儲存庫命名為與來源儲存庫相同的名稱。如果沒有,請將私有登錄檔名稱後的111122223333.dkr.ecr.
region-code
.amazonaws.comeks/aws-load-balancer-controller
文字變更為儲存庫名稱。$
sed -i.bak -e 's|public.ecr.aws/eks/aws-load-balancer-controller|
.amazonaws.com/eks/aws-load-balancer-controller|' ./v2_7_2_full.yaml111122223333
.dkr.ecr.region-code
-
(僅適用於 Fargate 或受限制IMDS)
如果您要將控制器部署到限制存取 Amazon EC2 執行個體中繼資料服務 (IMDS) 的 Amazon EC2
節點,或者如果您要部署到 Fargate,請新增 following parameters
下- args:
方。[...] spec: containers: - args: - --cluster-name=
your-cluster-name
- --ingress-class=alb- --aws-vpc-id=
[...]vpc-xxxxxxxx
- --aws-region=region-code
-
-
套用檔案。
$
kubectl apply -f v2_7_2_full.yaml
-
將
IngressClass
和IngressClassParams
清單檔案下載至叢集。$
curl -Lo v2_7_2_ingclass.yaml https://github.com/kubernetes-sigs/aws-load-balancer-controller/releases/download/v2.7.2/v2_7_2_ingclass.yaml
-
將清單檔案套用至叢集。
$
kubectl apply -f v2_7_2_ingclass.yaml
步驟 4:確認控制器已安裝
-
確認控制器已安裝。
$
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 清單檔案進行部署,則您只有一個複本。
-
使用控制器佈建 AWS 資源之前,您的叢集必須符合特定需求。如需詳細資訊,請參閱 路線應用和HTTP交通 Application Load Balancers 和 路線TCP和UDP交通 Network Load Balancers。