本文档介绍了如何将应用部署到 Google Kubernetes Engine 集群。
借助 Cloud Deploy,您可以将基于容器的工作负载部署到任何 Google Kubernetes Engine 集群。部署到云端时,所有 Cloud Deploy 功能均受支持 GKE 目标。
准备工作
有一个或多个要部署到其中的 GKE 集群。
如果您没有要部署到的 GKE 集群,可以创建集群。
在此 skaffold.yaml
文件中,deploy
诗节包含 kubectl
,这表示 Skaffold 正在为 Kubernetes (GKE) 渲染并部署到 Kubernetes (GKE)。您为此应用使用的清单会列在下方。
创建目标配置
每个目标都可以在交付流水线 YAML 中配置,也可以在单独的文件中配置。此外,您还可以在同一个文件中配置多个目标,
但它们必须位于不同的 kind: Target
节中。
在目标定义中,创建一个 gke
诗节以指向 GKE 集群:
指定 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 集群指定代理。此方法适用于仅通过代理访问集群的组织。
为此,请将 proxyUrl
属性添加到目标配置中的 gke
诗节:
gke:
cluster: projects/my-app/locations/us-central1/clusters/my-app-dev-cluster
proxyUrl: [URL]
其中,URL
是代理的网址。
部署到专用集群
您可以将应用部署到专用 GKE 集群 使用以下两个选项之一:
使用虚拟私有云网络
您可以将目标配置为部署到连接到 Virtual Private Cloud 网络的专用 GKE 集群:
-
专用集群是 VPC 原生集群,其节点和 pod 默认与公共互联网隔离。
如果您打算使用专用集群目标的内部 IP,请将
internalIp
到目标配置中gke
下的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 Enterprise 目标和 Connect Gateway
您可以使用 Anthos 目标和连接网关将目标配置为部署到专用 GKE 集群。
这种方法不需要您使用虚拟私有云或虚拟私有网络连接。
后续步骤
调用交付流水线以创建版本
详细了解如何配置 Cloud Deploy 目标
了解 Cloud Deploy 执行环境。
详细了解 GKE