

 **協助改進此頁面** 

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

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

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 從已棄用的 ALB 傳入控制器移轉應用程式
<a name="lbc-remove"></a>

本主題會說明如何從已棄用的控制器版本移轉。更具體地說，它描述了如何移除已棄用版本的 AWS Load Balancer控制器。
+ 已棄用的版本無法升級。您必須先將其移除，然後再安裝目前版本。
+ 已棄用的版本包含：
  +  AWS 適用於 Kubernetes 的 ALB 傳入控制器 (「傳入控制器」)，是 AWS Load Balancer控制器的前身。
  + 任何`0.1.x `版本的 AWS Load Balancer控制器

## 移除已棄用的控制器版本
<a name="lbc-remove-desc"></a>

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

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

   ```
   helm delete aws-alb-ingress-controller -n kube-system
   ```

1. 如果您安裝了第 `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
   ```

1. 檢查目前是否已安裝控制器。

   ```
   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
   ```

1. 輸入下列命令以移除控制器。

   ```
   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控制器
<a name="lbc-migrate"></a>

若要從 Kubernetes 的 ALB 傳入控制器遷移至 AWS Load Balancer控制器，您需要：

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

1.  [安裝 AWS Load Balancer控制器。](aws-load-balancer-controller.md#lbc-overview)

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

1. 下載 IAM 政策。此政策允許 AWS Load Balancer控制器管理由適用於 Kubernetes 的 ALB 傳入控制器建立的資源。您也可以[檢視政策](https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/main/docs/install/iam_policy_v1_to_v2_additional.json)。

   ```
   curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.14.1/docs/install/iam_policy_v1_to_v2_additional.json
   ```

1. 如果您的叢集位於 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
   ```

1. 建立 IAM 政策並記下傳回的 ARN。

   ```
   aws iam create-policy \
     --policy-name AWSLoadBalancerControllerAdditionalIAMPolicy \
     --policy-document file://iam_policy_v1_to_v2_additional.json
   ```

1. 將 IAM 政策連接至 AWS Load Balancer控制器所使用的 IAM 角色。將 *your-role-name* 取代為角色的名稱，例如 `AmazonEKSLoadBalancerControllerRole`。

   如果使用 `eksctl` 建立角色，然後要尋找已建立的角色名稱，請開啟 [AWS CloudFormation 主控台](https://console.aws.amazon.com/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
   ```