创建 Amazon EKS 集群
你可以通过基础设施即代码(IaC)在 Amazon Elastic Kubernetes Service (EKS) 上创建集群。这个过程使用 AWS 和 Kubernetes Terraform 提供程序来创建 EKS 集群。你通过使用 GitLab agent for Kubernetes 将集群连接到 GitLab。
开始之前:
步骤:
导入示例项目
要从 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-eks.git。 - 完成字段填写并选择 Create project。
这个项目为你提供:
- 一个 Amazon Virtual Private Cloud (VPC)。
- 一个 Amazon Elastic Kubernetes Service (EKS) 集群。
- 安装在集群中的 GitLab agent for Kubernetes。
注册 agent
要创建 GitLab agent for Kubernetes:
- 在左侧边栏,选择 Operate > Kubernetes clusters。
- 选择 Connect a cluster (agent)。
- 从 Select an agent 下拉列表中,选择
eks-agent并选择 Register an agent。 - GitLab 为 agent 生成一个注册令牌。请安全存储这个秘密令牌,因为你稍后会需要它。
- GitLab 提供了一个 agent 服务器(KAS)的地址,你稍后也会需要它。
设置 AWS 凭证
当你想要用 GitLab 验证 AWS 身份时,设置你的 AWS 凭证。
-
确保你的 IAM 用户或角色对你的项目有适当的权限。对于这个示例项目,你必须拥有以下 JSON 块中列出的权限。在设置你自己的项目时,你可以扩展这些权限。
// IAM custom Policy definition { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "ec2:*", "eks:*", "elasticloadbalancing:*", "autoscaling:*", "cloudwatch:*", "logs:*", "kms:DescribeKey", "kms:TagResource", "kms:UntagResource", "kms:ListResourceTags", "kms:CreateKey", "kms:CreateAlias", "kms:ListAliases", "kms:DeleteAlias", "iam:AddRoleToInstanceProfile", "iam:AttachRolePolicy", "iam:CreateInstanceProfile", "iam:CreateRole", "iam:CreateServiceLinkedRole", "iam:GetRole", "iam:ListAttachedRolePolicies", "iam:ListRolePolicies", "iam:ListRoles", "iam:PassRole", "iam:DetachRolePolicy", "iam:ListInstanceProfilesForRole", "iam:DeleteRole", "iam:CreateOpenIDConnectProvider", "iam:CreatePolicy", "iam:TagOpenIDConnectProvider", "iam:GetPolicy", "iam:GetPolicyVersion", "iam:GetOpenIDConnectProvider", "iam:DeleteOpenIDConnectProvider", "iam:ListPolicyVersions", "iam:DeletePolicy" ], "Resource": "*" } ] } -
保存你的访问密钥和秘密。你需要这些来用 GitLab 验证 AWS 身份。
配置你的项目
使用 CI/CD 环境变量来配置你的项目。
必需配置:
- 在左侧边栏,选择 Settings > CI/CD。
- 展开 Variables。
- 将变量
AWS_ACCESS_KEY_ID设置为你的 AWS 访问密钥 ID。 - 将变量
AWS_SECRET_ACCESS_KEY设置为你的 AWS 秘密访问密钥。 - 将变量
TF_VAR_agent_token设置为上一个任务中显示的 agent 令牌。 - 将变量
TF_VAR_kas_address设置为上一个任务中显示的 agent 服务器地址。
可选配置:
文件 variables.tf 包含其他变量,你可以根据需要覆盖它们:
TF_VAR_region:设置你的集群区域。TF_VAR_cluster_name:设置你的集群名称。TF_VAR_cluster_version:设置 Kubernetes 的版本。TF_VAR_instance_type:设置 Kubernetes 节点的实例类型。TF_VAR_instance_count:设置 Kubernetes 节点的数量。TF_VAR_agent_namespace:设置 GitLab agent for Kubernetes 的 Kubernetes 命名空间。
查看 AWS Terraform provider 和 Kubernetes Terraform provider 文档以获取更多资源选项。
部署你的集群
配置好你的项目后,手动触发你的集群的部署。在 GitLab 中:
- 在左侧边栏,转到 Build > Pipelines。
- 在 Play ( ) 旁边,选择下拉列表图标 ( )。
- 选择 Deploy 以手动触发部署作业。
当管道成功完成时,你可以查看新集群:
- 在 AWS 中:从 EKS 控制台,选择 Amazon EKS > Clusters。
- 在 GitLab 中:在左侧边栏,选择 Operate > Kubernetes clusters。
使用你的集群
部署集群后,它已连接到 GitLab 并准备就绪,可以部署。要检查连接:
- 在左侧边栏,选择 Operate > Kubernetes clusters。
- 在列表中,查看 Connection status 列。
有关连接功能的更多信息,请参阅 GitLab agent for Kubernetes 文档。
移除集群
默认情况下,清理作业不包含在你的管道中。要移除所有创建的资源,你必须在运行清理作业之前修改你的 GitLab CI/CD 模板。
要移除所有资源:
-
将以下内容添加到你的
.gitlab-ci.yml文件中:stages: - init - validate - test - build - deploy - cleanup destroy: extends: .terraform:destroy needs: [] -
在左侧边栏,选择 Build > Pipelines 并选择最近的管道。
-
对于
destroy作业,选择 Play ( )。