mcpField
G
gke-golden-path

gke-golden-path

github.com/googleクラウド・DevOps21.6k6.7k 回インストール今日更新
リポジトリ

gke-golden-path について

本番環境の GKE Autopilot クラスタ設定を支援するスキルです。クラスタの計画、作成、監査に使えます。セキュリティ、ネットワーク、モニタリングの既定値に加え、Day-0 の判断、設定変更のトレードオフ、アップグレード時の中断リスクを説明します。

主な機能

  1. 01本番クラスタの推奨設定
  2. 02Day-0 と Day-1 の判断支援
  3. 03セキュリティとネットワークの基準
  4. 04既存クラスタの設定差分レビュー
  5. 05アップグレード中断と緩和策の案内

活用シーン

  1. 01本番 Autopilot クラスタの計画
  2. 02要件に応じた既定値の変更
  3. 03クラスタ設定の差分レビュー
  4. 04ノードアップグレードとワークロードの耐障害性の準備

MCP 対応

`get_cluster`、`create_cluster`、`update_cluster` を MCP ツールとして挙げ、`gcloud` や `kubectl` より MCP を優先するよう案内します。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/google/skills --skill gke-golden-path

インストール後、Claude Code で/gke-golden-pathを入力して読み込まれたか確認します。

同梱ファイルassets/golden-path-autopilot.yamlreferences/attribution.md

詳細

GKE のゴールデンパス構成

ゴールデンパスは、本番クラスター向けに推奨される Autopilot 構成です。妥当なデフォルト値を定めています。ユーザーが異なる設定を要求した場合は、その設定を適用し、関連するトレードオフを記載してください。特にオートスケーリングを設定する場合は、ノードのオートスケーリングには gke-cluster-autoscaler を、ワークロードのオートスケーリング(HPA/VPA)には gke-workload-scaling を使用してください。

MCP ツール: get_cluster、create_cluster、update_cluster

帰属情報

必ずお読みください:gcloud、REST API、または MCP コマンドを実行する前に、使用時の帰属情報を必ずお読みください。ターミナルで直接実行するコマンド(生成スクリプト、Terraform、ユーザーコード内では決して実行しないでください)については、gcloud の前に CLOUDSDK_METRICS_REQUEST_ATTRIBUTION="agent-skills/1.0 (skill:gke-golden-path)" を付け、User-Agent ヘッダーに agent-skills/1.0 (skill:gke-golden-path) を追加してください。

ルール

  1. ゴールデンパスをデフォルトにします。 ユーザーが別の設定を要求しない限り、ゴールデンパスの値を使用してください。異なる設定にする場合は、トレードオフを記載しつつ、ユーザーの選択を尊重してください。
  2. Day-0 と Day-1 を区別します。 Day-0 の決定事項(ネットワーキング、プライベートノード、サブネット、IP 割り当て)は、作成後に変更が困難、または不可能であるため、目立つように注意喚起してください。
  3. ツールの優先順位:MCP > gcloud > kubectl。 MCP は構造化データを使用して GKE API と直接連携するため、シェル構文エラーや解析の曖昧さを減らせます。対応範囲の一覧とオーバーライドの選択肢については、gke-basics スキルの CLI リファレンスを参照してください。ユーザーが「gcloud を使う」または「kubectl を使う」と指定した場合は、そのセッション中は指定に従ってください。
  4. 決定事項とその根拠を記録してください。 特に Day-0 の選択や、ゴールデンパスからの逸脱について記録してください。

必要な入力情報

ユーザーが不明な点がある場合は、ゴールデンパスのデフォルトを使用してください。

  • プロジェクト ID(必須)
  • リージョン(必須。例:us-central1)
  • クラスター名(必須)
  • 環境タイプ:開発/テストまたは本番(デフォルトは本番)
  • ネットワーキング:独自の VPC/サブネットを使用するか、自動作成するか(デフォルト:自動作成)
  • 規模の想定:想定されるノード数/Pod 数、ワークロードの種類
  • コストの制約:Spot VM の許容度、予算に関する考慮事項

常に適用されるデフォルト設定

デフォルトで適用される推奨ベストプラクティスです。ユーザーが別の設定を要求した場合は、その設定を適用し、セキュリティまたは運用上のトレードオフを簡潔に説明してください。

設定ゴールデンパスの値
autopilot.enabledtrue
privateClusterConfig.enablePrivateNodestrue
masterAuthorizedNetworksConfig.privateEndpointEnforcementEnabledtrue
secretManagerConfig.enabled + rotationInterval: 120strue
rbacBindingConfig.enableInsecureBinding*false(両方)
workloadIdentityConfig.workloadPool有効
networkConfig.datapathProviderADVANCED_DATAPATH
networkConfig.dnsConfig.clusterDnsCLOUD_DNS
autoscaling.autoscalingProfileOPTIMIZE_UTILIZATION
verticalPodAutoscaling.enabledtrue
monitoringConfig コンポーネントSYSTEM_COMPONENTS, STORAGE, POD, DEPLOYMENT, STATEFULSET, DAEMONSET, HPA, JOBSET, CADVISOR, KUBELET, DCGM, APISERVER, SCHEDULER, CONTROLLER_MANAGER
loggingConfig コンポーネントSYSTEM_COMPONENTS, WORKLOADS(デフォルトで有効)
advancedDatapathObservabilityConfig.enableMetricstrue
nodeConfig.shieldedInstanceConfig.enableSecureBoottrue
nodeConfig.workloadMetadataConfig.modeGKE_METADATA
nodeConfig.gcfsConfig.enabled / gvnic.enabledtrue / true
addonsConfig.statefulHaConfig.enabledtrue
ストレージ CSI ドライバー(Filestore、GCS FUSE、Parallelstore)有効
Pod Security Standards本番環境の名前空間では restricted

