このページの改善にご協力ください
本ユーザーガイドの改善にご協力いただけませんか? このページの下部までスクロールし、[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 を削除する
-
incubator/aws-alb-ingress-controller
Helm チャートをインストールしてある場合は、これをアンインストールします。$
helm delete aws-alb-ingress-controller -n kube-system
-
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 を削除する
-
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
-
次のコマンドを入力してコントローラを削除します。
$
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 に移行するには、以下を実行する必要があります。
-
ALB Ingress Controller を削除します (上記を参照)。
-
AWS Load Balancer Controller で使用される IAM ロールにポリシーを追加します。このポリシーは、ALB Ingress Controller for Kubernetes によって作成されたリソースを LBC が管理することを許可します。
AWS Load Balancer Controller の IAM ロールに移行ポリシーを追加する
-
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
-
クラスターが 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
-
IAM ポリシーを作成し、返された ARN を書き留めます。
$
aws iam create-policy \ --policy-name
AWSLoadBalancerControllerAdditionalIAMPolicy
\ --policy-document file://iam_policy_v1_to_v2_additional.json -
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