AWS Load Balancer Controllerをv2.0.1からv2.4.5にアップデート

AWS Load Balancer Controllerv2.0.1からv2.4.5にアップデートにしたので手順をメモします。
リージョンは東京( ap-northeast-1 )です。

❯ helm history aws-load-balancer-controller -n kube-system
REVISION    UPDATED                     STATUS      CHART                               APP VERSION DESCRIPTION     
1           Tue Feb  2 21:57:58 2021    superseded  aws-load-balancer-controller-1.0.8  v2.0.1      Install complete
2           Mon Dec 19 20:21:15 2022    deployed    aws-load-balancer-controller-1.4.6  v2.4.5      Upgrade complete

AWS Load Balancer Controllerのアップデート

公式の手順を参考に進めます。

docs.aws.amazon.com

以降の作業で参照する変数を定義しておきます。

$ CLUSTER_NAME=<eks-cluster-name>
$ VPC_ID=$(
    aws eks describe-cluster \
      --name $CLUSTER_NAME \
      --query "cluster.resourcesVpcConfig.vpcId" \
      --output text 
  )
$ POLICY_ARN=$(
    aws iam list-policies \
      --query 'Policies[?PolicyName==`AWSLoadBalancerControllerIAMPolicy`].Arn' \
      --output text
  )

IAMポリシー

ダウンロードした iam_policy.json でIAMポリシーの新しいバージョンを作成します。
公式の手順ではv2.4.4のファイルを参照していましたが、差分はないのでv2.4.5を指定しました。

$ curl -o iam_policy.json \
    https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.4.5/docs/install/iam_policy.json
$ aws iam create-policy-version \
    --policy-arn $POLICY_ARN \
    --policy-document file://iam_policy.json --set-as-default
$ rm iam_policy.json

IAMロール・サービスアカウント

作成済みなので、特に変更しません。
最新の手順ではロール名( --role-name )を明示的に指定していましたが、名前を変更する必要もないので無視します。

Helmチャートの更新

When upgrading, change install to upgrade in the previous command, but run the following command to install the TargetGroupBinding custom resource definitions before running the previous command.

ということで、CRDをインストールするために以下のコマンドを実行します。

$ kubectl apply -k "github.com/aws/eks-charts/stable/aws-load-balancer-controller/crds?ref=master"

続けて、チャートをアップデートします。

$ helm repo update
$ helm upgrade aws-load-balancer-controller eks/aws-load-balancer-controller \
  --set clusterName=$CLUSTER_NAME \
  --set serviceAccount.create=false \
  --set serviceAccount.name=aws-load-balancer-controller \
  --set region=ap-northeast-1 \
  --set vpcId=$VPC_ID \
  --set image.repository=602401143452.dkr.ecr.ap-northeast-1.amazonaws.com/amazon/aws-load-balancer-controller \
  -n kube-system

最後に

バージョンが更新されたことを確認して終わりです。

❯ helm list -n kube-system
NAME                            NAMESPACE   REVISION    UPDATED                                 STATUS      CHART                               APP VERSION
aws-load-balancer-controller    kube-system 2           2022-12-19 20:21:15.305269 +0900 JST    deployed    aws-load-balancer-controller-1.4.6  v2.4.5     
❯ kubectl get deployment aws-load-balancer-controller -n kube-system -o yaml | yq e '.spec.template.spec.containers[0].image' -
602401143452.dkr.ecr.ap-northeast-1.amazonaws.com/amazon/aws-load-balancer-controller:v2.4.5