Slide 1

Slide 1 text

© 2023 Wantedly, Inc. k8s upgrade を 楽にする工夫 3-shake SRE Tech Talk #7 Oct. 12 2023 - Hayato Kawai (@fohte)

Slide 2

Slide 2 text

自己紹介 © 2023 Wantedly, Inc. 名前 川井 颯人 (@fohte) 所属 ウォンテッドリー株式会社 Infrastructure Squad (2023/03〜)

Slide 3

Slide 3 text

今日伝えたいこと k8s upgrade は 日々の運用改善が大事 © 2023 Wantedly, Inc.

Slide 4

Slide 4 text

k8s upgrade してますか? © 2023 Wantedly, Inc.

Slide 5

Slide 5 text

EKS (k8s) のバージョンアップはすぐに来る © 2023 Wantedly, Inc. Kubernetes version Amazon EKS release EOL 1.28 2023-09-26 2024-11 1.27 2023-05-24 2024-07 1.26 2023-04-11 2024-06 1.25 2023-02-22 2024-05 1.24 2022-11-15 2024-01 1.23 2022-08-11 2023-10-11 3 ヶ月 3 ヶ月 2 ヶ月 1 ヶ月 4 ヶ月 https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html

Slide 6

Slide 6 text

k8s upgrade は日々の改善が大事 Wantedly での k8s upgrade を 楽にする工夫を紹介します © 2023 Wantedly, Inc.

Slide 7

Slide 7 text

k8s upgrade でほぼ毎回発生する大変なところ ● API version の廃止 ● cluster addon の upgrade © 2023 Wantedly, Inc.

Slide 8

Slide 8 text

k8s upgrade でほぼ毎回発生する大変なところ API version の廃止 ● API version が廃止されると、各マイクロサービスの manifest を変更する必要がある ○ Wantedly ではマイクロサービスが数百個ある 😇 © 2023 Wantedly, Inc.

Slide 9

Slide 9 text

k8s upgrade でほぼ毎回発生する大変なところ cluster addon の upgrade ● cluster addon のバージョンも k8s とともに上げる必要がある ○ 例: Istio 1.16 では k8s 1.22〜1.26 しかサポートしていない => k8s 1.27 に上げるときは Istio も 1.17 以上に上げる © 2023 Wantedly, Inc.

Slide 10

Slide 10 text

k8s upgrade を楽にする工夫 ● manifest テンプレートを各マイクロサービスに配布 ● Argo CD で manifest 自動適用 ● Helm (Helmfile) で manifest 生成 ● Renovate で upgrade PR を自動生成 © 2023 Wantedly, Inc.

Slide 11

Slide 11 text

k8s upgrade を楽にする工夫 manifest テンプレートを各マイクロサービスに配布 ● 各マイクロサービスの manifest のテンプレートを用意 ○ deployment, service などアプリケーションに必要な manifest は共通化 ○ API version 更新したい => テンプレートの manifest を更新するだけ ● テンプレート更新 => 各マイクロサービスで PR が自動作成される ○ あとは PR を merge するだけ © 2023 Wantedly, Inc.

Slide 12

Slide 12 text

k8s upgrade を楽にする工夫 Argo CD で manifest 自動適用 ● 各マイクロサービスで Argo CD を導入 ○ テンプレートを更新 => PR を merge だけで自動反映 🚀 ● cluster addon も Argo CD を現在進行系で導入中 © 2023 Wantedly, Inc.

Slide 13

Slide 13 text

k8s upgrade を楽にする工夫 Helm (Helmfile) で manifest 生成 ● cluster addon は Helm で manifest を管理している ○ Helm chart が cluster addon に必要な manifest を作成してくれる ○ Helm chart のバージョンを上げれば cluster-addon を upgrade できる 🎉 © 2023 Wantedly, Inc.

Slide 14

Slide 14 text

k8s upgrade を楽にする工夫 Renovate で upgrade PR を自動生成 ● Helm chart の upgrade を Renovate にしてもらう ○ cluster addon の upgrade に伴う manifest 生成が自動化 🎉 ○ あとは changelog を確認 => テスト環境で検証 => 本番に適用 🚀 © 2023 Wantedly, Inc.

Slide 15

Slide 15 text

k8s upgrade を楽にする工夫の効果 工夫したことによる効果 ● API version 廃止の対応に手間取ることがなくなった 🎉 ● cluster addon を日頃から upgrade できるようになった 🎉 ○ 普段から Renovate PR で upgrade がしやすい 🚀 ○ => k8s upgrade 時に急いで cluster addon を upgrade しなくてよい 👍 © 2023 Wantedly, Inc.

Slide 16

Slide 16 text

今日伝えたいこと k8s upgrade は 日々の運用改善が大事 © 2023 Wantedly, Inc.

Slide 17

Slide 17 text

https://www.wantedly.com/projects/522096