gke-golden-path について
本番環境の GKE Autopilot クラスタ設定を支援するスキルです。クラスタの計画、作成、監査に使えます。セキュリティ、ネットワーク、モニタリングの既定値に加え、Day-0 の判断、設定変更のトレードオフ、アップグレード時の中断リスクを説明します。
主な機能
- 01本番クラスタの推奨設定
- 02Day-0 と Day-1 の判断支援
- 03セキュリティとネットワークの基準
- 04既存クラスタの設定差分レビュー
- 05アップグレード中断と緩和策の案内
活用シーン
- 01本番 Autopilot クラスタの計画
- 02要件に応じた既定値の変更
- 03クラスタ設定の差分レビュー
- 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) を追加してください。
ルール
- ゴールデンパスをデフォルトにします。 ユーザーが別の設定を要求しない限り、ゴールデンパスの値を使用してください。異なる設定にする場合は、トレードオフを記載しつつ、ユーザーの選択を尊重してください。
- Day-0 と Day-1 を区別します。 Day-0 の決定事項(ネットワーキング、プライベートノード、サブネット、IP 割り当て)は、作成後に変更が困難、または不可能であるため、目立つように注意喚起してください。
- ツールの優先順位:MCP > gcloud > kubectl。 MCP は構造化データを使用して GKE API と直接連携するため、シェル構文エラーや解析の曖昧さを減らせます。対応範囲の一覧とオーバーライドの選択肢については、
gke-basicsスキルの CLI リファレンスを参照してください。ユーザーが「gcloud を使う」または「kubectl を使う」と指定した場合は、そのセッション中は指定に従ってください。 - 決定事項とその根拠を記録してください。 特に Day-0 の選択や、ゴールデンパスからの逸脱について記録してください。
必要な入力情報
ユーザーが不明な点がある場合は、ゴールデンパスのデフォルトを使用してください。
- プロジェクト ID(必須)
- リージョン(必須。例:
us-central1) - クラスター名(必須)
- 環境タイプ:開発/テストまたは本番(デフォルトは本番)
- ネットワーキング:独自の VPC/サブネットを使用するか、自動作成するか(デフォルト:自動作成)
- 規模の想定:想定されるノード数/Pod 数、ワークロードの種類
- コストの制約:Spot VM の許容度、予算に関する考慮事項
常に適用されるデフォルト設定
デフォルトで適用される推奨ベストプラクティスです。ユーザーが別の設定を要求した場合は、その設定を適用し、セキュリティまたは運用上のトレードオフを簡潔に説明してください。
| 設定 | ゴールデンパスの値 |
|---|---|
autopilot.enabled | true |
privateClusterConfig.enablePrivateNodes | true |
masterAuthorizedNetworksConfig.privateEndpointEnforcementEnabled | true |
secretManagerConfig.enabled + rotationInterval: 120s | true |
rbacBindingConfig.enableInsecureBinding* | false(両方) |
workloadIdentityConfig.workloadPool | 有効 |
networkConfig.datapathProvider | ADVANCED_DATAPATH |
networkConfig.dnsConfig.clusterDns | CLOUD_DNS |
autoscaling.autoscalingProfile | OPTIMIZE_UTILIZATION |
verticalPodAutoscaling.enabled | true |
monitoringConfig コンポーネント | SYSTEM_COMPONENTS, STORAGE, POD, DEPLOYMENT, STATEFULSET, DAEMONSET, HPA, JOBSET, CADVISOR, KUBELET, DCGM, APISERVER, SCHEDULER, CONTROLLER_MANAGER |
loggingConfig コンポーネント | SYSTEM_COMPONENTS, WORKLOADS(デフォルトで有効) |
advancedDatapathObservabilityConfig.enableMetrics | true |
nodeConfig.shieldedInstanceConfig.enableSecureBoot | true |
nodeConfig.workloadMetadataConfig.mode | GKE_METADATA |
nodeConfig.gcfsConfig.enabled / gvnic.enabled | true / true |
addonsConfig.statefulHaConfig.enabled | true |
| ストレージ CSI ドライバー(Filestore、GCS FUSE、Parallelstore) | 有効 |
| Pod Security Standards | 本番環境の名前空間では restricted |
お客様が設定可能な項目
これらの設定にはゴールデンパスのデフォルト値がありますが、正当な理由があればお客様が変更できます。変更する前に確認してください。
| 設定 | デフォルト | 変更する理由 |
|---|---|---|
dnsEndpointConfig.allowExternalTraffic | true | クラスターが VPC 内からのみアクセスされる場合に制限する |
autoIpamConfig / createSubnetwork | true / true | お客様が既存の VPC/サブネットを使用する |
maxPodsPerNode | 48(このゴールデンパスでの選択値) | ノードあたりの IP 消費量を半分にします(/24 ではなく /25)。GKE のデフォルト値ではありません(Standard のデフォルトは 110、Autopilot のデフォルトは 32)。CIDR 空間をより多く消費しますが、ポッド密度が高い場合は値を引き上げます |
subnetwork | 自動作成 | お客様が既存のサブネットを使用する |
| リリースチャンネル + メンテナンスウィンドウ | REGULAR チャンネルと定期的なメンテナンスウィンドウ | 重大な凍結期間に限り、対象を絞ったメンテナンス除外を追加します(約 6 か月未満にしてください)。gke-upgrades スキルを参照してください |
nodeConfig.bootDisk.diskType | pd-balanced | I/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アップグレード中にゾーンごとに追加されるノード数 1maxUnavailableゾーンごとに同時に利用不可となるノード数 0一度にアップグレードされるノード数は、2 つの値の合計であり、上限は 20(Autopilot)、 100(Standard)です。マルチゾーンのノードプールは、一度に 1 つのゾーンをアップグレードします。
maxUnavailableを増やすと可用性を犠牲にして速度が上がり、maxSurgeを増やすと可用性のためにコストが増加します。
注意:
externalTrafficPolicy: Localは並列ノードドレインでは機能しないため、 積極的なサージ設定には制約があります。
ロールバック手順とメンテナンスウィンドウについては、gke-upgrades スキルを参照してください。
ゴールデンパス構成
クラスター全体に適用するポリシー設定の全容については、 golden-path-autopilot.yaml を参照してください。