设置自动部署

您可以为 Google Kubernetes Engine (GKE) 上的工作负载配置自动部署。

本页面介绍如何为工作负载设置简单的持续集成/持续交付 (CI/CD) 流水线。当您将更改推送到代码库时,Cloud Build 会自动构建容器并将其部署到您的 GKE 集群。

自动部署的工作原理

如果您的 GKE 工作负载引用单个容器映像,则可以配置自动部署,以便在每次将代码更改签入代码库时重新构建和部署应用。

通过自动部署,您可以将工作负载定义为 YAML 文件,并将该 YAML 文件存储到您的代码库中(与最佳做法一致)。GKE 会生成一个 YAML 供您用于实现此目的。

对于使用 YAML 文件,您有两种选择:

  • 如果您还没有用于定义工作负载的 YAML 文件,则可以使用生成的 YAML 文件。将 YAML 文件保存在您的代码库中。Cloud Build 每次都会使用它来部署工作负载。

  • 如果您已经有定义工作负载的 YAML 文件,则可以将 GKE 指向该文件在代码库中的位置。您可以将代码库中的 YAML 文件与建议的 YAML 文件进行比较,以确保以正确的方式部署正确的工作负载。

准备工作

在开始之前,请确保您已执行以下任务:

使用以下任一方法设定默认的 gcloud 设置:

  • 使用 gcloud init(如果您想要在系统引导下完成默认设置)。
  • 使用 gcloud config(如果您想单独设置项目 ID、区域和地区)。

使用 gcloud init

如果您收到 One of [--zone, --region] must be supplied: Please specify location 错误,请完成本部分。

  1. 运行 gcloud init 并按照说明操作:

    gcloud init

    如果您要在远程服务器上使用 SSH,请使用 --console-only 标志来防止命令启动浏览器:

    gcloud init --console-only
  2. 按照说明授权 gcloud 使用您的 Google Cloud 帐号。
  3. 创建新配置或选择现有配置。
  4. 选择 Google Cloud 项目。
  5. 选择默认的 Compute Engine 区域。

使用 gcloud config

  • 设置默认项目 ID
    gcloud config set project project-id
  • 如果您使用的是区域级集群,请设置默认计算区域
    gcloud config set compute/zone compute-zone
  • 如果您使用的是地区级集群,请设置默认计算地区
    gcloud config set compute/region compute-region
  • gcloud 更新到最新版本:
    gcloud components update

要求

自动部署具有以下要求:

  • 自动部署只能用于类型为 Deployment 并指定单个容器映像的工作负载。不支持多容器工作负载和其他工作负载类型(例如 ReplicaSet)。

  • 您的源代码库必须包含一个用于构建映像的 Dockerfile。

    您可将此代码库托管在以下任一产品中:

    如果您使用 GitHub 或 Bitbucket,则需要授予 Google Cloud 访问您的代码库的权限。

  • 将您的容器映像存储在 Container Registry 中,且与您的 GKE 集群属于同一 Google Cloud 项目。您必须将该映像存储在 Container Registry 中,并且必须至少部署一次,以便在 GKE 中部署工作负载。

创建部署

如需创建具有自动部署的 Deployment,请执行以下步骤:

  1. 访问 Google Cloud Console 中的“工作负载”菜单。

    访问“工作负载”菜单

  2. 点击要部署的工作负载的名称。

    此操作会打开该工作负载的“部署详情”页面。

  3. 点击操作菜单,然后选择自动部署

    此时会显示设置自动部署屏幕。

  4. 选择包含您的源代码的代码库以构建此工作负载。

    1. 代码库提供方下拉列表中,选择您的代码库的提供方。

      自动部署支持以下源控制主机:

      • Cloud Source Repositories
      • GitHub
      • Bitbucket

      如果您使用的是 GitHub 或 Bitbucket,请使用您的用户名和密码进行身份验证。

    2. 代码库下拉列表中,选择包含您的工作负载源代码的代码库的名称。

  5. 点击继续,然后指定构建配置信息:

    1. 输入要从中进行构建的分支的名称,或输入正则表达式 (RegExp2) 以匹配该(或这些)分支。默认分支为 master。当您向此分支推送内容后,Cloud Build 将构建您的应用。

    2. 指定 Dockerfile 所在的目录(相对于代码库的根目录)。

    3. 提供包含构建信息的 Dockerfile 的文件名。

  6. 点击继续

  7. 提供配置 YAML 文件的位置。

    系统会自动生成一个 YAML 文件,您可以使用该文件来填充代码库中的 YAML 文件。

    1. 点击查看 Google 推荐的 YAML,以查看生成的 YAML 文件。

    2. 将生成的 YAML 文件与您自己的 YAML 文件(如有)进行比较,并根据此 YAML 文件更新您的 YAML 文件。

      否则,请创建一个新文件并使用生成的 YAML 填充该文件。这有助于确保已部署的工作负载与当前运行的工作负载相匹配。该文件可以采用任何名称,但必须以 .yaml.yml 为扩展名。

    3. 指定 YAML 文件所在的目录(相对于代码库根目录)。

      如果指定目录中有多个 YAML 文件,则 GKE 会使用所有这些文件。

  8. 点击设置以完成自动部署的配置。

    系统可能会提示您向 Cloud Build 服务帐号授予权限。这个权限是必需的。

后续步骤

为所选工作负载设置自动部署后,您将拥有一个 Cloud Build 触发器,该触发器会在有内容推送到代码库的选定分支后构建容器映像。Cloud Build 还会将工作负载的新修订版本部署到原始映像所部署的集群。

如需详细了解您的工作负载,请参阅部署详情页面(“修订历史记录”标签页)。