Help us learn about your current experience with the documentation. Take the survey.

创建 Google GKE 集群

了解如何通过基础设施即代码 (IaC) 在 Google Kubernetes Engine (GKE) 上创建新集群。此过程使用 Google 和 Kubernetes Terraform 提供程序创建 GKE 集群。您通过使用 GitLab agent for Kubernetes 将集群连接到 GitLab。

每个新的 Google Cloud Platform (GCP) 账户都会获得 $300 的信用额度, 并且通过与 Google 合作,GitLab 可以为新的 GCP 账户额外提供 $200,帮助您开始使用 GitLab 与 Google Kubernetes Engine 的集成。 点击此链接 申请信用额度。

开始之前

步骤

  1. 导入示例项目
  2. 注册 Kubernetes agent
  3. 创建您的 GCP 凭据
  4. 配置您的项目
  5. 配置您的集群

导入示例项目

要通过基础设施即代码从 GitLab 创建集群,您必须创建一个项目来管理集群。在本教程中,您从一个示例项目开始,并根据您的需求进行修改。

首先通过 URL 导入示例项目

导入项目:

  1. 在 GitLab 中,从左侧边栏选择 Search or go to
  2. 选择 View all my projects
  3. 在页面右侧,选择 New project
  4. 选择 Import project
  5. 选择 Repository by URL
  6. 对于 Git repository URL,输入 https://gitlab.com/gitlab-org/configure/examples/gitlab-terraform-gke.git
  7. 完成字段并选择 Create project

此项目为您提供:

注册 agent

创建 GitLab agent for Kubernetes:

  1. 从左侧边栏选择 Operate > Kubernetes clusters
  2. 选择 Connect a cluster (agent)
  3. Select an agent or enter a name to create new 下拉列表中,选择您的 agent 名称并选择 Register
  4. GitLab 为 agent 生成一个注册令牌。请安全存储此密钥令牌,因为您稍后会需要它。
  5. 可选。如果您使用 Helm,GitLab 在 Helm 命令示例中提供了 agent 服务器 (KAS) 的地址。您稍后会需要这个地址。

创建您的 GCP 凭据

设置您的项目以与 GCP 和 GitLab API 通信:

  1. 为 GCP 与 GitLab 进行身份验证,创建一个 GCP 服务账户, 并赋予以下角色:Compute Network ViewerKubernetes Engine AdminService Account UserService Account Admin。User 和 Admin 服务账户都是必需的。User 角色在 创建节点池 时模拟 默认服务账户。 Admin 角色在 kube-system 命名空间中创建服务账户。

  2. 下载您在上一步中创建的服务账户密钥的 JSON 文件。

  3. 在您的计算机上,将 JSON 文件编码为 base64(将 /path/to/sa-key.json 替换为您密钥的路径):

    base64 -i /path/to/sa-key.json | tr -d \n
    base64 /path/to/sa-key.json | tr -d \n
  4. 使用此命令的输出作为下一步中的 BASE64_GOOGLE_CREDENTIALS 环境变量。

配置您的项目

使用 CI/CD 环境变量来配置您的项目。

必需配置

  1. 从左侧边栏选择 Settings > CI/CD
  2. 展开 Variables
  3. 将变量 BASE64_GOOGLE_CREDENTIALS 设置为您刚刚创建的 base64 编码的 JSON 文件。
  4. 将变量 TF_VAR_gcp_project 设置为您的 GCP project ID。
  5. 将变量 TF_VAR_agent_token 设置为上一个任务中显示的 agent 令牌。
  6. 将变量 TF_VAR_kas_address 设置为上一个任务中显示的 agent 服务器地址。

可选配置

文件 variables.tf 包含其他变量,您可以根据需要覆盖:

  • TF_VAR_gcp_region:设置您的集群区域。
  • TF_VAR_cluster_name:设置您的集群名称。
  • TF_VAR_cluster_description:为集群设置描述。我们建议将其设置为 $CI_PROJECT_URL,以便在您的 GCP 集群详情页面上创建对您的 GitLab 项目的引用。这样您就知道哪个项目负责在 GCP 仪表板上为您看到的集群进行配置。
  • TF_VAR_machine_type:设置 Kubernetes 节点的机器类型。
  • TF_VAR_node_count:设置 Kubernetes 节点数。
  • TF_VAR_agent_namespace:为 GitLab agent for Kubernetes 设置 Kubernetes 命名空间。

有关更多资源选项,请参阅 Google Terraform providerKubernetes Terraform provider 文档。

启用 Kubernetes Engine API

从 Google Cloud 控制台启用 Kubernetes Engine API

配置您的集群

配置您的项目后,手动触发集群的配置。在 GitLab 中:

  1. 从左侧边栏选择 Build > Pipelines
  2. 选择 New pipeline
  3. Play ( play ) 旁边,选择下拉列表图标 ( chevron-lg-down )。
  4. 选择 Deploy 以手动触发部署作业。

当流水线成功完成后,您可以看到您的新集群:

使用您的集群

配置集群后,它已连接到 GitLab 并准备就绪,可以进行部署。要检查连接状态:

  1. 从左侧边栏选择 Operate > Kubernetes clusters
  2. 在列表中,查看 Connection status 列。

有关连接功能的更多信息,请参阅 GitLab agent for Kubernetes 文档

删除集群

默认情况下,您的流水线中不包含清理作业。要删除所有创建的资源,您必须在运行清理作业之前修改您的 GitLab CI/CD 模板。

删除所有资源:

  1. 将以下内容添加到您的 .gitlab-ci.yml 文件中:

    stages:
      - init
      - validate
      - build
      - test
      - deploy
      - cleanup
    
    destroy:
      extends: .terraform:destroy
      needs: []
  2. 从左侧边栏选择 Build > Pipelines 并选择最近的流水线。

  3. 对于 destroy 作业,选择 Play ( play )。