本文档介绍了如何将应用部署到 Google Kubernetes Engine 集群。
借助 Cloud Deploy,您可以将基于容器的工作负载部署到任何 Google Kubernetes Engine 集群。当您部署到 GKE 目标时,系统会支持所有 Cloud Deploy 功能。
准备工作
拥有一个或多个要部署到的 GKE 集群。
如果您没有任何可供部署的 GKE 集群,可以创建集群。
在此 skaffold.yaml 文件中,deploy stanza 包含 kubectl,这表示 Skaffold 正在为 Kubernetes (GKE) 进行渲染和部署。您用于此应用的清单会列在下方。
创建目标配置
您可以在交付流水线 YAML 中配置每个目标,也可以在单独的文件中配置。此外,您可以在同一文件中配置多个目标,但它们必须位于不同的 kind: Target stanza 中。
目标必须在与交付流水线相同的项目和区域中定义。 不过,目标部署到的集群可以位于不同的项目和区域中,只要服务账号有权访问这些项目即可。
在目标定义中,创建一个 gke stanza 以指向 GKE 集群:
gke:
cluster: projects/[project_name]/locations/[location]/clusters/[cluster_name]
此 GKE 资源标识符使用以下元素:
[
project_name] 是您运行此集群的 Google Cloud 项目的名称。您要部署到的集群不需要与交付流水线位于同一项目中。
[
location] 是创建集群的区域。[
cluster_name] 是创建集群时为集群指定的名称。您可以在Google Cloud 控制台中找到此名称,它位于项目的集群列表中。

以下是指向 GKE 集群的目标配置示例:
apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
name: dev
description: development cluster
gke:
cluster: projects/my-app/locations/us-central1/clusters/my-app-dev-cluster
创建 Skaffold 配置
本部分提供并说明了一个简单的 Skaffold 配置示例,该示例可在部署到 GKE 集群时使用。
以下是部署到 GKE 集群的 示例 skaffold.yaml 文件:
apiVersion: skaffold/v4beta7
kind: Config
metadata:
name: gke-application
manifests:
rawYaml:
- deployment.yaml
deploy:
kubectl: {}
将 Skaffold 与 Cloud Deploy 搭配使用详细介绍了如何将 Skaffold 与交付流水线搭配使用。
准备 Kubernetes 清单
如需将应用部署到 GKE,您需要向 Cloud Deploy 提供一个或多个 Kubernetes 清单,这些清单经过渲染后会应用于目标集群,以部署您的应用。
如果您没有这些清单,请先创建它们,然后再尝试使用 Cloud Deploy 交付流水线进行部署。
您可以使用 Kustomize 或 Helm 来帮助您创建清单。如果您的清单是模板化的,需要进行渲染,您也可以使用 Kustomize 或 Helm。
综合应用
现在,您已经拥有 Kubernetes 清单、skaffold.yaml 配置和 Cloud Deploy 目标定义,并且已将目标注册为 Cloud Deploy 资源,现在可以调用交付流水线来创建版本,并按照流水线中定义的目标进展推进版本。
使用代理进行部署
您可以为目标 GKE 集群指定代理。此设置适用于仅通过 HTTP 代理访问集群的组织。
为此,请向目标配置中的 gke stanza 添加 proxyUrl 属性:
gke:
cluster: projects/my-app/locations/us-central1/clusters/my-app-dev-cluster
proxyUrl: [URL]
其中,URL 是代理的网址。
部署到专用集群
您可以使用以下三种方法之一将应用部署到专用 GKE 集群:
使用 DNS 端点
这是连接到专用集群的最简单方法。
在目标配置中,将
gke下的dnsEndpoint设置为true。如果您的集群未配置基于 IP 的端点,则可以跳过此步骤;Cloud Deploy 将默认连接到 DNS 端点,因为它是控制平面的唯一端点。
使用虚拟私有云网络
您可以将目标配置为部署到连接到 Virtual Private Cloud 网络的专用 GKE 集群:
-
专用集群是 VPC 原生集群,其节点和 pod 默认与公共互联网隔离。
如果您计划使用专用集群目标的内部 IP,请在目标配置的
gke下将internalIp设置为true。 在 Cloud Build 中,创建专用工作器池,可将其用于部署到此专用集群。
-
您必须将此池用于
RENDER。您也可以将其用于DEPLOY和VERIFY。以下示例使用了RENDER和DEPLOY:executionConfigs: - usages: - RENDER - DEPLOY workerPool: "projects/p123/locations/us-central1/workerPools/wp123"
如需了解详情,请参阅使用 Identity Service for GKE 从 Cloud Build 专用池访问专用 GKE 集群和使用 Cloud Build 专用池访问专用 GKE 集群。
项目和权限注意事项
您可以配置目标以使用可部署到专用集群的专用工作器池。但是,如果资源位于不同的项目中,则有一些事项需要注意。
- 当 Cloud Deploy 和工作器池位于不同项目中时
要与可访问 VPC 且与您的目标位于不同项目中的专用池进行通信,Cloud Deploy 服务代理需要足够的权限才能与该项目进行通信。
执行服务账号还需要有访问 Cloud Storage 存储桶的权限。
- 当工作器池和集群位于不同的项目中时
如果专用 GKE 集群与专用工作器池位于不同的项目中,则执行服务账号需要有足够的权限才能与集群所在的项目进行通信。
使用 GKE 关联集群目标和连接网关
您可以配置目标,以部署到使用 GKE 关联集群和 Connect 网关的目标的专用 GKE 集群。
此方法不需要您使用 Virtual Private Cloud 或虚拟专用网络连接。
后续步骤
不妨尝试快速入门:将应用部署到 GKE
调用交付流水线以创建版本
详细了解如何配置 Cloud Deploy 目标
了解 Cloud Deploy 执行环境。
详细了解 GKE