本文档介绍了如何将您的应用部署到 Google Kubernetes Engine 集群。
通过 Cloud Deploy,您可以将基于容器的工作负载部署到 Google Kubernetes Engine 集群。部署到云端时,所有 Cloud Deploy 功能均受支持 GKE 目标。
准备工作
拥有一个或多个要部署到的 GKE 集群。
如果您没有任何要部署的 GKE 集群,可以 创建它们。
在此 skaffold.yaml
文件中,deploy
节包含 kubectl
,
这表明 Skaffold 正在为 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 集群时使用
以下是 skaffold.yaml
文件的示例
GKE 集群:
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 目标和连接网关
您可以将目标配置为部署到 专用 GKE 集群 使用 Anthos 目标 和连接网关。
此方法不需要使用虚拟私有云或虚拟私有云, 网络连接
后续步骤
调用交付流水线以创建版本
详细了解如何配置 Cloud Deploy 目标
了解 Cloud Deploy 执行环境。
详细了解 GKE