Adding EKS clusters

Adding EKS clusters

GitLab 支持添加新的和现有的 EKS 集群.

在通过 GitLab 集成在 Amazon EKS 上创建第一个集群之前,请确保满足以下要求:

  • 设置了帐户,您就可以登录.
  • 您有权管理 IAM 资源.
  • 如果要使用现有的 EKS 集群
    • 已正确配置工作节点的 Amazon EKS 集群.
    • kubectl以访问 EKS 集群.

如果您使用自我管理的 GitLab 实例,则必须首先使用一组 Amazon 凭证配置 GitLab. 这些凭证将用于承担创建集群的用户提供的 Amazon IAM 角色. 创建一个 IAM 用户,并确保其有权承担您的用户将用来创建 EKS 群集的角色.

例如,以下策略文档允许在帐户123456789012假设一个角色的名称以gitlab-eks-

为 IAM 用户生成访问密钥,并使用凭据配置 GitLab:

  1. 导航至管理区域>设置>集成,然后展开Amazon EKS部分.
  2. Check 启用 Amazon EKS 集成.
  3. 在相应的Account IDAccess key IDSecret access key字段中输入帐户 ID 和访问密钥凭据.
  4. Click 保存更改.

在 GitLab 12.5 中引入 .

要创建新的 Kubernetes 集群并将其添加到您的项目,组或实例:

  1. 导航到您的:
    • 项目的 操作> Kubernetes页面,用于项目级集群.
    • 组的 Kubernetes页面,用于组级别集群.
    • 管理区> Kubernetes ,用于实例级集群.
  2. Click 添加 Kubernetes 集群.
  3. 在” 创建新集群”选项卡下,单击Amazon EKS . 将为您提供一个Account IDExternal ID ,供下一步使用.
  4. 在 GitLab 中,将复制的角色 ARN 输入到Role ARN字段中.
  5. Click 使用 AWS 进行身份验证.
  6. 选择集群的设置:
    • Kubernetes 集群名称 -您希望赋予集群的名称.
    • 环境范围 -该集群的 .
    • Kubernetes 版本 -要使用的 Kubernetes 版本. 当前唯一支持的版本是 1.14.
    • 角色名称 -选择IAM 角色以允许 Amazon EKS 和 Kubernetes 控制平面代表您管理 AWS 资源. 此 IAM 角色与上面创建的 IAM 角色是分开的,如果尚不存在,则需要创建它.
    • 区域 -将在其中创建群集的 .
    • 密钥对名称 -如果需要,选择可用于连接到工作节点的密钥对 .
    • VPC-选择要用于 EKS 群集资源的 .
    • 子网 -在您的 VPC 中选择运行工作节点的子网 . 您必须至少选择两个.
    • 安全组 -选择以应用到在工作节点子网中创建的 EKS 管理的弹性网络接口.
    • 实例类型 -工作节点的实例类型 .
    • 节点数 -工作节点数.
    • 由 GitLab 管理的群集 -如果要让 GitLab 管理该群集的名称空间和服务帐户,请选中此复选框. 有关更多信息,请参见 .

大约 10 分钟后,您的集群便可以使用了. 现在,您可以继续安装一些预定义的应用程序 .

注意:您需要将 AWS 外部 ID 添加到的IAM 角色,才能使用kubectl管理集群.

创建新集群时,通常会遇到以下错误.

Error: Request failed with status code 422

提交初始身份验证表单时,如果无法确定您提供的角色,则 GitLab 会返回状态码 422 错误. 确保已使用 GitLab 提供的帐户 ID外部 ID正确配置了角色. 在 GitLab 中,确保输入正确的Role ARN .

Could not load Security Groups for this VPC

当在配置表单中填充选项时,GitLab 将返回此错误,因为 GitLab 已成功承担了您提供的角色,但是该角色没有足够的权限来检索表单所需的资源. 确保已为角色分配了正确的权限.

ROLLBACK_FAILED during cluster creation

由于 GitLab 在创建一个或多个资源时遇到错误,因此创建过程停止. 您可以检查关联的CloudFormation 堆栈以查找创建失败的特定资源.

如果Cluster资源因错误The provided role doesn't have the Amazon EKS Managed Policies associated with it.失败,则The provided role doesn't have the Amazon EKS Managed Policies associated with it.角色名称中指定的角色配置不正确.

注意:此角色不应与上面创建的角色相同. 如果您没有现有的 ,则必须创建一个.

有关添加现有 EKS 群集的信息,请参阅” 现有 Kubernetes 群集” .

如果默认的存储类尚不存在并且需要使用,请按照 Amazon 的创建一个.

或者,通过将项目变量POSTGRES_ENABLED设置为false来禁用 PostgreSQL.

在禁用 RBAC 和部署服务的情况下,现在可以利用构建,测试和部署应用程序.

如果尚未启用,则启用 Auto DevOps . 如果创建了通配符 DNS 条目以解析到负载均衡器,请在”自动 DevOps”设置下的” 字段中输入它. 否则,已部署的应用程序将无法在群集外部从外部获得.

将自动创建一个新管道,该管道将开始构建,测试和部署该应用程序.

管道完成后,您的应用将在 EKS 中运行,并可供用户使用. 单击CI / CD>环境 .

Deployed Environment

您将看到环境及其部署状态的列表,以及浏览到应用程序,查看监视指标甚至访问正在运行的 Pod 上的 Shell 的选项.