Kubernetes は現代のクラウドネイティブアーキテクチャにおいて不可欠な技術であり、特に電信業界(Telco)では大規模なクラウド環境の運用管理が求められる。しかし、數千から數萬の Kubernetes クラスターを管理する際には、リソースの個別設定やテンプレートの統合、手動操作によるデプロイの課題が顕在化する。このような背景を踏まえ、GitOps と Kubernetes リソース管理を統合したソリューションとして、Google が開発した Porch が注目されている。本記事では、Porch の技術的特徴、GitOps との統合方法、および実際の運用における利點と課題を解説する。
Cloud Run 環境において、大規模な Kubernetes クラスター管理には以下の課題が存在する:
Porch は、Kubernetes のスケーラビリティと GitOps の自動化を実現するためのツールであり、以下の主要な機能を提供する:
Porch は Kubernetes リソースモデル(KRM)に基づく YAML ファイルでパッケージを構成し、DRY(Don't Repeat Yourself)原則を遵守する。これにより、リソース定義の重複を迴避し、自動化を容易にする。
パッケージ変體(package variant)を用いて、カスタマイズロジックや外部入力(ユーザー設定や自動化レイヤー)に基づく微調整されたデプロイパッケージを生成。
「乾燥した」ブループリントパッケージを「溼った」デプロイパッケージ(wet package)に変換し、すべてのデプロイに必要な設定を含め、GitOps ツールを介して Kubernetes クラスターに同期。
Kubernetes API インターフェースを提供し、Git で管理されるリソースを操作可能にし、Kubebuilder などの既存のコントローラー開発環境と互換性を確保。
Telco Cloud の自動化を支援し、Helm Charts を統合して強力なリソース管理能力を提供することを目的としている。プロジェクトは Helm Charts のサポートを含むが、テンプレート化の問題を解決する必要がある。
Git を唯一の真実のソース(Git as the single source of truth)として、Kubernetes リソースの直接的な変更を避ける。Porch の API を通じてリソースを管理し、変更の追跡性と GitOps フローを確保。
開発者に Porch の開発、テスト、ドキュメンテーション作成への參加を奨勵。バージョン 4 はバージョン 2 に比べて大幅な改善があり、バージョン 5 はより大規模な問題を解決する予定。GitHub 上での貢獻と issue 解決數は増加しており、コミュニティの活発さが確認されている。
Porch は Kubernetes リソース管理における GitOps 解決策を提供するが、テンプレート化、非同期操作、安定性の問題を解決する必要がある。Helm Charts と Porch のリソースモデルには本質的な違いがあり、産業界は自動化と既存ツールの間でバランスを取る必要がある。Nephio プロジェクトは Helm と Porch の強みを統合するが、産業界の協力とコミュニティ貢獻が目標達成の鍵となる。