AWS Load Balancer Controller で Helm をインストールする - Amazon EKS

AWS Load Balancer Controller で Helm をインストールする

このトピックでは、Kubernetes のパッケージマネージャーである Helm と eksctl を使用して AWS Load Balancer Controller をインストールする方法について説明します。コントローラーはデフォルトのオプションでインストールされます。注釈を使用した設定など、コントローラーの詳細については、GitHub の「AWS Load Balancer Controller ドキュメント」を参照してください。

以下のステップでは、サンプル値を独自の値に置き換えます。

前提条件

このチュートリアルを開始する前に、Amazon EKS クラスターの作成と管理に必要な次のツールとリソースを、インストールおよび設定しておく必要があります。

ステップ 1: eksctl を使用して IAM ロールを作成する

注記

AWS Load Balancer Controller の IAM ロールを AWS アカウントごとに作成するだけで済みます。AmazonEKSLoadBalancerControllerRoleIAM コンソール に存在するかどうかを確認します。このロールが存在する場合は、「ステップ 2: AWS Load Balancer Controller をインストールするステップ 2: AWS Load Balancer Controller のインストール」に進みます。

  1. ユーザーに代わって AWS API を呼び出すことを許可する、 AWS Load Balancer Controller 用の IAM ポリシーをダウンロードします。

    AWS

    **

$ curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.7.2/docs/install/iam_policy.json
AWS GovCloud (米国)

**

$ curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.7.2/docs/install/iam_policy_us-gov.json
$ mv iam_policy_us-gov.json iam_policy.json
  1. 前のステップでダウンロードしたポリシー を使用して、IAM ポリシーを作成します。

    $ aws iam create-policy \ --policy-name AWSLoadBalancerControllerIAMPolicy \ --policy-document file://iam_policy.json
    注記

    AWS Management Console でポリシーを確認すると、コンソールには [ELB] サービスに関する警告が表示されますが、[ELB v2] サービスに関する警告は表示されません。これは、ポリシー内のアクションの一部が [ELB v2] には存在するが、[ELB] には存在しないために起こります。[ELB] に関する警告は無視できます。

  2. my-cluster はご自分のクラスター名に、111122223333 はご自分のアカウント ID に置き換えた上で、コマンドを実行します。クラスターが AWS GovCloud (米国東部) または AWS GovCloud (米国西部) の AWS リージョンにある場合は、 arn:aws: arn:aws-us-gov: に置き換えます。

    $ eksctl create iamserviceaccount \ --cluster=my-cluster \ --namespace=kube-system \ --name=aws-load-balancer-controller \ --role-name AmazonEKSLoadBalancerControllerRole \ --attach-policy-arn=arn:aws:iam::111122223333:policy/AWSLoadBalancerControllerIAMPolicy \ --approve

ステップ 2: AWS Load Balancer Controller をインストールする

  1. eks-charts Helm チャートリポジトリを追加します。AWS はこのリポジトリを GitHub で管理しています。

    $ helm repo add eks https://aws.github.io/eks-charts
  2. ローカルリポジトリを更新して、最新のグラフがあることを確認します。

    $ helm repo update eks
  3. AWS Load Balancer Controller をインストールします。

    my-cluster の部分は、自分のクラスター名に置き換えます。次のコマンドでは、aws-load-balancer-controller は前のステップで作成した Kubernetes サービスアカウントです。

    Helm チャートの設定の詳細については、GitHub の「values.yaml」を参照してください。

    $ helm install aws-load-balancer-controller eks/aws-load-balancer-controller \ -n kube-system \ --set clusterName=my-cluster \ --set serviceAccount.create=false \ --set serviceAccount.name=aws-load-balancer-controller
    1. Amazon EC2 インスタンスメタデータサービス (IMDS) に対するアクセスが制限されている Amazon EC2 ノードにコントローラーをデプロイする場合、または Fargate にデプロイする場合には、次の helm コマンドに次のフラグを追加します。

      • --set region=region-code

      • --set vpcId=vpc-xxxxxxxx

    2. Helm チャートと Load Balancer Controller の利用可能なバージョンを表示するには、次のコマンドを使用します。

      helm search repo eks/aws-load-balancer-controller --versions
      重要

      デプロイされたグラフは、セキュリティに関する更新を自動的に受信しません。この更新が利用可能になったら、手動で新しいグラフにアップグレードする必要があります。アップグレードする場合は、前のコマンドで installupgrade に変更します。

helm install コマンドでは、コントローラーのカスタムリソース定義 (CRDs) が自動的にインストールされます。一方、helm upgrade コマンドでは自動的にインストールされません。helm upgrade, コマンドを使用する場合は、CRDs を手動でインストールする必要があります。次のコマンドを実行して、CRDs をインストールします。

wget https://raw.githubusercontent.com/aws/eks-charts/master/stable/aws-load-balancer-controller/crds/crds.yaml kubectl apply -f crds.yaml

ステップ 3: コントローラーがインストールされていることを確認する

  1. コントローラがインストールされていることを確認します。

    $ kubectl get deployment -n kube-system aws-load-balancer-controller

    出力例は次のとおりです。

    NAME READY UP-TO-DATE AVAILABLE AGE aws-load-balancer-controller 2/2 2 2 84s

    Helm を使用してデプロイした場合は、前の出力を受け取ります。Kubernetes マニフェストを使用してデプロイした場合、レプリカは 1 つのみとなります。

  2. コントローラーを使用して AWS リソースをプロビジョニングする場合には、クラスターは特定の要件を満たしている必要があります。詳細については、Application Load Balancer を使用してアプリケーションと HTTP トラフィックをルーティングするおよびNetwork Load Balancer を使用して TCP および UDP トラフィックをルーティングするを参照してください。