$30 off During Our Annual Pro Sale. View Details »

k8s upgrade を 楽にする工夫

Hayato Kawai
October 12, 2023
48

k8s upgrade を 楽にする工夫

「3-shake SRE Tech Talk #7」で発表させていただいた LT の資料です。
https://3-shake.connpass.com/event/293432/

Hayato Kawai

October 12, 2023
Tweet

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  5. 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

    View Slide

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

    View Slide

  7. k8s upgrade でほぼ毎回発生する大変なところ

    API version の廃止

    cluster addon の upgrade
    © 2023 Wantedly, Inc.

    View Slide

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

    View Slide

  9. 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.

    View Slide

  10. k8s upgrade を楽にする工夫

    manifest テンプレートを各マイクロサービスに配布

    Argo CD で manifest 自動適用

    Helm (Helmfile) で manifest 生成

    Renovate で upgrade PR を自動生成
    © 2023 Wantedly, Inc.

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide