mcpField
G
gke-golden-path

gke-golden-path

github.com/google云与 DevOps21.6k6.7k 次安装今天更新
代码仓库

关于 gke-golden-path

面向生产环境 GKE Autopilot 集群配置的指导技能,适用于规划、创建或审查集群的用户和 Agent。它定义安全、网络、监控等默认配置,并强调 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 工具,并建议优先使用 MCP 而非 `gcloud` 或 `kubectl`。

安装

复制下面的命令,在终端中运行。

$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 Golden Path 配置

Golden Path 是推荐用于生产集群的 Autopilot 配置。它定义了合理的默认值——如果用户要求采用不同设置,请按要求设置,并说明相关权衡。若要专门设置自动扩缩,请使用 gke-cluster-autoscaler 进行节点自动扩缩,或使用 gke-workload-scaling 进行工作负载自动扩缩(HPA/VPA)。

MCP 工具: get_cluster、create_cluster、update_cluster

归属信息

必须阅读:在执行任何 gcloud、REST API 或 MCP 命令之前,必须阅读 Usage Attribution。对于直接在终端中执行的命令(绝不在生成的脚本、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. 默认采用 Golden Path。 除非用户另有要求,否则使用 Golden Path 值。偏离时请说明权衡,但尊重用户的选择。
  2. Day-0 与 Day-1。 突出标明 Day-0 决策(网络、私有节点、子网、IP 分配)——集群创建后,这些配置很难更改,甚至无法更改。
  3. 工具优先级:MCP > gcloud > kubectl。 优先使用 MCP,因为它可通过结构化数据直接与 GKE API 交互,从而减少 Shell 语法错误和解析歧义。完整的覆盖范围矩阵和选项说明,请参阅 gke-basics 技能的 CLI 参考。如果用户说“使用 gcloud”或“使用 kubectl”,请在本次会话中遵从。
  4. 记录决策及其理由,尤其是 Day-0 选择和偏离 Golden Path 的情况。

必需输入

如果用户不确定,请使用 Golden Path 默认值。

  • 项目 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 安全标准生产命名空间设为 restricted

客户可配置的设置

这些设置有黄金路径默认值,但客户可在有正当理由时进行调整。更改前请先询问。

设置默认值调整原因
dnsEndpointConfig.allowExternalTraffictrue如果集群仅从 VPC 内部访问,则限制外部流量
autoIpamConfig / createSubnetworktrue / true客户已有 VPC/子网
maxPodsPerNode48(此黄金路径的选择)将每个节点的 IP 消耗减半(使用 /25 而非 /24)。这不是 GKE 默认值(Standard 默认值为 110,Autopilot 默认值为 32);如需提高 Pod 密度,可调高该值,但会占用更多 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,最长可达一小时;之后,GKE 会强制驱逐剩余的 Pod,以便继续升级。PDB 会缩短中断窗口,但无法阻止升级。应明确说明这一点,不要暗示可以消除中断。

建议采取以下全部四项措施,不可只选其中一部分:

  • PodDisruptionBudgets:设置 minAvailable,确保驱逐不会导致最后一个健康副本被移除。若 PDB 永远无法满足条件,排空会卡住一小时,之后 Pod 仍会丢失。

  • 至少 2 个副本:使用拓扑分布约束,将副本分散到不同可用区。单副本 Deployment 必然会出现停机。

  • 就绪探针:使其能反映实际服务健康状况,以便在 Pod 终止前排空流量。

  • 节点池上的突增升级设置。突增是默认策略;默认值为 maxSurge=1、maxUnavailable=0——先创建一个额外节点并使其就绪,再排空旧节点。

    设置控制内容默认值
    maxSurge升级期间每个可用区新增的节点数1
    maxUnavailable每个可用区同时不可用的节点数0

    同时升级的节点数为这两个值的总和,上限为 20(Autopilot)和 100(Standard)。多可用区节点池会逐个可用区升级。提高 maxUnavailable 会以可用性换取速度;提高 maxSurge 会以成本换取可用性。

注意:externalTrafficPolicy: Local 无法与并行节点排空配合使用,因此会限制激进的突增配置。

有关回滚流程和维护时段,请参阅 gke-upgrades 技能。

推荐路径配置

完整的集群级策略设置请参阅 golden-path-autopilot.yaml。

评论

支持 Markdown