

 **このページの改善にご協力ください** 

このユーザーガイドに貢献するには、すべてのページの右側のペインにある「**GitHub でこのページを編集する**」リンクを選択してください。

# 非推奨になった ALB Ingress Controller からのアプリの移行
<a name="lbc-remove"></a>

このトピックでは非推奨のコントローラーバージョンから移行する方法を説明します。具体的には、AWS Load Balancer Controller の非推奨バージョンを削除する方法について説明します。
+ 非推奨バージョンはアップグレードできません。まずそれらを削除してから、最新バージョンをインストールする必要があります。
+ 非推奨バージョンには以下が含まれます。
  +  AWS Load Balancer Controller の前身である AWS ALB Ingress Controller for Kubernetes (「Ingress Controller」)。
  + AWS Load Balancer Controller の任意の `0.1.x ` バージョン

## 非推奨のコントローラーバージョンを削除する
<a name="lbc-remove-desc"></a>

**注記**  
非推奨バージョンは、Helm を使用したか、Kubernetes マニフェストに従って手動でインストールされた可能性があります。この手順は元々インストールしてあるツールを使用して実行してください。

1. `incubator/aws-alb-ingress-controller` Helm チャートをインストールしてある場合はこれをアンインストールします。

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

1. `eks-charts/aws-load-balancer-controller` のバージョン `0.1.x ` をインストールしている場合はこれをアンインストールします。`0.1.x ` からバージョン `1.0.0` へのアップグレードはWebhook API のバージョンとの互換性がないため動作しません。

   ```
   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 Controller への移行
<a name="lbc-migrate"></a>

ALB Ingress Controller for Kubernetes から AWS Load Balancer Controller に移行するには、以下を実行する必要があります。

1. ALB イングレス・コントローラー を削除します (上記を参照)。

1.  [AWS ロードバランサー コントローラーをインストールします。](aws-load-balancer-controller.md#lbc-overview)

1. AWS Load Balancer Controller で使用される IAM ロールにポリシーを追加します。このポリシーにより、ALB Ingress Controller for Kubernetes によって作成されたリソースを LBC が管理できるようになります。

1. IAM ポリシーをダウンロードします。このポリシーにより、ALB Ingress Controller for Kubernetes によって作成されたリソースを AWS Load Balancer Controller が管理できるようになります。[ポリシーを表示](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. AWS Load Balancer Controller によって使用される IAM ロールに IAM ポリシーをアタッチします。*ロール名* を役割の名前 (例: `AmazonEKSLoadBalancerControllerRole`) に置き換えます。

   `eksctl` を使用して役割を作成している場合、作成された役割名を見つけるには[AWS クラウドフォーメーション コンソール](https://console.aws.amazon.com/cloudformation)を開き、**eksctl-*マイクラスター*-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
   ```