部署到 Google Kubernetes Engine 集群

本文档介绍如何将应用部署到 Google Kubernetes Engine 集群。

通过 Cloud Deploy,您可以将基于容器的工作负载部署到任何 Google Kubernetes Engine 集群。部署到 GKE 目标时,所有 Cloud Deploy 功能均受支持。

准备工作

在此 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 控制台中项目的集群列表中找到此名称。

    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 配置

本部分介绍了在部署到 GKE 集群时使用的简单 Skaffold 配置的示例。

以下是一个示例 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 集群:

使用虚拟私有云网络

您可以将目标配置为部署到连接到 Virtual Private Cloud 网络的专用 GKE 集群

  1. 创建专用集群

    专用集群是 VPC 原生集群,其节点和 pod 默认与公共互联网隔离。

    如果您打算使用专用集群目标的内部 IP 地址,请在目标配置中的 gke 下将 internalIp 设置为 true

  2. 在 Cloud Build 中,创建专用工作器池,可将其用于部署到此专用集群。

  3. 将执行环境配置为使用专用池

    您必须将此池用于 RENDER。您还可以将其用于 DEPLOYVERIFY。下面是一个使用 RENDERDEPLOY 的示例:

    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 目标并连接网关

您可以使用 Anthos 目标连接网关将目标配置为部署到专用 GKE 集群

此方法不需要您使用虚拟私有云或虚拟专用网络连接。

后续步骤