Slide 1

Slide 1 text

そこまで大規模じゃない EKS環境を(あまり)頑張らずに 最新化し続けたい @kohbis Kubernetes活用の手引き 私たちの基盤構築・運用事例 Lunch LT 2024/01/25

Slide 2

Slide 2 text

MIXI, Inc. About Me ● SIer (Infra/Backend) ➡ Startup (Backend/Frontend) ➡ いま ● 最近マネージャーがくれたラズパイ2台をおうちクラスタに組み込んだ Kohei SUGIMOTO 株式会社MIXI 2022/04 ~『家族アルバム みてね』 SRE X/GitHub: @kohbis (sushimoto)

Slide 3

Slide 3 text

MIXI, Inc. 本日お話しすること ● 「そこまで大規模じゃない」EKS環境をできるだけ頑張らずに最新化し続けるために 『家族アルバム みてね』がやっていること ● このスライドにおける ○ 大規模 …IaaS基盤、10~以上のマイクロサービス ○ 大規模じゃない … ひとつのサービス基盤、数個のマイクロサービス ● 「最新化」対象 ○ EKSクラスタバージョン ○ Helmパッケージのバージョン

Slide 4

Slide 4 text

MIXI, Inc. 『家族アルバム みてね』とは スマホで撮ったお子さまの写真・動画を家族で共有し コミュニケーションして楽しむ家族アルバムサービス 「世界中の家族の”こころのインフラ”を作る」 ● 現在7言語・175の国と地域でサービスを提供 ● 2023年11月に利用者数が2,000万人を突破 ※1 ※1 iOS・Android™ アプリ登録者数、ブラウザ版登録者数の合計

Slide 5

Slide 5 text

MIXI, Inc. 『家族アルバム みてね』のKubernetes構成 ● 運用しはじめて大体3年くらい ● Amazon EKS v1.27 ● Helm chartsによる構成管理 ● Argo CDによるGitOps ● Ingress-NGINX Controller, Cluster Autoscaler, Prometheus, KEDA, Grafana, Argo Workflows etc. ○ 約30ほどのHelmパッケージを利用 多いときで18,000Pods、少ないときで2,000Pods(2023/12時点)

Slide 6

Slide 6 text

MIXI, Inc. EKSクラスタバージョンの アップデート

Slide 7

Slide 7 text

MIXI, Inc. EKSクラスタバージョンのアップデート https://speakerdeck.com/kohbis/familyalbums-upgrade-strategy-and-continuous-improvement-for-k8s-infrastructure

Slide 8

Slide 8 text

MIXI, Inc. EKSクラスタのBlue/Green戦略による無停止アップグレード ● みてねはAWSマルチリージョン構成 ● 複数リージョンにEKSクラスタが存在 各リージョンに新バージョンのクラスタ作成 ▼ ALBの加重ルーティングで徐々にトラフィック 移行 ▼ メトリクス監視に異常がなければ完全移行 加重ルーティングで 徐々に移行 Route53 レイテンシーベース ルーティング https://speakerdeck.com/kohbis/familyalbums-upgrade-strategy-and-continuous-improvement-for-k8s-infrastructure?slide=12

Slide 9

Slide 9 text

MIXI, Inc. Argo CDと『みてね』サービスのクラスタ分割 https://speakerdeck.com/kohbis/familyalbums-upgrade-strategy-and-continuous-improvement-for-k8s-infrastructure?slide=27

Slide 10

Slide 10 text

MIXI, Inc. Helmパッケージの アップデート

Slide 11

Slide 11 text

MIXI, Inc. Helmパッケージのアップデート 数十個ある&これから増えるであろうHelmパッケージの更新を追い続けるのは大変 放置すればするほど適用のための修正コストが高くなる Helmパッケージの更新を検知する まずはこれを(楽して)やりたい ▼ Release notes, CHANGELOG.md, Artifact Hubで更新内容を確認 ▼ 開発環境に適用して問題ないことを確認 ▼ 本番環境に適用

Slide 12

Slide 12 text

MIXI, Inc. Renovate Botの活用 ※1 ● 言語やパッケージの依存関係を自動解決 ○ Package Managers から選択(複数可)※2 ● 設定はリポジトリルートのrenovate.jsonに記述 ● ルールを柔軟にカスタムすることが可能 ○ 例)リリースからxx日たったら安定版と見なしてPRを起票 依存パッケージやcharts内のDockerイメージタグを最新化したPRを起票 ちなみにGitHubのDependabotでは議論中 ※3 ※1 https://github.com/renovatebot/renovate ※2 https://docs.renovatebot.com/modules/manager/ ※3 https://github.com/dependabot/dependabot-core/issues/2237

