Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Activities about Kubernetes operation improveme...

Drumato
December 16, 2022

Activities about Kubernetes operation improvements as an SRE

社内のKubernetesクラスタ運用状況を調査し、それを改善する取り組みについて発表しました。

- Kubernetesクラスタ基盤の開発
- Kubernetes運用知見の集約と、関心向上文化の導入

さくらのテックランチ vol.1 ~cloud-initとk8sのフィオレンティーナ~
https://sakura-tokyo.connpass.com/event/266667/
アーカイブ: https://youtu.be/WaKq_xz6iq4

Drumato

December 16, 2022
Tweet

More Decks by Drumato

Other Decks in Technology

Transcript

  1. © SAKURA internet Inc. ⾃⼰紹介#プロフィール • ⽒名: 菅原 ⼤和 •

    ハンドル: Drumato • Drum + (Yam)ato = Drumato • 2022年 新卒⼊社 • 興味分野 • Kubernetes • SRE • SDN • その他新しくて⾯⽩いこと全般
  2. © SAKURA internet Inc. ⾃⼰紹介#経歴 期間 所属 2019/04-2020/01 GMOペパボ株式会社 プラットフォーム事業部

    学⽣アルバイト 2019/04-2020/03 SecHack365 2019 Trainee 2020/04-2021/04 Cybozu Labs Youth 第10期⽣ 2021/04-2022/03 LINE株式会社 Verda室 ネットワーク開発チーム アルバイト 2022/04- さくらインターネット株式会社 クラウド事業本部 SRE室 2022年新卒
  3. © SAKURA internet Inc. • SRE室とは • 現在の体制 • SRE室のミッション/ビジョン/バリュー

    • 社内のKubernetes運⽤状況 • 本プロジェクトの⽬的 • 活動1: SAKURA Kubernetes Cluster Platformの開発 • 仕組み • 運⽤上の⼯夫点 • 活動2: SAKURA Kubernetes Operators Groupの発⾜ • 今後の展望 本⽇のお話
  4. © SAKURA internet Inc. SRE室とは • 2022/07に設⽴された、⽐較的新しい部署 ミッション •クラウドサービス の信頼性を⾼め、

    お客様/社会に貢献 する ビジョン •社内にSRE⽂化とそ の実践を広め、お 客様に価値提供す る バリュー •決めごとを作るの ではなく、⼀緒に” ⼿を動かす” •開発・運⽤チームと 綿密にコミュニ ケーションをとる •You built it, you run it
  5. © SAKURA internet Inc. SRE室とは • 基本的には、Google SREのパターンをリスペクトしている • 各プロダクトチームと密に連携し、運⽤改善を横断的に⽀援

    • SRE室謹製のツール/基盤を利⽤してもらえるように • 監視ネイティブな⽂化を広めるための活動
  6. © SAKURA internet Inc. SRE室とは • 基本的には、Google SREのパターンをリスペクトしている • 各プロダクトチームと密に連携し、運⽤改善を横断的に⽀援

    • SRE室謹製のツール/基盤を利⽤してもらえるように • 監視ネイティブな⽂化を広めるための活動 • Center of Practiceとしての側⾯も意識 • 各プロダクトチームに運⽤のハンドルは握ってほしい • その上で、ツール/基盤の仕組みを使ってほしい
  7. © SAKURA internet Inc. SRE室とは • 基本的には、Google SREのパターンをリスペクトしている • 各プロダクトチームと密に連携し、運⽤改善を横断的に⽀援

    • SRE室謹製のツール/基盤を利⽤してもらえるように • 監視ネイティブな⽂化を広めるための活動 • Center of Practiceとしての側⾯も意識 • 各プロダクトチームに運⽤のハンドルは握ってほしい • その上で、ツール/基盤の仕組みを使ってほしい • 現在は上記の世界観を⽬指し、少しずつ連携を強めている段階
  8. © SAKURA internet Inc. SRE室とは • 基本的には、Google SREのパターンをリスペクトしている • 各プロダクトチームと密に連携し、運⽤改善を横断的に⽀援

    • SRE室謹製のツール/基盤を利⽤してもらえるように • 監視ネイティブな⽂化を広めるための活動 • Center of Practiceとしての側⾯も意識 • 各プロダクトチームに運⽤のハンドルは握ってほしい • その上で、ツール/基盤の仕組みを使ってほしい • 現在は上記の世界観を⽬指し、少しずつ連携を強めている段階 • クラウドサービスに対する機能追加も実施 1. クラウドDNSに対する⽔責め攻撃の対策実施 2. オートスケール機能の提供
  9. © SAKURA internet Inc. さくらとKubernetes • 社内のKubernetes運⽤を改善するべく、現状を調査 • 現状1: いくつかのチームがKubernetesを採⽤している

    • 現状2: 運⽤上深刻な課題がいくつか⾒つかった • 課題1: 知⾒が不⼗分で、トラシューに時間がかかる • 課題2: プラクティスがわからず、意思決定が⾏えない • 課題3: 採⽤チーム間で知⾒共有が⾏われていない
  10. © SAKURA internet Inc. さくらとKubernetes • 社内のKubernetes運⽤を改善するべく、現状を調査 • 現状1: いくつかのチームがKubernetesを採⽤している

    • 現状2: 運⽤上深刻な課題がいくつか⾒つかった • 課題1: 知⾒が不⼗分で、トラシューに時間がかかる • 課題2: プラクティスがわからず、意思決定が⾏えない • 課題3: 採⽤チーム間で知⾒共有が⾏われていない • 各チームが探り探り運⽤している • GKEと異なりベアメタルクラスタ運⽤ • 社内のKubernetes知⾒不⾜
  11. © SAKURA internet Inc. さくらとKubernetes • 社内のKubernetes運⽤を改善するべく、現状を調査 • 現状1: いくつかのチームがKubernetesを採⽤している

    • 現状2: 運⽤上深刻な課題がいくつか⾒つかった • 課題1: 知⾒が不⼗分で、トラシューに時間がかかる • 課題2: プラクティスがわからず、意思決定が⾏えない • 課題3: 採⽤チーム間で知⾒共有が⾏われていない Kubernetes採⽤タイミングごとに、 同様の調査(e.g., CNIプラグイン)が 何度も⾏われている
  12. © SAKURA internet Inc. さくらとKubernetes • 社内のKubernetes運⽤を改善するべく、現状を調査 • 現状1: いくつかのチームがKubernetesを採⽤している

    • 現状2: 運⽤上深刻な課題がいくつか⾒つかった • 課題1: 知⾒が不⼗分で、トラシューに時間がかかる • 課題2: プラクティスがわからず、意思決定が⾏えない • 課題3: 採⽤チーム間で知⾒共有が⾏われていない • 現状3: 採⽤したいが、技術的ハードルから断念しているチームも
  13. © SAKURA internet Inc. 本プロジェクトの⽬的 1. Kubernetesクラスタ運⽤をサポートする • あくまでも「サポート」であり、「代⾏」ではない •

    特にSREネイティブな運⽤を⾏えるようにしたい 2. 社内のKubernetesに関する運⽤知⾒の集約 • 情報共有を⾏う場(ドキュメント/コミュニケーション)の整備
  14. © SAKURA internet Inc. 本プロジェクトの⽬的 1. Kubernetesクラスタ運⽤をサポートする • あくまでも「サポート」であり、「代⾏」ではない •

    特にSREネイティブな運⽤を⾏えるようにしたい 2. 社内のKubernetesに関する運⽤知⾒の集約 • 情報共有を⾏う場(ドキュメント/コミュニケーション)の整備 3. 社内のKubernetes関⼼向上 • 技術選定の上でKubernetesが採⽤されない、ということはままある • とはいえ、選択肢となるレベルには、社内に浸透してほしい
  15. © SAKURA internet Inc. 社内Kubernetes基盤#概要 • 先述した⽬的を実現するために開発 • プロダクトチームにとってのKubernetesクラスタ運⽤コストを低減 •

    プロダクトチーム間の認識を⾼める • お互いに運⽤状況が把握しあえるような状況になっていること • それらがプラクティカルに、システムで管理されていること
  16. © SAKURA internet Inc. 社内Kubernetes基盤#概要 • 先述した⽬的を実現するために開発 • プロダクトチームにとってのKubernetesクラスタ運⽤コストを低減 •

    プロダクトチーム間の認識を⾼める • お互いに運⽤状況が把握しあえるような状況になっていること • それらがプラクティカルに、システムで管理されていること • プロジェクトメンバーは2⼈ • 私: プロジェクト進⾏、検討、設計、実装、テスト、導⼊、運⽤ • 稲垣さん(@hum_op_dev): 技術的相談、ユーザ視点のフィードバック
  17. © SAKURA internet Inc. 社内Kubernetes基盤#概要 • 先述した⽬的を実現するために開発 • プロダクトチームにとってのKubernetesクラスタ運⽤コストを低減 •

    プロダクトチーム間の認識を⾼める • お互いに運⽤状況が把握しあえるような状況になっていること • それらがプラクティカルに、システムで管理されていること • プロジェクトメンバーは2⼈ • 私: プロジェクト進⾏、検討、設計、実装、テスト、導⼊、運⽤ • 稲垣さん(@hum_op_dev): 技術的相談、ユーザ視点のフィードバック • 現在いくつかのユーザに使っていただいている
  18. © SAKURA internet Inc. 社内Kubernetes基盤#概要 • 先述した⽬的を実現するために開発 • プロダクトチームにとってのKubernetesクラスタ運⽤コストを低減 •

    プロダクトチーム間の認識を⾼める • お互いに運⽤状況が把握しあえるような状況になっていること • それらがプラクティカルに、システムで管理されていること • プロジェクトメンバーは2⼈ • 私: プロジェクト進⾏、検討、設計、実装、テスト、導⼊、運⽤ • 稲垣さん(@hum_op_dev): 技術的相談、ユーザ視点のフィードバック • 現在いくつかのユーザに使っていただいている • 基盤運⽤者は私⼀⼈ • 属⼈化を極⼒排除し、スケールする運⽤を⼼がけている • いつでもチームメンバーが増えることを想定している
  19. © SAKURA internet Inc. 社内Kubernetes基盤#機能 • クラスタマニフェストのデプロイで、⾃動的にクラスタが作成 • ユーザはクラスタの⽀配権を持つ •

    ノードにSSH接続し、運⽤開始できる • kube-vipを採⽤している • ARPモードで動作し、マスターノードのフェイルオーバが効く • Service Type LoadBalancerもデフォルトで対応
  20. © SAKURA internet Inc. 社内Kubernetes基盤#機能 • クラスタマニフェストのデプロイで、⾃動的にクラスタが作成 • ユーザはクラスタの⽀配権を持つ •

    ノードにSSH接続し、運⽤開始できる • kube-vipを採⽤している • ARPモードで動作し、マスターノードのフェイルオーバが効く • Service Type LoadBalancerもデフォルトで対応 • ArgoCDでクラスタ状態を確認できる
  21. © SAKURA internet Inc. 社内Kubernetes基盤#機能 • クラスタマニフェストのデプロイで、⾃動的にクラスタが作成 • ユーザはクラスタの⽀配権を持つ •

    ノードにSSH接続し、運⽤開始できる • kube-vipを採⽤している • ARPモードで動作し、マスターノードのフェイルオーバが効く • Service Type LoadBalancerもデフォルトで対応 • ArgoCDでクラスタ状態を確認できる • スケールアウトに対応している • .spec.replicasを上げると、マスター/ワーカーノードを増やせる
  22. © SAKURA internet Inc. 社内Kubernetes基盤#機能 • クラスタマニフェストのデプロイで、⾃動的にクラスタが作成 • ユーザはクラスタの⽀配権を持つ •

    ノードにSSH接続し、運⽤開始できる • kube-vipを採⽤している • ARPモードで動作し、マスターノードのフェイルオーバが効く • Service Type LoadBalancerもデフォルトで対応 • ArgoCDでクラスタ状態を確認できる • スケールアウトに対応している • .spec.replicasを上げると、マスター/ワーカーノードを増やせる • クラスタのAPI監視をデフォルトで提供(後述)
  23. © SAKURA internet Inc. 社内Kubernetes基盤#仕組み さくらのクラウド クラスタ作成者 Management Cluster Workload

    Cluster 1. 作成申請 K8s CC Worker-1 Worker-W … Master-1 Master-M … M = マスターノード数 W = ワーカーノード数 3. クラウドAPI の呼び出し https://github.com/argoproj/argo-cd/blob/master/docs/assets/argo.png https://github.com/logos Watch 2. Auto Sync K8s Objects 4. SSH接続 運⽤開始
  24. © SAKURA internet Inc. 社内Kubernetes基盤#仕組み さくらのクラウド クラスタ作成者 Management Cluster Workload

    Cluster 1. 作成申請 K8s CC Worker-1 Worker-W … Master-1 Master-M … M = マスターノード数 W = ワーカーノード数 3. クラウドAPI の呼び出し https://github.com/argoproj/argo-cd/blob/master/docs/assets/argo.png https://github.com/logos Watch 2. Auto Sync K8s Objects 4. SSH接続 運⽤開始 ユーザはWeb UIを通じて クラスタ定義マニフェストを作成し GHEリポジトリにプッシュ 基盤運⽤者のレビューが⼊った後、 マージされる
  25. © SAKURA internet Inc. 社内Kubernetes基盤#仕組み さくらのクラウド クラスタ作成者 Management Cluster Workload

    Cluster 1. 作成申請 K8s CC Worker-1 Worker-W … Master-1 Master-M … M = マスターノード数 W = ワーカーノード数 3. クラウドAPI の呼び出し https://github.com/argoproj/argo-cd/blob/master/docs/assets/argo.png https://github.com/logos Watch 2. Auto Sync K8s Objects 4. SSH接続 運⽤開始 ArgoCD Applicationも同様にGit管理されており、 基盤運⽤者によって新規クラスタ⽤のAppが作成される
  26. © SAKURA internet Inc. 社内Kubernetes基盤#仕組み さくらのクラウド クラスタ作成者 Management Cluster Workload

    Cluster 1. 作成申請 K8s CC Worker-1 Worker-W … Master-1 Master-M … M = マスターノード数 W = ワーカーノード数 3. クラウドAPI の呼び出し https://github.com/argoproj/argo-cd/blob/master/docs/assets/argo.png https://github.com/logos Watch 2. Auto Sync K8s Objects 4. SSH接続 運⽤開始 Cluster APIとさくらのクラウド⽤プロバイダが動作し、 さくらのクラウド サーバやスイッチを作成 Cluster APIの仕組みによりuserdataが提供されるので、 kubeadm init/joinが実⾏されてクラスタが⽴ち上がる
  27. © SAKURA internet Inc. 社内Kubernetes基盤#仕組み さくらのクラウド クラスタ作成者 Management Cluster Workload

    Cluster 1. 作成申請 K8s CC Worker-1 Worker-W … Master-1 Master-M … M = マスターノード数 W = ワーカーノード数 3. クラウドAPI の呼び出し https://github.com/argoproj/argo-cd/blob/master/docs/assets/argo.png https://github.com/logos Watch 2. Auto Sync K8s Objects 4. SSH接続 運⽤開始 コントローラ側でuserdataを編集し、 クラスタ作成者がSSHできるように設定 Kubectl等を利⽤してすぐに運⽤できるように
  28. © SAKURA internet Inc. 社内Kubernetes基盤#運⽤ • Management ClusterではPrometheus Operatorを採⽤ •

    node_exporterやkube-state-metricsをすぐに利⽤できる • PrometheusRuleリソースを定義して、アラートルールをGitで管理 • 後々、slothを使ったPrometheusRuleの⾃動⽣成まで持っていきたい
  29. © SAKURA internet Inc. 社内Kubernetes基盤#運⽤ • Management ClusterではPrometheus Operatorを採⽤ •

    node_exporterやkube-state-metricsをすぐに利⽤できる • PrometheusRuleリソースを定義して、アラートルールをGitで管理 • 後々、slothを使ったPrometheusRuleの⾃動⽣成まで持っていきたい • ArgoCDの初期パスワードは、⾃動的に再設定される • Adminパスワードを使っているユーザがいないようにする
  30. © SAKURA internet Inc. 社内Kubernetes基盤#運⽤ • Management ClusterではPrometheus Operatorを採⽤ •

    node_exporterやkube-state-metricsをすぐに利⽤できる • PrometheusRuleリソースを定義して、アラートルールをGitで管理 • 後々、slothを使ったPrometheusRuleの⾃動⽣成まで持っていきたい • ArgoCDの初期パスワードは、⾃動的に再設定される • Adminパスワードを使っているユーザがいないようにする • クラウドAPI⽤トークンは、SealedSecretでセキュアに管理
  31. © SAKURA internet Inc. 社内Kubernetes基盤#運⽤ • Management ClusterではPrometheus Operatorを採⽤ •

    node_exporterやkube-state-metricsをすぐに利⽤できる • PrometheusRuleリソースを定義して、アラートルールをGitで管理 • 後々、slothを使ったPrometheusRuleの⾃動⽣成まで持っていきたい • ArgoCDの初期パスワードは、⾃動的に再設定される • Adminパスワードを使っているユーザがいないようにする • クラウドAPI⽤トークンは、SealedSecretでセキュアに管理 • ArgoCD CRDを使ってポリシー管理を実現
  32. © SAKURA internet Inc. 社内Kubernetes基盤#API監視 Management Cluster Workload Cluster K8s

    CC Checker https://github.com/prometheus/prometheus/blob/main/documentation/images/prometheus-logo.svg © Prometheus Authors 2014-2022 | Documentation Distributed under CC-BY-4.0 K8s Objects APIHealthCheck Object kube- apiserver GET /readyz?verbose=true 起動 Export 参照&更新
  33. © SAKURA internet Inc. 社内Kubernetes基盤#API監視 Management Cluster Workload Cluster K8s

    CC Checker https://github.com/prometheus/prometheus/blob/main/documentation/images/prometheus-logo.svg © Prometheus Authors 2014-2022 | Documentation Distributed under CC-BY-4.0 K8s Objects APIHealthCheck Object kube- apiserver GET /readyz?verbose=true 起動 Export 参照&更新 監視対象のクラスタに対応した、 APIHealthCheckリソースを作成しておく
  34. © SAKURA internet Inc. 社内Kubernetes基盤#API監視 Management Cluster Workload Cluster K8s

    CC Checker https://github.com/prometheus/prometheus/blob/main/documentation/images/prometheus-logo.svg © Prometheus Authors 2014-2022 | Documentation Distributed under CC-BY-4.0 K8s Objects APIHealthCheck Object kube- apiserver GET /readyz?verbose=true 起動 Export 参照&更新 独⾃コントローラがCheckerコンテナを作成
  35. © SAKURA internet Inc. 社内Kubernetes基盤#API監視 Management Cluster Workload Cluster K8s

    CC Checker https://github.com/prometheus/prometheus/blob/main/documentation/images/prometheus-logo.svg © Prometheus Authors 2014-2022 | Documentation Distributed under CC-BY-4.0 K8s Objects APIHealthCheck Object kube- apiserver GET /readyz?verbose=true 起動 Export 参照&更新 Checkerはreadyzエンドポイントにリクエストを送り、 結果をリソースに書き込む
  36. © SAKURA internet Inc. 社内Kubernetes基盤#API監視 Management Cluster Workload Cluster K8s

    CC Checker https://github.com/prometheus/prometheus/blob/main/documentation/images/prometheus-logo.svg © Prometheus Authors 2014-2022 | Documentation Distributed under CC-BY-4.0 K8s Objects APIHealthCheck Object kube- apiserver GET /readyz?verbose=true 起動 Export 参照&更新 Kubebuilder/controller-runtimeにより標準提供される、 カスタムメトリクス公開機能でPrometheusから取得
  37. © SAKURA internet Inc. 社内Kubernetes基盤#API監視 • 試験的に、サクッと作ってみた機能ではある • ユーザクラスタでPrometheus Operator⼊れれば不要…?

    • ⼀⽅で、必須でほしい監視を実装しておくのは⼤事か • ユーザ側の作業を必要とせず、基盤としてほしい機能を⽤意しておくのは悪くない
  38. © SAKURA internet Inc. 社内Kubernetes基盤#API監視 • 試験的に、サクッと作ってみた機能ではある • ユーザクラスタでPrometheus Operator⼊れれば不要…?

    • ⼀⽅で、必須でほしい監視を実装しておくのは⼤事か • ユーザ側の作業を必要とせず、基盤としてほしい機能を⽤意しておくのは悪くない • 基盤としてはPrometheus Federationをサポートする予定 • ユーザがPrometheusメトリクスの⻑期保存問題を考えなくてよい
  39. © SAKURA internet Inc. 社内Kubernetes基盤#今後の展望 • グローバルに疎通性を持つユーザクラスタのサポート • 現状、社内ネットワークに接続したクラスタのみサポート •

    ユースケース的に、インターネットからアクセスできるものもほしい • Veleroを採⽤した、クラスタのバックアップ機能の検討
  40. © SAKURA internet Inc. 社内Kubernetes基盤#今後の展望 • グローバルに疎通性を持つユーザクラスタのサポート • 現状、社内ネットワークに接続したクラスタのみサポート •

    ユースケース的に、インターネットからアクセスできるものもほしい • Veleroを採⽤した、クラスタのバックアップ機能の検討 • クラスタ基盤としてのSLI計測を考える • 何をSLOとすべきか? • sloth等の宣⾔的なSLO定義を実現
  41. © SAKURA internet Inc. 社内Kubernetes基盤#今後の展望 • グローバルに疎通性を持つユーザクラスタのサポート • 現状、社内ネットワークに接続したクラスタのみサポート •

    ユースケース的に、インターネットからアクセスできるものもほしい • Veleroを採⽤した、クラスタのバックアップ機能の検討 • クラスタ基盤としてのSLI計測を考える • 何をSLOとすべきか? • sloth等の宣⾔的なSLO定義を実現 • Kubernetes採⽤のハードルが低くなるような導⼊活動 • クラスタ構築の代⾏ではなく、⽀援
  42. © SAKURA internet Inc. SAKURA-KOG#概要 • 先述した⽬的を実現するために設⽴ • Kubernetesに関する運⽤知⾒の共有場 •

    プロダクトチームが運⽤上抱える悩みを相談する場所として • Kubernetesに対する関⼼向上を⾒込める場として
  43. © SAKURA internet Inc. SAKURA-KOG#概要 • 先述した⽬的を実現するために設⽴ • Kubernetesに関する運⽤知⾒の共有場 •

    プロダクトチームが運⽤上抱える悩みを相談する場所として • Kubernetesに対する関⼼向上を⾒込める場として • 発想: SREとして、仕組みだけでなく⽂化から改善したい • K8sに限らず、プロダクトチーム間で情報共有が少ないと感じる
  44. © SAKURA internet Inc. SAKURA-KOG#概要 • 先述した⽬的を実現するために設⽴ • Kubernetesに関する運⽤知⾒の共有場 •

    プロダクトチームが運⽤上抱える悩みを相談する場所として • Kubernetesに対する関⼼向上を⾒込める場として • 発想: SREとして、仕組みだけでなく⽂化から改善したい • K8sに限らず、プロダクトチーム間で情報共有が少ないと感じる
  45. © SAKURA internet Inc. SAKURA-KOG#概要 • 先述した⽬的を実現するために設⽴ • Kubernetesに関する運⽤知⾒の共有場 •

    プロダクトチームが運⽤上抱える悩みを相談する場所として • Kubernetesに対する関⼼向上を⾒込める場として • 発想: SREとして、仕組みだけでなく⽂化から改善したい • K8sに限らず、プロダクトチーム間で情報共有が少ないと感じる • 実際に業務で運⽤していなくても参加できる • さくらインターネット社内全体にKubernetesの話題が⽣まれるのを期待
  46. © SAKURA internet Inc. SAKURA-KOG#活動 • Kubernetesの情報を社内ドキュメントに蓄積 • Kubernetesコミュニティの最新情報をキャッチアップして共有 •

    Official BlogやRelease Noteのレポート • その他、トピックを持ち寄って • 定期的にチームの運⽤状況を共有しあうところまでが理想
  47. © SAKURA internet Inc. おわりに • SRE室はシステム運⽤の現状を調査し、改善に取り組んでいます • 運⽤効率化・安定化に加えて、⽂化の改善までを⽬指しています •

    Kubernetes運⽤には多くのペインがつきまとう • プロダクトチームそれぞれが独⾃にクラスタ管理 • 特にKubernetesの世界は進化が早い • 迅速なキャッチアップと効率化への継続的な取り組みが必要不可⽋
  48. © SAKURA internet Inc. • 社内のKubernetesクラスタ運⽤を効率化する基盤について • プロジェクトの経緯や進め⽅について詳しく書かれたブログ • The

    Cluster API Book • Cluster APIのプロバイダ実装に関連した仕様が勉強できる • https://github.com/kubernetes-sigs/cluster-api • なんだかんだCluster APIとの連携上、コード読んだほうが早い 参考資料