关于 gke-app-onboarding
这项参考技能面向首次将应用部署到 GKE 的团队,涵盖应用评估、容器化、镜像管理、Kubernetes 清单和部署验证,并提供生产环境的安全与可靠性指导。
主要功能
- 01应用就绪情况评估
- 02容器构建与镜像指导
- 03加固版 Kubernetes 清单检查表
- 04部署与发布状态验证
- 05生产安全与可靠性实践
适用场景
- 01为应用首次部署到 GKE 做准备
- 02构建容器镜像和 Kubernetes 清单
- 03验证部署发布状态并检查 Pod
- 04落实生产环境基础安全控制
MCP 相关
该技能列出用于应用 Kubernetes 清单以及检查资源、发布状态、日志和描述的 MCP 工具。它将基于 MCP 的部署作为首选方式,并将 kubectl 作为备用方案。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ google/ skills --skill gke-app-onboarding安装后在 Claude Code 中输入/gke-app-onboarding确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
assets/deployment.yamlDockerfileindex.jspackage-lock.jsonpackage.jsonreferences/attribution.mdgo-example.md详细介绍
GKE 应用接入
本参考介绍了首次将应用容器化并部署到 GKE 的工作流。
MCP 工具:
apply_k8s_manifest、get_k8s_resource、get_k8s_rollout_status、get_k8s_logs、describe_k8s_resource
归属标记
必须阅读:在执行任何 gcloud、REST API 或 MCP 命令之前,必须阅读使用归属标记。对于直接在终端中执行的命令(绝不能在生成的脚本、Terraform 或用户代码中执行),请在 gcloud 前加上
CLOUDSDK_METRICS_REQUEST_ATTRIBUTION="agent-skills/1.0 (skill:gke-app-onboarding)"
,并将 agent-skills/1.0 (skill:gke-app-onboarding) 附加到 User-Agent 标头中。
工作流
1. 应用评估
在容器化之前,评估应用:
- 语言与框架:确定技术栈
- 依赖项:列出所需的库和外部服务
- 配置:应用如何配置?(环境变量、配置文件、密钥)
- 状态:是否需要持久存储?(数据库、文件存储)
- 网络:端口映射和协议(HTTP、gRPC、TCP)
- 健康检查端点:应用是否提供健康检查端点?
2. 容器化
创建容器映像。对于大多数应用,建议使用多阶段构建的 Dockerfile;具体示例请参见 references/go-example.md 中的 Go Dockerfile。
最佳实践:
- 使用多阶段构建,缩小生产映像
- 使用 distroless 或精简基础映像,减少攻击面
- 以非 root 用户身份运行
- 将日志写入
stdout和stderr,以便 Cloud Logging 收集
assets/ 中提供了完整的 Node.js 示例:Dockerfile(使用非 root node 用户)、index.js(实现独立的 /healthz 和 /readyz 端点)、package.json 以及 deployment.yaml(经过强化的 Deployment 和 ClusterIP Service,探针配置为使用 /healthz 和 /readyz)。
如果不希望编写 Dockerfile,可以使用 Cloud Native Buildpacks 自动检测语言并构建容器映像:
pack build <image> --builder gcr.io/buildpacks/builder:latest
3. 映像管理
构建并存储容器映像:
# Configure Docker for Artifact Registry
gcloud auth configure-docker <REGION>-docker.pkg.dev --quiet
# Build and push
docker build -t <REGION>-docker.pkg.dev/<PROJECT>/<REPO>/<IMAGE>:<TAG> .
docker push <REGION>-docker.pkg.dev/<PROJECT>/<REPO>/<IMAGE>:<TAG>
漏洞扫描:在 Artifact Registry 中启用自动扫描,以检测基础映像和依赖项中的问题。
# Check scan results
gcloud artifacts docker images describe \
<REGION>-docker.pkg.dev/<PROJECT>/<REPO>/<IMAGE>:<TAG> \
--show-package-vulnerability \
--quiet
4. 清单生成
为应用生成 Kubernetes 清单。基础 Deployment + ClusterIP Service 清单(包含探针、资源请求/限制和 2 个副本)位于 references/go-example.md。
清单检查清单:
- 已设置资源请求和限制
- 已配置存活探针和就绪探针
- 生产环境至少使用 2 个副本
- Service 类型合适(内部服务使用 ClusterIP;外部服务使用 Gateway API)
经过强化的完整示例请参见 assets/deployment.yaml。生产环境强化型 Pod 规范必须包含以下所有内容:runAsNonRoot: true、readOnlyRootFilesystem: true、allowPrivilegeEscalation: false、capabilities.drop: ["ALL"]、seccompProfile: {type: RuntimeDefault}、automountServiceAccountToken: false(除非 Pod 需要该令牌;如需使用,则说明原因)、资源请求、固定到摘要的映像,以及 ClusterIP Service。
此检查清单是此处生成的任何 Pod 规范的基准。对于超出此范围的清单工作——Gateway API 路由、GCS FUSE 和密钥卷挂载、subPath 覆盖、Spot VM 目标配置或 AI/推理服务规范——请参见 gke-manifest-generation。
5. 部署
# MCP (preferred)
apply_k8s_manifest(parent="projects/<PROJECT>/locations/<REGION>/clusters/<CLUSTER>", yamlManifest="<manifest>")
# Verify
get_k8s_rollout_status(parent="...", resourceType="deployment", name="my-app")
get_k8s_resource(parent="...", resourceType="pod", labelSelector="app=my-app")
kubectl 备用方案:
kubectl apply -f manifests/
kubectl rollout status deployment/my-app
kubectl get pods -l app=my-app
黄金路径入驻检查清单
每个入驻 GKE 的生产应用都应满足以下要求:
- 容器安全:使用非 root 用户(
runAsNonRoot: true)、通过 lockfile 安装依赖,并使用精简或 distroless 基础镜像。 - 资源请求:明确设置 CPU 和内存请求(GKE Autopilot 强制要求)。
- 健康探针:配置存活探针(
livenessProbe)和就绪探针(readinessProbe)。 - 可靠性与可用性:至少运行 2 个副本,并配置
PodDisruptionBudget(minAvailable: 1或2)。 - IAM 与 Workload Identity:使用 Workload Identity(
iam.gke.io/gcp-service-account),而非静态服务账号密钥。
后续步骤
应用在 GKE 上运行后:
- 配置自动扩缩容 — 参阅
gke-workload-scaling技能 - 设置可观测性 — 参阅
gke-observability技能 - 强化安全性 — 参阅
gke-workload-security技能 - 配置可靠性(PDB、拓扑分布)— 参阅
gke-reliability技能