社内のKubernetesクラスタ運用状況を調査し、それを改善する取り組みについて発表しました。
- Kubernetesクラスタ基盤の開発 - Kubernetes運用知見の集約と、関心向上文化の導入
さくらのテックランチ vol.1 ~cloud-initとk8sのフィオレンティーナ~ https://sakura-tokyo.connpass.com/event/266667/ アーカイブ: https://youtu.be/WaKq_xz6iq4
© SAKURA internet Inc.社内のKubernetes運⽤状況の改善活動についてクラウド事業本部 SRE室 菅原⼤和
View Slide
© SAKURA internet Inc.⾃⼰紹介#プロフィール• ⽒名: 菅原 ⼤和• ハンドル: Drumato• Drum + (Yam)ato = Drumato• 2022年 新卒⼊社• 興味分野• Kubernetes• SRE• SDN• その他新しくて⾯⽩いこと全般
© SAKURA internet Inc.⾃⼰紹介#経歴期間 所属2019/04-2020/01 GMOペパボ株式会社プラットフォーム事業部 学⽣アルバイト2019/04-2020/03 SecHack365 2019 Trainee2020/04-2021/04 Cybozu Labs Youth 第10期⽣2021/04-2022/03 LINE株式会社Verda室 ネットワーク開発チーム アルバイト2022/04- さくらインターネット株式会社クラウド事業本部 SRE室 2022年新卒
© SAKURA internet Inc.本⽇のお話
© SAKURA internet Inc.• SRE室とは• 現在の体制• SRE室のミッション/ビジョン/バリュー• 社内のKubernetes運⽤状況• 本プロジェクトの⽬的• 活動1: SAKURA Kubernetes Cluster Platformの開発• 仕組み• 運⽤上の⼯夫点• 活動2: SAKURA Kubernetes Operators Groupの発⾜• 今後の展望本⽇のお話
© SAKURA internet Inc.SRE室とは
© SAKURA internet Inc.SRE室とは• 2022/07に設⽴された、⽐較的新しい部署
© SAKURA internet Inc.SRE室とは• 2022/07に設⽴された、⽐較的新しい部署ミッション•クラウドサービスの信頼性を⾼め、お客様/社会に貢献するビジョン•社内にSRE⽂化とその実践を広め、お客様に価値提供するバリュー•決めごとを作るのではなく、⼀緒に”⼿を動かす”•開発・運⽤チームと綿密にコミュニケーションをとる•You built it, yourun it
© SAKURA internet Inc.SRE室とは• 基本的には、Google SREのパターンをリスペクトしている• 各プロダクトチームと密に連携し、運⽤改善を横断的に⽀援• SRE室謹製のツール/基盤を利⽤してもらえるように• 監視ネイティブな⽂化を広めるための活動
© SAKURA internet Inc.SRE室とは• 基本的には、Google SREのパターンをリスペクトしている• 各プロダクトチームと密に連携し、運⽤改善を横断的に⽀援• SRE室謹製のツール/基盤を利⽤してもらえるように• 監視ネイティブな⽂化を広めるための活動• Center of Practiceとしての側⾯も意識• 各プロダクトチームに運⽤のハンドルは握ってほしい• その上で、ツール/基盤の仕組みを使ってほしい
© SAKURA internet Inc.SRE室とは• 基本的には、Google SREのパターンをリスペクトしている• 各プロダクトチームと密に連携し、運⽤改善を横断的に⽀援• SRE室謹製のツール/基盤を利⽤してもらえるように• 監視ネイティブな⽂化を広めるための活動• Center of Practiceとしての側⾯も意識• 各プロダクトチームに運⽤のハンドルは握ってほしい• その上で、ツール/基盤の仕組みを使ってほしい• 現在は上記の世界観を⽬指し、少しずつ連携を強めている段階
© SAKURA internet Inc.SRE室とは• 基本的には、Google SREのパターンをリスペクトしている• 各プロダクトチームと密に連携し、運⽤改善を横断的に⽀援• SRE室謹製のツール/基盤を利⽤してもらえるように• 監視ネイティブな⽂化を広めるための活動• Center of Practiceとしての側⾯も意識• 各プロダクトチームに運⽤のハンドルは握ってほしい• その上で、ツール/基盤の仕組みを使ってほしい• 現在は上記の世界観を⽬指し、少しずつ連携を強めている段階• クラウドサービスに対する機能追加も実施1. クラウドDNSに対する⽔責め攻撃の対策実施2. オートスケール機能の提供
© SAKURA internet Inc.さくらとKubernetes
© SAKURA internet Inc.さくらとKubernetes• 社内のKubernetes運⽤を改善するべく、現状を調査
© SAKURA internet Inc.さくらとKubernetes• 社内のKubernetes運⽤を改善するべく、現状を調査• 現状1: いくつかのチームがKubernetesを採⽤している
© SAKURA internet Inc.さくらとKubernetes• 社内のKubernetes運⽤を改善するべく、現状を調査• 現状1: いくつかのチームがKubernetesを採⽤している• 現状2: 運⽤上深刻な課題がいくつか⾒つかった• 課題1: 知⾒が不⼗分で、トラシューに時間がかかる• 課題2: プラクティスがわからず、意思決定が⾏えない• 課題3: 採⽤チーム間で知⾒共有が⾏われていない
© SAKURA internet Inc.さくらとKubernetes• 社内のKubernetes運⽤を改善するべく、現状を調査• 現状1: いくつかのチームがKubernetesを採⽤している• 現状2: 運⽤上深刻な課題がいくつか⾒つかった• 課題1: 知⾒が不⼗分で、トラシューに時間がかかる• 課題2: プラクティスがわからず、意思決定が⾏えない• 課題3: 採⽤チーム間で知⾒共有が⾏われていない• 各チームが探り探り運⽤している• GKEと異なりベアメタルクラスタ運⽤• 社内のKubernetes知⾒不⾜
© SAKURA internet Inc.さくらとKubernetes• 社内のKubernetes運⽤を改善するべく、現状を調査• 現状1: いくつかのチームがKubernetesを採⽤している• 現状2: 運⽤上深刻な課題がいくつか⾒つかった• 課題1: 知⾒が不⼗分で、トラシューに時間がかかる• 課題2: プラクティスがわからず、意思決定が⾏えない• 課題3: 採⽤チーム間で知⾒共有が⾏われていないKubernetes採⽤タイミングごとに、同様の調査(e.g., CNIプラグイン)が何度も⾏われている
© SAKURA internet Inc.さくらとKubernetes• 社内のKubernetes運⽤を改善するべく、現状を調査• 現状1: いくつかのチームがKubernetesを採⽤している• 現状2: 運⽤上深刻な課題がいくつか⾒つかった• 課題1: 知⾒が不⼗分で、トラシューに時間がかかる• 課題2: プラクティスがわからず、意思決定が⾏えない• 課題3: 採⽤チーム間で知⾒共有が⾏われていない• 現状3: 採⽤したいが、技術的ハードルから断念しているチームも
© SAKURA internet Inc.本プロジェクトの⽬的
© SAKURA internet Inc.本プロジェクトの⽬的1. Kubernetesクラスタ運⽤をサポートする• あくまでも「サポート」であり、「代⾏」ではない• 特にSREネイティブな運⽤を⾏えるようにしたい
© SAKURA internet Inc.本プロジェクトの⽬的1. Kubernetesクラスタ運⽤をサポートする• あくまでも「サポート」であり、「代⾏」ではない• 特にSREネイティブな運⽤を⾏えるようにしたい2. 社内のKubernetesに関する運⽤知⾒の集約• 情報共有を⾏う場(ドキュメント/コミュニケーション)の整備
© SAKURA internet Inc.本プロジェクトの⽬的1. Kubernetesクラスタ運⽤をサポートする• あくまでも「サポート」であり、「代⾏」ではない• 特にSREネイティブな運⽤を⾏えるようにしたい2. 社内のKubernetesに関する運⽤知⾒の集約• 情報共有を⾏う場(ドキュメント/コミュニケーション)の整備3. 社内のKubernetes関⼼向上• 技術選定の上でKubernetesが採⽤されない、ということはままある• とはいえ、選択肢となるレベルには、社内に浸透してほしい
© SAKURA internet Inc.活動1SAKURA Kubernetes Cluster Platform
© SAKURA internet Inc.社内Kubernetes基盤#概要• 先述した⽬的を実現するために開発• プロダクトチームにとってのKubernetesクラスタ運⽤コストを低減• プロダクトチーム間の認識を⾼める• お互いに運⽤状況が把握しあえるような状況になっていること• それらがプラクティカルに、システムで管理されていること
© SAKURA internet Inc.社内Kubernetes基盤#概要• 先述した⽬的を実現するために開発• プロダクトチームにとってのKubernetesクラスタ運⽤コストを低減• プロダクトチーム間の認識を⾼める• お互いに運⽤状況が把握しあえるような状況になっていること• それらがプラクティカルに、システムで管理されていること• プロジェクトメンバーは2⼈• 私: プロジェクト進⾏、検討、設計、実装、テスト、導⼊、運⽤• 稲垣さん(@hum_op_dev): 技術的相談、ユーザ視点のフィードバック
© SAKURA internet Inc.社内Kubernetes基盤#概要• 先述した⽬的を実現するために開発• プロダクトチームにとってのKubernetesクラスタ運⽤コストを低減• プロダクトチーム間の認識を⾼める• お互いに運⽤状況が把握しあえるような状況になっていること• それらがプラクティカルに、システムで管理されていること• プロジェクトメンバーは2⼈• 私: プロジェクト進⾏、検討、設計、実装、テスト、導⼊、運⽤• 稲垣さん(@hum_op_dev): 技術的相談、ユーザ視点のフィードバック• 現在いくつかのユーザに使っていただいている
© SAKURA internet Inc.社内Kubernetes基盤#概要• 先述した⽬的を実現するために開発• プロダクトチームにとってのKubernetesクラスタ運⽤コストを低減• プロダクトチーム間の認識を⾼める• お互いに運⽤状況が把握しあえるような状況になっていること• それらがプラクティカルに、システムで管理されていること• プロジェクトメンバーは2⼈• 私: プロジェクト進⾏、検討、設計、実装、テスト、導⼊、運⽤• 稲垣さん(@hum_op_dev): 技術的相談、ユーザ視点のフィードバック• 現在いくつかのユーザに使っていただいている• 基盤運⽤者は私⼀⼈• 属⼈化を極⼒排除し、スケールする運⽤を⼼がけている• いつでもチームメンバーが増えることを想定している
© SAKURA internet Inc.社内Kubernetes基盤#機能• クラスタマニフェストのデプロイで、⾃動的にクラスタが作成
© SAKURA internet Inc.社内Kubernetes基盤#機能• クラスタマニフェストのデプロイで、⾃動的にクラスタが作成• ユーザはクラスタの⽀配権を持つ• ノードにSSH接続し、運⽤開始できる
© SAKURA internet Inc.社内Kubernetes基盤#機能• クラスタマニフェストのデプロイで、⾃動的にクラスタが作成• ユーザはクラスタの⽀配権を持つ• ノードにSSH接続し、運⽤開始できる• kube-vipを採⽤している• ARPモードで動作し、マスターノードのフェイルオーバが効く• Service Type LoadBalancerもデフォルトで対応
© SAKURA internet Inc.社内Kubernetes基盤#機能• クラスタマニフェストのデプロイで、⾃動的にクラスタが作成• ユーザはクラスタの⽀配権を持つ• ノードにSSH接続し、運⽤開始できる• kube-vipを採⽤している• ARPモードで動作し、マスターノードのフェイルオーバが効く• Service Type LoadBalancerもデフォルトで対応• ArgoCDでクラスタ状態を確認できる
© SAKURA internet Inc.社内Kubernetes基盤#機能• クラスタマニフェストのデプロイで、⾃動的にクラスタが作成• ユーザはクラスタの⽀配権を持つ• ノードにSSH接続し、運⽤開始できる• kube-vipを採⽤している• ARPモードで動作し、マスターノードのフェイルオーバが効く• Service Type LoadBalancerもデフォルトで対応• ArgoCDでクラスタ状態を確認できる• スケールアウトに対応している• .spec.replicasを上げると、マスター/ワーカーノードを増やせる
© SAKURA internet Inc.社内Kubernetes基盤#機能• クラスタマニフェストのデプロイで、⾃動的にクラスタが作成• ユーザはクラスタの⽀配権を持つ• ノードにSSH接続し、運⽤開始できる• kube-vipを採⽤している• ARPモードで動作し、マスターノードのフェイルオーバが効く• Service Type LoadBalancerもデフォルトで対応• ArgoCDでクラスタ状態を確認できる• スケールアウトに対応している• .spec.replicasを上げると、マスター/ワーカーノードを増やせる• クラスタのAPI監視をデフォルトで提供(後述)
© SAKURA internet Inc.社内Kubernetes基盤#仕組みさくらのクラウドクラスタ作成者Management ClusterWorkload Cluster1. 作成申請K8s CCWorker-1 Worker-W… Master-1 Master-M…M = マスターノード数W = ワーカーノード数3. クラウドAPIの呼び出しhttps://github.com/argoproj/argo-cd/blob/master/docs/assets/argo.pnghttps://github.com/logosWatch2. Auto SyncK8s Objects4. SSH接続運⽤開始
© SAKURA internet Inc.社内Kubernetes基盤#仕組みさくらのクラウドクラスタ作成者Management ClusterWorkload Cluster1. 作成申請K8s CCWorker-1 Worker-W… Master-1 Master-M…M = マスターノード数W = ワーカーノード数3. クラウドAPIの呼び出しhttps://github.com/argoproj/argo-cd/blob/master/docs/assets/argo.pnghttps://github.com/logosWatch2. Auto SyncK8s Objects4. SSH接続運⽤開始ユーザはWeb UIを通じてクラスタ定義マニフェストを作成しGHEリポジトリにプッシュ基盤運⽤者のレビューが⼊った後、マージされる
© SAKURA internet Inc.社内Kubernetes基盤#仕組みさくらのクラウドクラスタ作成者Management ClusterWorkload Cluster1. 作成申請K8s CCWorker-1 Worker-W… Master-1 Master-M…M = マスターノード数W = ワーカーノード数3. クラウドAPIの呼び出しhttps://github.com/argoproj/argo-cd/blob/master/docs/assets/argo.pnghttps://github.com/logosWatch2. Auto SyncK8s Objects4. SSH接続運⽤開始ArgoCD Applicationも同様にGit管理されており、基盤運⽤者によって新規クラスタ⽤のAppが作成される
© SAKURA internet Inc.社内Kubernetes基盤#仕組みさくらのクラウドクラスタ作成者Management ClusterWorkload Cluster1. 作成申請K8s CCWorker-1 Worker-W… Master-1 Master-M…M = マスターノード数W = ワーカーノード数3. クラウドAPIの呼び出しhttps://github.com/argoproj/argo-cd/blob/master/docs/assets/argo.pnghttps://github.com/logosWatch2. Auto SyncK8s Objects4. SSH接続運⽤開始Cluster APIとさくらのクラウド⽤プロバイダが動作し、さくらのクラウド サーバやスイッチを作成Cluster APIの仕組みによりuserdataが提供されるので、kubeadm init/joinが実⾏されてクラスタが⽴ち上がる
© SAKURA internet Inc.社内Kubernetes基盤#仕組みさくらのクラウドクラスタ作成者Management ClusterWorkload Cluster1. 作成申請K8s CCWorker-1 Worker-W… Master-1 Master-M…M = マスターノード数W = ワーカーノード数3. クラウドAPIの呼び出しhttps://github.com/argoproj/argo-cd/blob/master/docs/assets/argo.pnghttps://github.com/logosWatch2. Auto SyncK8s Objects4. SSH接続運⽤開始コントローラ側でuserdataを編集し、クラスタ作成者がSSHできるように設定Kubectl等を利⽤してすぐに運⽤できるように
© SAKURA internet Inc.社内Kubernetes基盤#運⽤• Management ClusterではPrometheus Operatorを採⽤• node_exporterやkube-state-metricsをすぐに利⽤できる• PrometheusRuleリソースを定義して、アラートルールをGitで管理• 後々、slothを使ったPrometheusRuleの⾃動⽣成まで持っていきたい
© SAKURA internet Inc.社内Kubernetes基盤#運⽤• Management ClusterではPrometheus Operatorを採⽤• node_exporterやkube-state-metricsをすぐに利⽤できる• PrometheusRuleリソースを定義して、アラートルールをGitで管理• 後々、slothを使ったPrometheusRuleの⾃動⽣成まで持っていきたい• ArgoCDの初期パスワードは、⾃動的に再設定される• Adminパスワードを使っているユーザがいないようにする
© SAKURA internet Inc.社内Kubernetes基盤#運⽤• Management ClusterではPrometheus Operatorを採⽤• node_exporterやkube-state-metricsをすぐに利⽤できる• PrometheusRuleリソースを定義して、アラートルールをGitで管理• 後々、slothを使ったPrometheusRuleの⾃動⽣成まで持っていきたい• ArgoCDの初期パスワードは、⾃動的に再設定される• Adminパスワードを使っているユーザがいないようにする• クラウドAPI⽤トークンは、SealedSecretでセキュアに管理
© SAKURA internet Inc.社内Kubernetes基盤#運⽤• Management ClusterではPrometheus Operatorを採⽤• node_exporterやkube-state-metricsをすぐに利⽤できる• PrometheusRuleリソースを定義して、アラートルールをGitで管理• 後々、slothを使ったPrometheusRuleの⾃動⽣成まで持っていきたい• ArgoCDの初期パスワードは、⾃動的に再設定される• Adminパスワードを使っているユーザがいないようにする• クラウドAPI⽤トークンは、SealedSecretでセキュアに管理• ArgoCD CRDを使ってポリシー管理を実現
© SAKURA internet Inc.社内Kubernetes基盤#API監視Management Cluster Workload ClusterK8s CCCheckerhttps://github.com/prometheus/prometheus/blob/main/documentation/images/prometheus-logo.svg© Prometheus Authors 2014-2022 | Documentation Distributed under CC-BY-4.0K8s ObjectsAPIHealthCheckObjectkube-apiserverGET /readyz?verbose=true起動Export参照&更新
© SAKURA internet Inc.社内Kubernetes基盤#API監視Management Cluster Workload ClusterK8s CCCheckerhttps://github.com/prometheus/prometheus/blob/main/documentation/images/prometheus-logo.svg© Prometheus Authors 2014-2022 | Documentation Distributed under CC-BY-4.0K8s ObjectsAPIHealthCheckObjectkube-apiserverGET /readyz?verbose=true起動Export参照&更新監視対象のクラスタに対応した、APIHealthCheckリソースを作成しておく
© SAKURA internet Inc.社内Kubernetes基盤#API監視Management Cluster Workload ClusterK8s CCCheckerhttps://github.com/prometheus/prometheus/blob/main/documentation/images/prometheus-logo.svg© Prometheus Authors 2014-2022 | Documentation Distributed under CC-BY-4.0K8s ObjectsAPIHealthCheckObjectkube-apiserverGET /readyz?verbose=true起動Export参照&更新独⾃コントローラがCheckerコンテナを作成
© SAKURA internet Inc.社内Kubernetes基盤#API監視Management Cluster Workload ClusterK8s CCCheckerhttps://github.com/prometheus/prometheus/blob/main/documentation/images/prometheus-logo.svg© Prometheus Authors 2014-2022 | Documentation Distributed under CC-BY-4.0K8s ObjectsAPIHealthCheckObjectkube-apiserverGET /readyz?verbose=true起動Export参照&更新Checkerはreadyzエンドポイントにリクエストを送り、結果をリソースに書き込む
© SAKURA internet Inc.社内Kubernetes基盤#API監視Management Cluster Workload ClusterK8s CCCheckerhttps://github.com/prometheus/prometheus/blob/main/documentation/images/prometheus-logo.svg© Prometheus Authors 2014-2022 | Documentation Distributed under CC-BY-4.0K8s ObjectsAPIHealthCheckObjectkube-apiserverGET /readyz?verbose=true起動Export参照&更新Kubebuilder/controller-runtimeにより標準提供される、カスタムメトリクス公開機能でPrometheusから取得
© SAKURA internet Inc.社内Kubernetes基盤#API監視• 試験的に、サクッと作ってみた機能ではある
© SAKURA internet Inc.社内Kubernetes基盤#API監視• 試験的に、サクッと作ってみた機能ではある• ユーザクラスタでPrometheus Operator⼊れれば不要…?• ⼀⽅で、必須でほしい監視を実装しておくのは⼤事か• ユーザ側の作業を必要とせず、基盤としてほしい機能を⽤意しておくのは悪くない
© SAKURA internet Inc.社内Kubernetes基盤#API監視• 試験的に、サクッと作ってみた機能ではある• ユーザクラスタでPrometheus Operator⼊れれば不要…?• ⼀⽅で、必須でほしい監視を実装しておくのは⼤事か• ユーザ側の作業を必要とせず、基盤としてほしい機能を⽤意しておくのは悪くない• 基盤としてはPrometheus Federationをサポートする予定• ユーザがPrometheusメトリクスの⻑期保存問題を考えなくてよい
© SAKURA internet Inc.社内Kubernetes基盤#今後の展望• グローバルに疎通性を持つユーザクラスタのサポート• 現状、社内ネットワークに接続したクラスタのみサポート• ユースケース的に、インターネットからアクセスできるものもほしい
© SAKURA internet Inc.社内Kubernetes基盤#今後の展望• グローバルに疎通性を持つユーザクラスタのサポート• 現状、社内ネットワークに接続したクラスタのみサポート• ユースケース的に、インターネットからアクセスできるものもほしい• Veleroを採⽤した、クラスタのバックアップ機能の検討
© SAKURA internet Inc.社内Kubernetes基盤#今後の展望• グローバルに疎通性を持つユーザクラスタのサポート• 現状、社内ネットワークに接続したクラスタのみサポート• ユースケース的に、インターネットからアクセスできるものもほしい• Veleroを採⽤した、クラスタのバックアップ機能の検討• クラスタ基盤としてのSLI計測を考える• 何をSLOとすべきか?• sloth等の宣⾔的なSLO定義を実現
© SAKURA internet Inc.社内Kubernetes基盤#今後の展望• グローバルに疎通性を持つユーザクラスタのサポート• 現状、社内ネットワークに接続したクラスタのみサポート• ユースケース的に、インターネットからアクセスできるものもほしい• Veleroを採⽤した、クラスタのバックアップ機能の検討• クラスタ基盤としてのSLI計測を考える• 何をSLOとすべきか?• sloth等の宣⾔的なSLO定義を実現• Kubernetes採⽤のハードルが低くなるような導⼊活動• クラスタ構築の代⾏ではなく、⽀援
© SAKURA internet Inc.活動2SAKURA Kubernetes Operators Group
© SAKURA internet Inc.SAKURA-KOG#概要• 先述した⽬的を実現するために設⽴• Kubernetesに関する運⽤知⾒の共有場• プロダクトチームが運⽤上抱える悩みを相談する場所として• Kubernetesに対する関⼼向上を⾒込める場として
© SAKURA internet Inc.SAKURA-KOG#概要• 先述した⽬的を実現するために設⽴• Kubernetesに関する運⽤知⾒の共有場• プロダクトチームが運⽤上抱える悩みを相談する場所として• Kubernetesに対する関⼼向上を⾒込める場として• 発想: SREとして、仕組みだけでなく⽂化から改善したい• K8sに限らず、プロダクトチーム間で情報共有が少ないと感じる
© SAKURA internet Inc.SAKURA-KOG#概要• 先述した⽬的を実現するために設⽴• Kubernetesに関する運⽤知⾒の共有場• プロダクトチームが運⽤上抱える悩みを相談する場所として• Kubernetesに対する関⼼向上を⾒込める場として• 発想: SREとして、仕組みだけでなく⽂化から改善したい• K8sに限らず、プロダクトチーム間で情報共有が少ないと感じる• 実際に業務で運⽤していなくても参加できる• さくらインターネット社内全体にKubernetesの話題が⽣まれるのを期待
© SAKURA internet Inc.SAKURA-KOG#活動• Kubernetesの情報を社内ドキュメントに蓄積• Kubernetesコミュニティの最新情報をキャッチアップして共有• Official BlogやRelease Noteのレポート• その他、トピックを持ち寄って• 定期的にチームの運⽤状況を共有しあうところまでが理想
© SAKURA internet Inc.おわりに
© SAKURA internet Inc.おわりに• SRE室はシステム運⽤の現状を調査し、改善に取り組んでいます• 運⽤効率化・安定化に加えて、⽂化の改善までを⽬指しています• Kubernetes運⽤には多くのペインがつきまとう• プロダクトチームそれぞれが独⾃にクラスタ管理• 特にKubernetesの世界は進化が早い• 迅速なキャッチアップと効率化への継続的な取り組みが必要不可⽋
© SAKURA internet Inc.参考資料
© SAKURA internet Inc.• 社内のKubernetesクラスタ運⽤を効率化する基盤について• プロジェクトの経緯や進め⽅について詳しく書かれたブログ• The Cluster API Book• Cluster APIのプロバイダ実装に関連した仕様が勉強できる• https://github.com/kubernetes-sigs/cluster-api• なんだかんだCluster APIとの連携上、コード読んだほうが早い参考資料