spanner-autoscalerに学ぶCRD設計パターン 〜自動化と緊急時対応を両立するKubernetesコントローラーの作り方〜

tkuchikiのアイコン

tkuchiki

株式会社メルペイ

Fintech SRE Tech Lead

面白法人カヤック、Kaizen Platform を経て現職。 Cloud Spanner や CDN の信頼性改善に従事。

セッション概要

Google Cloud Spanner はコンピュート容量(Processing Units)を無停止で増減可能なため、負荷に合わせた容量調整が運用の役に立ちます。オートスケーラーには公式のマネージド機能や cloudspannerecosystem/autoscaler という選択肢もありますが、我々は Kubernetes 上でアプリケーションを運用しているため、すべてをカスタムリソースで宣言的に扱える OSS「spanner-autoscaler」を開発・運用しています。CRD なら既存の GitOps・RBAC のフローにそのまま乗り、開発チームへのセルフサービス化が容易な点も理由として挙げられます。CPU 使用率ベースの自動スケールに加え、cron によるスケジュール、緊急時に人間が安全に介入する手動スケーリングといった機能も提供しています。 本セッションでは、この実装・運用経験をもとに、Kubernetes コントローラーと CRD 設計の実践パターンを解説します。 - 役割ごとに CRD を分割し(SpannerAutoscaler / SpannerAutoscaleSchedule / SpannerManualScaling)、リソース間参照で協調させるパターン - 「自動化を止めずに人間が介入する」仕組み: kubectl 一発で容量を一時固定し、期限切れで自動制御へ戻す宣言的な緊急対応 - 独立した CRD なので、ArgoCD のような独自 RBAC を作らずに、標準の RBAC と監査ログで「誰が実行できるか」を制御・追跡可能 - AI によるオペレーションの可能についてもお話しする予定 - API バージョニング(v1alpha1→v1beta1)と後方互換性 - 外部システム依存コントローラーのテスト: envtest の限界と、自作 Spanner エミュレータによる e2e テスト - AI エージェントの動作検証基盤としても活用 - 入力検証の選択肢: Admission Webhook と ValidatingAdmissionPolicy(CEL)の使い分け - 時間があれば

対象者

Platform Engineer

キーワード

Kubernetes

カテゴリ

tech
Share: