できたこと#
以前実施したAWS Load Balancer Controllerの構築後にVUPがあったので雑に実施します。
雑にとあるのは、わざわざダウンタイムを考えずに、手順の差分でアップデートできるかを見ると言うことです。
比較対象#
tagsからそれまでの差分はわかります。
EKS 1.20
作業ログ#
1つ1つ挙げていきます
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:
...
|