Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
脱・塩漬け!サステナブルなKubernetesエコシステムの管理をしていくために
Search
Shota Suzuki
November 21, 2022
Technology
850
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
脱・塩漬け!サステナブルなKubernetesエコシステムの管理をしていくために
Cloud Native Days Tokyo 2022
Shota Suzuki
November 21, 2022
More Decks by Shota Suzuki
See All by Shota Suzuki
Amazon EKS Auto ModeでKubernetesの運用をシンプルにする
sshota0809
1
600
Amazon EKS Auto ModeでKubernetesの運用をシンプルにする
sshota0809
0
470
ネットワーク視点で学ぶ Amazon EKS クラスタのスケーラビリティ
sshota0809
2
2k
ユーザーの理想からはじめるサービスの信頼性定義
sshota0809
2
680
Google Cloud Anthos Day 登壇資料
sshota0809
0
140
Helm / ArgoCD で実現する Kubernetes における宣言的リソースデリバリーの実践
sshota0809
3
3.8k
Kubernetes における宣言的なリソースデリバリーの実践
sshota0809
1
560
【SRE NEXT 2020】冗長性と生産性を高めるハイブリッドクラウド環境の実現
sshota0809
2
7.5k
VXLANを使ったプライベートクラウドVMマイグレーションの実現
sshota0809
0
320
Other Decks in Technology
See All in Technology
2026 AI Memory Architecture
nagatsu
0
510
4人目のSREはAgent
tanimuyk
0
250
iOS アプリの「これって不具合ですか?」を AI に調べてもらう
miichan
0
150
2026年6月23日 Syncable Tech + Start Python Club にて
hamukazu
0
150
FPGAの開発コンペでZephyrを使ってみた
iotengineer22
0
210
起点・思考・出力で分解する 〜PM業務の自動化設計〜
kazu_kichi_67
2
1.1k
AWS Security Agent といっしょに脅威モデリングをやってみよう
amarelo_n24
1
210
AIペネトレーションテスト・ セキュリティ検証「AgenticSec」紹介資料
laysakura
2
7.7k
元・セキュリティ学習経験0大学生による業務紹介 / An Introduction to the Job by a Former College Student with Zero Security Training Experience
nttcom
0
710
Fabricをフル活用する AI Agent Hub -製造業特化AIエージェントの設計
iotcomjpadmin
0
150
アラート調査向けAIエージェントの本番導入とその後/AI Agents for Alert Investigation: Production Deployment and After
taddy_919
1
230
コミットの「なぜ」を読む
ota1022
0
120
Featured
See All Featured
ラッコキーワード サービス紹介資料
rakko
1
3.7M
Thoughts on Productivity
jonyablonski
76
5.2k
Agile that works and the tools we love
rasmusluckow
331
22k
Design in an AI World
tapps
1
250
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
Fireside Chat
paigeccino
42
4k
Exploring anti-patterns in Rails
aemeredith
3
430
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
62
44k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
65
56k
Become a Pro
speakerdeck
PRO
31
6k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
310
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.8k
Transcript
脱・塩漬け! サステナブルなKubernetesエコシステムの 管理をしていくために 鈴木 祥太(@sshota0809) CloudNative Days Tokyo 2022
鈴木 祥太 @sshota0809 所属 株式会社ユーザベース SRE B2B 向け SaaS プロダクトを横串で担当
Like Network / Golang / GCP / AWS / k8s / Service Mesh 自己紹介
Kubernetes とエコシステムのライフサイクル エコシステム運用の難しさ サステナブルなエコシステム管理を目指して まとめ アジェンダ
話すこと ・Kubernetes エコシステムの運用について ・helmfile + Renovate + GitOps を利用したエコシステム運用自動化について 話さないこと
・Kubernetes 自体の運用について(アップグレード戦略など) ・helm 以外を前提としたエコシステムのインストール方法などについて ・GitOps の詳細について 話すこと・話さないこと
Kubernetes とエコシステムのライフサイクル
Kubernetes とエコシステムのライフサイクル Kubernetes のライフサイクル 4 ヶ月ごとにマイナーバージョンのリリースがされ 1 年間のサポートをする方針 参考:https://kubernetes.io/releases/ バージョンアップによって
API が非推奨になったり削除されたりする 参考:https://kubernetes.io/docs/reference/using-api/deprecation-policy/ 出典:https://endoflife.date/kubernetes
Kubernetes とエコシステムのライフサイクル Kubernetes の運用を便利にするエコシステム 各コミュニティで活発に開発される様々なエコシステムを利用することで、 Kubernetes の運用などを自動化・省エネ化することが可能 e.g. Istio /
cert-manager / External Secrets Operator / etc... エコシステムのライフサイクル エコシステムも 1 つのソフトウェアなので、当然リリース等のライフサイクルがある エコシステムのバージョンによってサポートしている Kubernetes のバージョンも 指定されている
Kubernetes とエコシステムのライフサイクル e.g. Istio のサポート情報 出典:https://istio.io/latest/docs/releases/supported-releases/
Kubernetes とエコシステムのライフサイクル Kubernetes のサイクル エコシステム のサイクル v1.1.0 v1.2.0 v1.3.0 v1.4.0
v1.5.0 v1.6.0 v1.7.0 v1.8.0 v1.0.0 v2.0.0 v3.0.0 v4.0.0 v5.0.0 v6.0.0 v7.0.0 v8.0.0 Kubernetes とエコシステムどちらもしっかりバージョン 追従する必要がある どちらをサボってしまってもエコシステムの動作に影響が出る可能性がある e.g. エコシステムが削除された Kubernetes の API にアクセスをしてしまう、etc... Kubernetes とエコシステムのライフサイクル例
エコシステム運用の難しさ
エコシステム運用の難しさ 構成管理の戦略 エコシステムのインストールは手段の 1 つとして helm Chart が提供されている 場合が多いが helm
を利用したソフトウェアのインストールは手続き型となる そのため、どのバージョンの helm Chart がどのクラスタにインストール されているのか構成管理の戦略を考える必要がある 構成管理をしないとエコシステムやクラスタの数が増えた際に管理コストが顕著に増大する(体験談) $ helm repo add external-secrets https://charts.external-secrets.io $ helm install external-secrets \ external-secrets/external-secrets \ -n external-secrets \ --create-namespace \ helm コマンドによるインストール
エコシステム運用の難しさ エコシステムのバージョン追従 前述の通りエコシステムのバージョン追従を行う必要があるが、各エコシステムの リリース情報をキャッチアップして helm コマンドでアップグレードする事はかなり大変 エコシステムとクラスタの数が掛け算で運用負荷となる ・・・ ・・・ エコシステム
Kubernetes ×
エコシステム運用の難しさ 構成管理の 戦略 エコシステム のバージョン 追従
エコシステム運用の難しさ 構成管理の 戦略 エコシステム のバージョン 追従 便利なので様々なエコシステムをインストールしたくなるが その運用で考えるべきことはたくさんある
サステナブルなエコシステム管理を目指して
サステナブルなエコシステム管理を目指して 構成管理の戦略 helmfile を利用した宣言的なエコシステム管理
サステナブルなエコシステム管理を目指して helmfile(https://github.com/helmfile/helmfile) helm Chart を宣言的に管理しデプロイできるようにするための helm のラッパーツール ‘’’Helmfile is a
declarative spec for deploying helm charts’’’ YAML ファイルでレポジトリやインストールするチャートを定義することで コマンドラインでの手続き的な管理から脱却することができる repositories: - name: external-secrets url: https://charts.external-secrets.io releases: - name: external-secrets-operator namespace: external-secrets-operator createNamespace: true chart: external-secrets/external-secrets version: 0.6.0 $ helm repo add external-secrets https://charts.external-secrets.io $ helm install external-secrets \ external-secrets/external-secrets \ --version 0.6.0 \ -n external-secrets \ --create-namespace \ helm を利用したコマンドラインでのインストール helmfile.yaml に宣言的に記載
サステナブルなエコシステム管理を目指して helmfile と GitOps helmfile と GitOps を組み合わせることで宣言的にエコシステムを管理できる世界観を実現 GitOps の構成パターン(例)
1. CICD パイプラインによって helmfile からマニフェストファイルを生成しそれを ArgoCD 等で同期 2. 自作/有志が公開している ArgoCD の helmfile プラグインを利用して同期 例 1 のフロー helmfile を管理している レポジトリ GitHub Actions マニフェスト用 リポジトリ ・・・ ArgoCD k8s クラスタ helmfile.yaml helmfile.yaml や values.yaml の変更検知で ワークフローを実行 helmfile.yaml から マニフェストを生成して マニフェスト用リポジトリ にコミット ($ helmfile template) ArgoCDがマニフェストの 差分検知 差分をクラスタに反映
エコシステム運用の難しさ 構成管理の 戦略 エコシステム のバージョン 追従
サステナブルなエコシステム管理を目指して エコシステムのバージョン追従 Renovate を利用した helmfile の自動更新
サステナブルなエコシステム管理を目指して Renovate(https://github.com/renovatebot/renovate) リポジトリ内の依存関係のスキャンおよび更新を自動化するツール 依存関係の更新を自動で検知してアップグレードを施す PR を自動で発行、 多数のコンフィグレーションにより Renovate の柔軟な制御が可能 多くのパッケージマネージャーに対応しており
helmfile にもネイティブで対応 参考:https://docs.renovatebot.com/modules/manager/ … releases: - name: external-secrets-operator namespace: external-secrets-operator createNamespace: true chart: external-secrets/external-secrets version: 0.6.0 helm repository メンテナー Create v0.7.0 helmfile.yaml 内で 指定したバージョンを参照 リポジトリスキャン + 依存関係検知 v0.7.0 の存在を検知 + PR 作成 − version: 0.6.0 + version: 0.7.0
サステナブルなエコシステム管理を目指して Renovate によるアップグレード自動化 with helmfile helmfile.yaml のバージョンアップグレードは Renovateの責務となる Renovate が作成した
PR をどう扱うか組織によって柔軟に選択が可能 1. 人によるレビューを行い承認したら PR をマージしてワークフローを発火 2. PR をトリガーに何かしらのテストを実行しパスしたら自動マージしてワークフローを発火 etc... 例 1 のフロー helmfile を管理している レポジトリ GitHub Actions マニフェスト用 リポジトリ ・・・ ArgoCD k8s クラスタ helmfile.yaml helmfile.yaml や values.yaml の変更検知で ワークフローを実行 helmfile.yaml から マニフェストを生成して マニフェスト用リポジトリ にコミット ($ helmfile template) ArgoCDがマニフェストの 差分検知 差分をクラスタに反映 バージョンアップグレードを 施す PR を作成
エコシステム運用の難しさ 構成管理の 戦略 エコシステム のバージョン 追従
サステナブルなエコシステム管理を目指して 弊社で実際に運用しているフローの全体像 バージョンのアップグレードによってマニフェストがどのように変わるか差分をコメント 差分を確認し問題なければ PR を手動マージ(人間による介入はここのみ) ArgoCD マニフェスト用 リポジトリ (e.g.
sp-manifest) helmfile を管理している レポジトリ Renovate GitHub Actions SRE GitHub Actions helmfileで管理されている ソフトウェアに アップグレードがあり次第 自動検知 + アップグレードを施す PR 作成 差分を確認して 問題なさそうであれば PR をマージ 差分を自動検知し 自動的にクラスタに反映 (新しいバージョンの エコシステムをインストール) helmfile.yaml マニフェスト ・・・ k8s クラスタ バージョンアップした際の マニフェストファイルの 差分を PR にコメント バージョンアップ後の マニフェストファイルを マニフェスト用 リポジトリにコミット
サステナブルなエコシステム管理を目指して バージョンアップに伴う差分をビジュアリング PR に GitHub Actions からコメント
サステナブルなエコシステム管理を目指して helmfile と Renovate の Tips どちらもプライベートな helm repository を参照することができるため
非公開の helm Chart も管理することができる(弊社では自作 Chart もすべて管理) 1. helmfile で helm repository に対する認証情報の設定する(サンプルを参照ください) 2. Renovate で helm repository に対する認証情報を設定する(サンプルを参照ください) Renovate の PR の単位はコンフィグレーションで柔軟に制御が可能なので 開発と本番環境用に別々の PR を発行するといったことも可能 1. helmfile.yaml を /dev/ と /prd/ ディレクトリ以下にそれぞれ配置 2. Renovate の設定でディレクトリごとに PR を分ける(サンプルを参照ください) 3. /dev/ に対する PR をマージ、開発クラスタ上での動作確認 時間の関係で説明し切れない部分はサンプルリポジトリを用意したのでご参照ください https://github.com/sshota0809/cndt2022-helmfile-renovate-sample ROOT dev/ prd/ helmfile.yaml helmfile.yaml
まとめ
Kubernetes とエコシステムのライフサイクル エコシステムは運用自動化ができたり大変便利だが、 しっかりとバージョン追従をすることが大切 エコシステム運用の難しさ 特にエコシステムやクラスタの数が増えるとエコシステム自体の構成管理や バージョンアップにかかる運用工数など様々な課題が表面化する サステナブルなエコシステム管理を目指して helmfile と
Renovate を利用することでエコシステムの構成管理、 自動的なバージョンアップを行うことができる それによってエコシステムやクラスタの数が増えても持続可能な運用を行うことができる まとめ