できたこと

以前実施したAWS Load Balancer Controllerの構築後にVUPがあったので雑に実施します。
雑にとあるのは、わざわざダウンタイムを考えずに、手順の差分でアップデートできるかを見ると言うことです。

比較対象

tagsからそれまでの差分はわかります。

環境

EKS 1.20

作業ログ

1つ1つ挙げていきます

Using metadata server version 2 (IMDSv2)

IMDSv2がいきなりわからないのでクラメソの記事で勉強しました

適当にクラスタ内のEC2で設定を確認

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
$ aws ec2 describe-instances --instance-id i-9999999999999999 --query "Reservations[*].Instances[*].MetadataOptions"
[
    [
        {
            "State": "applied",
            "HttpTokens": "optional",
            "HttpPutResponseHopLimit": 2,
            "HttpEndpoint": "enabled"
        }
    ]
]

インフラ設定で2にしてたのかわからないですが、何もしなくてよかったです。
元のIssueのように、1にして(おり、かつIMDSv2になって?)いる場合は注意した方がいいです。

IAM Permissions

curlしたものの差分を見ると、これだけでした。ちょっとだけ条件がついたくらい。
元のIssue

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
-                "iam:CreateServiceLinkedRole",
+                "iam:CreateServiceLinkedRole"
+            ],
+            "Resource": "*",
+            "Condition": {
+                "StringEquals": {
+                    "iam:AWSServiceName": "elasticloadbalancing.amazonaws.com"
+                }
+            }
+        },
+        {
+            "Effect": "Allow",
+            "Action": [

何もしなくてもいいとは思いますが、一応ロールを更新(労力変わらないのでマネコンで)

あと、eksctlにリージョンのオプションが追加されてますが、まあ大した変更ではないのでスルー

Add Controller to Cluster

cert-manegerのインストールは、eksのサポート範囲変更により簡略化

最後にapplyするyamlの差分を見たところ、細かな変化はあるもののここが1番の変化かなと。
https://kubernetes-sigs.github.io/aws-load-balancer-controller/v2.4/guide/ingress/ingress_class/#deprecated-kubernetesioingressclass-annotation

本格的にdeprecatedになるのはメジャーアップくらいの段階だとは思いますが、exampleの変更のように、Ingressを変えておいてもいいと思います。

before

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
metadata:
  name: echoserver
  namespace: echoserver
  annotations:
    kubernetes.io/ingress.class: alb
    alb.ingress.kubernetes.io/scheme: internet-facing
    alb.ingress.kubernetes.io/tags: Environment=dev,Team=test
spec:
  rules:
  ...

after

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
metadata:
  name: echoserver
  namespace: echoserver
  annotations:
    alb.ingress.kubernetes.io/scheme: internet-facing
    alb.ingress.kubernetes.io/tags: Environment=dev,Team=test
spec:
  ingressClassName: alb
  rules:
  ...