Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
脱・塩漬け!サステナブルなKubernetesエコシステムの管理をしていくために
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Shota Suzuki
November 21, 2022
Technology
910
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
730
Amazon EKS Auto ModeでKubernetesの運用をシンプルにする
sshota0809
0
510
ネットワーク視点で学ぶ Amazon EKS クラスタのスケーラビリティ
sshota0809
2
2.1k
ユーザーの理想からはじめるサービスの信頼性定義
sshota0809
2
700
Google Cloud Anthos Day 登壇資料
sshota0809
0
150
Helm / ArgoCD で実現する Kubernetes における宣言的リソースデリバリーの実践
sshota0809
3
3.9k
Kubernetes における宣言的なリソースデリバリーの実践
sshota0809
1
570
【SRE NEXT 2020】冗長性と生産性を高めるハイブリッドクラウド環境の実現
sshota0809
2
7.6k
VXLANを使ったプライベートクラウドVMマイグレーションの実現
sshota0809
0
330
Other Decks in Technology
See All in Technology
高負荷プロダクション環境におけるAWS Lambdaのリアル 〜スケールとコストを左右する実行ライフサイクルの技術仕様〜
maimyyym
2
810
セルフサービスのオブザーバビリティ基盤をOpenTelemetryで作る / Building a Self-Service Observability Platform with OpenTelemetry
ymotongpoo
3
460
OpenClawでAzure DevOpsのWiki更新を自動化する - クラウドAIだけでは届かない場所へ
yutakaosada
0
130
なぜ「決定性」が 決定的に重要なのか? Durable Execution 基盤の数理的理解 #serverlessjp / ServerlessDays Tokyo 2026
ytaka23
4
1.4k
AIは推し活である。
kurazuuuuuu
2
1k
Snowflake Horizon Catalog と Apache Iceberg で作る オープンなデータ基盤
kitagawaz
0
320
Mastering Agentic Development: Harness Engineering for Effective Coding Agents
konippi
3
630
AIに会社の文脈を理解させる技術~上流工程・非エンジニアにも広げるハーネスエンジニアリング実践~
ochtum
0
190
あなたの知らないAmazon VPC Route Server/Amazon VPC Route Server you don't know about
masakiokuda
0
140
顧客の成果創出とプロダクトの成長を 両立するためのFDE
sansantech
PRO
0
420
ScotSecure West 2026 - Glasgow
raybugg
0
200
全社共通データ基盤をつくる。ソニーのDatabricks活用とデータガバナンス設計の裏側
sony
0
190
Featured
See All Featured
Fashionably flexible responsive web design (full day workshop)
malarkey
409
67k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
340
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
850
Designing for Performance
lara
611
70k
So, you think you're a good person
axbom
PRO
2
2.2k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
18k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.2k
Visualization
eitanlees
153
17k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
4
1.2k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
440
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
530
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
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 を利用することでエコシステムの構成管理、 自動的なバージョンアップを行うことができる それによってエコシステムやクラスタの数が増えても持続可能な運用を行うことができる まとめ