從已棄用的 ALB 傳入控制器移轉應用程式 - Amazon EKS

協助改進此頁面

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

從已棄用的 ALB 傳入控制器移轉應用程式

本主題會說明如何從已棄用的控制器版本移轉。更具體地說,其會說明如何移除已棄用的 AWS Load Balancer 控制器版本。

  • 已棄用的版本無法升級。您必須先將其移除,然後再安裝目前版本。

  • 已棄用的版本包含:

    • 適用於 Kubernetes 的 AWS ALB Ingress Controller (「Ingress 控制器」):AWS Load Balancer 控制器的前身。

    • AWS Load Balancer 控制器的任何 0.1.x 版本

移除已棄用的控制器版本

注意

您可能已經使用 Helm 或手動使用 Kubernetes 資訊清單安裝已棄用的版本。請使用最初使用安裝的工具來完成此程序。

  1. 如果您安裝了 incubator/aws-alb-ingress-controller Helm Chart,請將其解除安裝。

    helm delete aws-alb-ingress-controller -n kube-system
  2. 如果您安裝了第 0.1.x 版的 eks-charts/aws-load-balancer-controller 圖表,請將其解除安裝。由於與 Webhook API 版本不相容,無法從 0.1.x 升級至版本 1.0.0

    helm delete aws-load-balancer-controller -n kube-system
  3. 檢查目前是否已安裝控制器。

    kubectl get deployment -n kube-system alb-ingress-controller

    如果未安裝控制器,則此為輸出。

    Error from server (NotFound): deployments.apps "alb-ingress-controller" not found

    如果已安裝控制器,則此為輸出。

    NAME READY UP-TO-DATE AVAILABLE AGE alb-ingress-controller 1/1 1 1 122d
  4. 輸入下列命令以移除控制器。

    kubectl delete -f https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress-controller/v1.1.8/docs/examples/alb-ingress-controller.yaml kubectl delete -f https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress-controller/v1.1.8/docs/examples/rbac-role.yaml

移轉至 AWS Load Balancer 控制器

若要從適用於 Kubernetes 的 ALB 傳入控制器移轉至 AWS Load Balancer 控制器,您需要:

  1. 移除 ALB 傳入控制器 (請參閱上文)。

  2. 安裝 AWS Load Balancer 控制器。

  3. 將其他政策新增至 AWS Load Balancer 控制器使用的 IAM 角色。此政策允許 LBC 管理適用於 Kubernetes 的 ALB 傳入控制器建立的資源。

  4. 下載 IAM 政策。此政策允許 AWS Load Balancer 控制器管理適用於 Kubernetes 的 ALB 傳入控制器建立的資源。您也可以檢視政策

    curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.13.3/docs/install/iam_policy_v1_to_v2_additional.json
  5. 如果您的叢集位於 AWS GovCloud (美國東部) 或 AWS GovCloud (美國西部) AWS 區域,則請將 arn:aws: 取代為 arn:aws-us-gov:

    sed -i.bak -e 's|arn:aws:|arn:aws-us-gov:|' iam_policy_v1_to_v2_additional.json
  6. 建立 IAM 政策並記下傳回的 ARN。

    aws iam create-policy \ --policy-name AWSLoadBalancerControllerAdditionalIAMPolicy \ --policy-document file://iam_policy_v1_to_v2_additional.json
  7. 將 IAM 政策連接至 AWS Load Balancer 控制器使用的 IAM 角色。將 your-role-name 取代為角色的名稱,例如 AmazonEKSLoadBalancerControllerRole

    如果使用 eksctl 建立角色,然後要尋找已建立的角色名稱,請開啟 AWS CloudFormation 主控台,然後選取 eksctl-my-cluster-addon-iamserviceaccount-kube-system-aws-load-balancer-controller 堆疊。選取 Resources (資源) 標籤。角色名稱位於 Physical ID (實體 ID) 欄。

    aws iam attach-role-policy \ --role-name your-role-name \ --policy-arn arn:aws:iam::111122223333:policy/AWSLoadBalancerControllerAdditionalIAMPolicy