7
EKSのバージョンアップ⽅針案①︓ 既存のNodeGroupをアップデート
Control Plane
Node
Group
簡易さ
ロールバック
その他 EKSのAddOnの
⼿動アップデートが必要
Slide 8
Slide 8 text
8
EKSのバージョンアップ⽅針案②︓ 新規 NodeGroupへの切り替え
Control Plane
Node
Group
Node
Group
old new
簡易さ
ロールバック
その他 EKSのAddOnの
⼿動アップデートが必要
Slide 9
Slide 9 text
9
EKSのバージョンアップ⽅針案③︓ 新規Clusterに移⾏
In-Place-Upgradeを避けたい
ツール(Istioなど)の
バージョンアップも
実施しやすい
簡易さ
ロールバック
その他
old new
Slide 10
Slide 10 text
10
EKSのバージョンアップ戦略
Control Plane
Node
Group
Control Plane
Node
Group
Node
Group
old new
old new
① 既存のNodeGroupをアップデート ② 新規 NodeGroupへの切り替え ③ 新規Clusterに移⾏
簡易さ
ロールバック
その他 EKSのAddOnの
⼿動アップデートが必要
Istioなどのバージョンアッ
プも同時に可能
EKSのAddOnの
⼿動アップデートが必要
Rakumaはこれを採⽤
Slide 11
Slide 11 text
11
Cluster移⾏時はPull型のデプロイ⽅式が便利
Git Repo CI/CD
CD
Git Repo
CD
Push型のデプロイ⽅式 Pull型のデプロイ⽅式
デプロイJob毎に
設定を変更 各Clusterで
同じデプロイ設定
Slide 12
Slide 12 text
12
ArgoCD
“Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes”
https://argo-cd.readthedocs.io/en/stable/operator-manual/declarative-setup/
https://argo-cd.readthedocs.io/en/stable/getting_started/
Slide 13
Slide 13 text
13
Terraform / ArgoCD でコード化された設定を元にセットアップ
Terraform
old new
16
1. Applicationのデプロイ順序制御
例)MutatingWebhook⽤のControllerは先にDeployしておきたい
Application
A
Application
B
Deployment A
ConfigMap A
Deployment B
ConfigMap B
①
Slide 17
Slide 17 text
17
1. Applicationのデプロイ順序制御
例)MutatingWebhook⽤のControllerは先にDeployしておきたい
• App of Apps パターン︓Applicationで別のApplicationを管理・デプロイ
• Sync Wave︓リソースのデプロイ順序を制御することができる
Root
Application
Application
A
Application
B
Deployment A
ConfigMap A
Deployment B
ConfigMap B
sync-wave: 1
sync-wave: 2
①
②
③
③
④
⑤
⑤
Slide 18
Slide 18 text
18
2-1. Cluster毎に変更したい設定︓Cluster名
• Cluster名を利⽤したい箇所
• Logのメタ情報
• Cluster Autoscaler の対象NodeGroup
• EKSの場合、EC2のタグ情報からCluster名を取得できる
Namespace: A
Namespace: B
Pod A
Pod B
Slide 19
Slide 19 text
19
2-1. Cluster毎に変更したい設定︓Cluster名
• Cluster名を利⽤したい箇所
• Logのメタ情報
• Cluster Autoscaler の対象NodeGroup
• EKSの場合、EC2のタグ情報からCluster名を取得できる
• Cluster名を各NamespaceにConfigMapとして保存するCustomControllerを作成
• → どのPodからもCluster名を参照しやすくした
ClusterName
Controller
ConfigMap
(Cluster Name)
Namespace: A
Namespace: B
ConfigMap
(Cluster Name)
Pod A
Pod B
create
read
read