Slide 13

Slide 13 text

MIXI, Inc. Renovatebotの活用 - Dependency Dashboard

Slide 14

Slide 14 text

MIXI, Inc. Deprecated/Removed APIの検知

Slide 15

Slide 15 text

MIXI, Inc. Deprecated/Removed APIの検知 K8sのAPIはKubernetes Deprecation Policyに沿って非推奨/削除される ※1 ▼ もしあればDeprecated API Migration Guideに従って更新する ※2 (どのくらい対応が必要かはAPIによる) ▼ (開発環境で確認するはずだが)「デプロイしようとしてから気づく」は避けたい Helmパッケージで導入するchartsは大体解決されている 自分たちで書いたテンプレートに存在しないかを(楽して)検知したい ※1 https://kubernetes.io/docs/reference/using-api/deprecation-policy/ ※2 https://kubernetes.io/docs/reference/using-api/deprecation-guide/

Slide 16

Slide 16 text

MIXI, Inc. Plutoの活用 ※1 ● 非推奨/削除APIを検知するCLIツール ○ GitHub ActionsなどCIでPRごとや定期実行できる ● 稼働中のクラスタ、ローカルのHelm chartsいずれにも対応 ▼検知なし (Exit Code 0) ▼検知あり (Exit Code 2: deprecated, 3: removed etc. ※2) ※1 https://github.com/FairwindsOps/pluto ※2 https://github.com/FairwindsOps/pluto/blob/master/docs/advanced.md#ci-pipelines

Slide 17

Slide 17 text

MIXI, Inc. Amazon EKS - Upgrade Insights ※1 ● 2023年12月末にGA ● EKSクラスタを自動的にスキャンし、 K8sバージョンのアップグレードに影響する可能 性がある問題を検知 ▼ 取り組みの甲斐あって(?)みてねのクラスタでは検知なし! ※1 https://aws.amazon.com/jp/about-aws/whats-new/2023/12/amazon-eks-upgrade-insights/

Slide 18

Slide 18 text

MIXI, Inc. まとめ

Slide 19

Slide 19 text

MIXI, Inc. まとめ ● EKSクラスタアップグレード ○ 役割ごとにクラスタを分割して、毎回発生していた作業コストを削減 ● Helmパッケージのアップデート ○ Renovate Botの活用により、更新の検知を自動化 ● Deprecated/Removed APIの検知 ○ Plutoやマネージド機能(EKS Upgrade Insights)によって自動化 K8s基盤の運用はただでさえ大変。。。 便利なツールを組み合わせて少しずつでも楽にしていきたい!

Slide 20

Slide 20 text

20 ©MIXI 豊かなコミュニケーションを広げ、 世界を幸せな驚きで包む。 PURPOSE 創業以来大切にしてきた豊かなコミュニケーションで幸せな驚きに包まれ た世界を目指し、ただ「つながればいい」という効率的な機能の提供では なく、あたたかい心のつながりを生み出すようなサービスの開発・提供を 行っています。 3つの事業領域で「心もつなぐ」場と機会の創造 ─ スポーツ、ライフスタイル、デジタルエンターテインメント ─ BUSINESS スポーツ領域ではチーム・選手・ユーザーのつながり、ライフスタイル領 域では人々の生活がより豊かになるような身近なコミュニケーション、デ ジタルエンターテインメント領域では親しい友人達と一緒に遊んだり、リ アルイベントで盛り上がれる場や機会の提供など、「心もつなぐコミュニ ケーション」を軸とした事業展開を行っています。 ユーザーサプライズファースト、発明・夢中・誠実 大胆な発想と情熱と何事にも真摯に向きあう文化 CULTURE/PEOPLE ユーザーの驚きを最優先に考えるという想いのこもった「ユーザーサプライ ズファースト」という言葉を胸に、一人ひとりが、ユーザーや仲間、自分に 対して真摯に向き合い、夢中になって、それぞれの専門領域や経験を活かし たこれまでにない新しい視点の発想でものごとに取り組む組織文化です。 多様な働き方を実現する 「マーブルワークスタイル」制度 WORKING STYLE 多様な人材が活躍できる環境づくりを目指し、働き方や休み方の制度も拡充 されています。リモートワークとオフィスワークを融合した「マーブルワー クスタイル」制度は、対面でのコミュニケーション機会も重要であると考 え、両方の働き方を融合したような制度です。 WE ARE HIRING! MIXIではコミュニケーションを一緒につくる仲間を募集中! MIXI 採用 MIXI GROUPについて

Slide 21

Slide 21 text

MIXI, Inc.