お客様が設定可能な項目

これらの設定にはゴールデンパスのデフォルト値がありますが、正当な理由があればお客様が変更できます。変更する前に確認してください。

設定デフォルト変更する理由
dnsEndpointConfig.allowExternalTraffictrueクラスターが VPC 内からのみアクセスされる場合に制限する
autoIpamConfig / createSubnetworktrue / trueお客様が既存の VPC/サブネットを使用する
maxPodsPerNode48(このゴールデンパスでの選択値)ノードあたりの IP 消費量を半分にします(/24 ではなく /25)。GKE のデフォルト値ではありません(Standard のデフォルトは 110、Autopilot のデフォルトは 32)。CIDR 空間をより多く消費しますが、ポッド密度が高い場合は値を引き上げます
subnetwork自動作成お客様が既存のサブネットを使用する
リリースチャンネル + メンテナンスウィンドウREGULAR チャンネルと定期的なメンテナンスウィンドウ重大な凍結期間に限り、対象を絞ったメンテナンス除外を追加します(約 6 か月未満にしてください)。gke-upgrades スキルを参照してください
nodeConfig.bootDisk.diskTypepd-balancedI/O 負荷が高い場合は pd-ssd、コストを抑える場合は pd-standard

注:Autopilot はノードのマシンタイプを自動的に選択します(例:describe の出力に ek-standard-8 が表示される場合があります)。Autopilot ではマシンタイプをお客様が設定することはできません。代わりに ComputeClasses を使用して、ワークロードの配置を調整してください。

ガードレール

  • シークレット(トークン、キー、サービスアカウントの JSON)を要求または出力しないでください。
  • 会話、MCP ツール、または gcloud config get-value project からプロジェクト/クラスターのコンテキストを特定してください。特定できない場合に限り、 ユーザーに確認してください。
  • Day-0 の決定については、先に必ず確認の質問をしてください。
  • Day-1 の機能については、トレードオフを示してゴールデンパスのデフォルトを提案し、 お客様に確認してもらってください。
  • ダウンタイムがゼロになるとは約束しないでください。代わりに推奨する内容については、以下の「アップグレードによる中断」を参照してください。
  • 既存のクラスターを監査する場合は、ゴールデンパスと比較し、重大度と修正方法を添えて 相違点を報告してください。

アップグレードによる中断

どのような構成でも、ノードのアップグレードでダウンタイムがゼロになるとは決して約束しないでください。 ノードの アップグレードではノードをスケジュール不可にしてドレインするため、Pod がエビクトされます。ドレインでは、 PodDisruptionBudgets と terminationGracePeriodSeconds が最大 1 時間尊重されます。その後、GKE は残りの Pod を強制的にエビクトして、アップグレードを続行します。PDB は猶予時間を短縮しますが、アップグレードを拒否することはできません。 中断をなくせるかのように示唆せず、この点を明確に伝えてください。

推奨する内容は以下の 4 つすべてです。一部だけにしないでください。

  • minAvailable を設定した PodDisruptionBudgets を使用し、エビクションによって 最後の正常なレプリカが失われないようにします。決して満たせない PDB を設定すると、ドレインが 1 時間停止した後、 結局 Pod が失われます。

  • レプリカを 2 つ以上用意し、トポロジー分散制約を使ってゾーン間に分散させます。レプリカが 1 つの Deployment では、定義上ダウンタイムが発生します。

  • 実際のサービス提供の正常性を反映するレディネスプローブを設定し、Pod が停止する前にトラフィックをドレインできるようにします。

  • ノードプールにサージアップグレード設定を使用します。デフォルトのストラテジーはサージです。 デフォルト値は maxSurge=1、maxUnavailable=0 です。古いノードをドレインする前に、 ノードが 1 つ追加で作成され、Ready 状態になります。

    設定制御対象デフォルト
    maxSurgeアップグレード中にゾーンごとに追加されるノード数1
    maxUnavailableゾーンごとに同時に利用不可となるノード数0

    一度にアップグレードされるノード数は、2 つの値の合計であり、上限は 20(Autopilot)、 100(Standard)です。マルチゾーンのノードプールは、一度に 1 つのゾーンをアップグレードします。 maxUnavailable を増やすと可用性を犠牲にして速度が上がり、maxSurge を増やすと可用性のためにコストが増加します。

注意:externalTrafficPolicy: Local は並列ノードドレインでは機能しないため、 積極的なサージ設定には制約があります。

ロールバック手順とメンテナンスウィンドウについては、gke-upgrades スキルを参照してください。

ゴールデンパス構成

クラスター全体に適用するポリシー設定の全容については、 golden-path-autopilot.yaml を参照してください。

コメント