非推奨 AWSIngress Controller からアプリケーションを移行する - Amazon EKS

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

本ユーザーガイドの改善にご協力いただけませんか? このページの下部までスクロールし、[GitHub でこのページの編集] を選択します。皆さまにご協力いただくことで、あらゆる人々に使いやすいユーザーガイドになります。

非推奨 AWSIngress Controller からアプリケーションを移行する

このトピックでは、非推奨のコントローラーバージョンから移行する方法を説明します。具体的には、AWS Load Balancer Controller の非推奨バージョンを削除する方法について説明します。

  • 非推奨バージョンはアップグレードできません。まずそれらを削除してから、最新バージョンをインストールする必要があります。

  • 非推奨バージョンには以下が含まれます。

    • AWS Load Balancer Controller の前身である AWS ALB Ingress Controller for Kubernetes (「Ingress Controller」)

    • AWS Load Balancer Controller の 0.1.x バージョンすべて

非推奨のコントローラーバージョンを削除する

注記

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

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

    $ helm delete aws-alb-ingress-controller -n kube-system
  2. 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
Kubernetes マニフェストを使用して Ingress Controller を削除する
  1. Ingress Controller がインストール済みであるかどうかを確認します。

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

    これは、コントローラが取り付けられていない場合の出力です。

    サーバーからのエラー (NotFound): deployments.apps「alb-ingress-controller」が見つかりません

    これは、コントローラが取り付けられている場合の出力です。

    NAME READY UP-TO-DATE AVAILABLE AGE alb-ingress-controller 1/1 1 1 122d
  2. 次のコマンドを入力してコントローラを削除します。

    $ 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 に移行する

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

  1. ALB Ingress Controller を削除します (上記を参照)。

  2. AWS Load Balancer Controller をインストールします。

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

AWS Load Balancer Controller の IAM ロールに移行ポリシーを追加する
  1. IAM ポリシーをダウンロードします。このポリシーは、ALB Ingress Controller for Kubernetes によって作成されたリソースを AWS Load Balancer Controller が管理することを許可します。ポリシーを表示することもできます。

    $ curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.7.2/docs/install/iam_policy_v1_to_v2_additional.json
  2. クラスターが 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
  3. IAM ポリシーを作成し、返された ARN を書き留めます。

    $ aws iam create-policy \ --policy-name AWSLoadBalancerControllerAdditionalIAMPolicy \ --policy-document file://iam_policy_v1_to_v2_additional.json
  4. AWS Load Balancer Controller が使用する IAM ロールに IAM ポリシーをアタッチします。your-role-name を、AmazonEKSLoadBalancerControllerRole などのロールの名前に置き換えます。

    eksctl を使用してロールを作成している場合、作成されたロール名を見つけるには、AWS CloudFormation コンソールを開き、eksctl-my-cluster-addon-iamserviceaccount-kube-system-aws-load-balancer-controller スタックを選択します。[Resources (リソース)] タブを選択します。ロール名は、[Physical ID (物理 ID)] 列で見つかります。クラスターが AWS GovCloud (米国東部) または AWS GovCloud (米国東部) の AWS リージョン にある場合は、arn:aws:arn:aws-us-gov: に置き換えます。

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