创建 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 的集成。 点击此链接 申请信用额度。
开始之前:
- 一个 Google Cloud Platform (GCP) 服务账户。
- 一个可用于运行 GitLab CI/CD 流水线的 runner。
步骤:
导入示例项目
要通过基础设施即代码从 GitLab 创建集群,您必须创建一个项目来管理集群。在本教程中,您从一个示例项目开始,并根据您的需求进行修改。
导入项目:
- 在 GitLab 中,从左侧边栏选择 Search or go to。
- 选择 View all my projects。
- 在页面右侧,选择 New project。
- 选择 Import project。
- 选择 Repository by URL。
- 对于 Git repository URL,输入
https://gitlab.com/gitlab-org/configure/examples/gitlab-terraform-gke.git。 - 完成字段并选择 Create project。
此项目为您提供:
- 一个 Google Cloud Platform (GCP) 上的集群, 默认配置了名称、位置、节点数和 Kubernetes 版本。
- 安装在集群中的 GitLab agent for Kubernetes。
注册 agent
创建 GitLab agent for Kubernetes:
- 从左侧边栏选择 Operate > Kubernetes clusters。
- 选择 Connect a cluster (agent)。
- 从 Select an agent or enter a name to create new 下拉列表中,选择您的 agent 名称并选择 Register。
- GitLab 为 agent 生成一个注册令牌。请安全存储此密钥令牌,因为您稍后会需要它。
- 可选。如果您使用 Helm,GitLab 在 Helm 命令示例中提供了 agent 服务器 (KAS) 的地址。您稍后会需要这个地址。
创建您的 GCP 凭据
设置您的项目以与 GCP 和 GitLab API 通信:
-
为 GCP 与 GitLab 进行身份验证,创建一个 GCP 服务账户, 并赋予以下角色:
Compute Network Viewer、Kubernetes Engine Admin、Service Account User和Service Account Admin。User 和 Admin 服务账户都是必需的。User 角色在 创建节点池 时模拟 默认服务账户。 Admin 角色在kube-system命名空间中创建服务账户。 -
下载您在上一步中创建的服务账户密钥的 JSON 文件。
-
在您的计算机上,将 JSON 文件编码为
base64(将/path/to/sa-key.json替换为您密钥的路径):base64 -i /path/to/sa-key.json | tr -d \nbase64 /path/to/sa-key.json | tr -d \n -
使用此命令的输出作为下一步中的
BASE64_GOOGLE_CREDENTIALS环境变量。
配置您的项目
使用 CI/CD 环境变量来配置您的项目。
必需配置:
- 从左侧边栏选择 Settings > CI/CD。
- 展开 Variables。
- 将变量
BASE64_GOOGLE_CREDENTIALS设置为您刚刚创建的base64编码的 JSON 文件。 - 将变量
TF_VAR_gcp_project设置为您的 GCPprojectID。 - 将变量
TF_VAR_agent_token设置为上一个任务中显示的 agent 令牌。 - 将变量
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 provider 和 Kubernetes Terraform provider 文档。
启用 Kubernetes Engine API
从 Google Cloud 控制台启用 Kubernetes Engine API。
配置您的集群
配置您的项目后,手动触发集群的配置。在 GitLab 中:
- 从左侧边栏选择 Build > Pipelines。
- 选择 New pipeline。
- 在 Play ( ) 旁边,选择下拉列表图标 ( )。
- 选择 Deploy 以手动触发部署作业。
当流水线成功完成后,您可以看到您的新集群:
- 在 GCP 中:在您的 GCP 控制台的 Kubernetes 列表 上。
- 在 GitLab 中:从您的项目侧边栏选择 Operate > Kubernetes clusters。
使用您的集群
配置集群后,它已连接到 GitLab 并准备就绪,可以进行部署。要检查连接状态:
- 从左侧边栏选择 Operate > Kubernetes clusters。
- 在列表中,查看 Connection status 列。
有关连接功能的更多信息,请参阅 GitLab agent for Kubernetes 文档。
删除集群
默认情况下,您的流水线中不包含清理作业。要删除所有创建的资源,您必须在运行清理作业之前修改您的 GitLab CI/CD 模板。
删除所有资源:
-
将以下内容添加到您的
.gitlab-ci.yml文件中:stages: - init - validate - build - test - deploy - cleanup destroy: extends: .terraform:destroy needs: [] -
从左侧边栏选择 Build > Pipelines 并选择最近的流水线。
-
对于
destroy作业,选择 Play ( )。