迁移到 GitLab agent for Kubernetes
- Tier: Free, Premium, Ultimate
- Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
要将您的 Kubernetes 集群与 GitLab 连接,您可以使用:
基于证书的集成在 GitLab 14.5 中已弃用。停用计划如下:
如果您正在使用基于证书的集成,应尽快迁移到其他工作流。
通常,对于依赖 GitLab CI/CD 的集群迁移,您可以使用 CI/CD 工作流。此工作流使用 agent 连接到您的集群。该 agent:
- 不暴露在互联网上
- 不需要 GitLab 的完整
cluster-admin访问权限
基于证书的集成曾被用于 GitLab 的热门功能,如 GitLab 管理的应用、GitLab 管理的集群和 Auto DevOps。
查找基于证书的集群
您可以使用专用 API查找 GitLab 实例或组(包括子组和项目)中的所有基于证书的集群。使用组 ID 查询 API 将返回在提供组及其下级定义的所有基于证书的集群。
在这种情况下,不会返回在父组中定义的集群。此行为有助于组所有者找到需要迁移的所有集群。
禁用的集群也会被返回,以避免意外遗漏集群。
集群发现 API 不适用于个人命名空间。
迁移通用部署
要迁移通用部署:
- 安装 GitLab agent for Kubernetes
- 按照 CI/CD 工作流授权 agent 访问组和项目,或使用模拟身份验证保护访问
- 在左侧边栏,选择 Operate > Kubernetes clusters
- 从基于证书的集群部分,打开服务于相同环境范围的集群
- 选择 Details 标签页并关闭集群
从 GitLab 管理的集群迁移到 Kubernetes 资源
- Tier: Premium, Ultimate
使用 GitLab 管理的集群时,GitLab 会为每个分支创建独立的服务账户和命名空间,并使用这些资源进行部署。
现在,您可以使用 GitLab 管理的 Kubernetes 资源 来自助服务资源,并增强安全控制。
使用 GitLab 管理的 Kubernetes 资源,您可以:
- 安全地设置环境,无需人工干预
- 控制资源创建和访问,而不给予开发者集群管理员权限
- 当开发者创建新项目或环境时,提供自助服务功能
- 允许开发者在专用或共享命名空间中部署测试和开发版本
先决条件:
- 安装 GitLab agent for Kubernetes
- 授权 agent 访问相关项目或组
- 检查您基于证书的集群集成页面中 Namespace per environment 复选框的状态
要从 GitLab 管理的集群迁移到 GitLab 管理的 Kubernetes 资源:
-
如果您正在迁移现有环境,请通过 Kubernetes 仪表板 或 Environments API 为环境配置 agent
-
在 agent 配置文件中配置 agent 以启用资源管理:
ci_access: projects: - id: <your_group/your_project> access_as: ci_job: {} resource_management: enabled: true groups: - id: <your_other_group> access_as: ci_job: {} resource_management: enabled: true -
在
.gitlab/agents/<agent-name>/environment_templates/default.yaml下创建环境模板。检查您基于证书的集群集成页面中 Namespace per environment 复选框的状态。如果 Namespace per environment 已选中,请使用以下模板:
objects: - apiVersion: v1 kind: Namespace metadata: name: project-{{ .project.id }}-{{ .environment.slug }} - apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: bind-{{ .agent.id }}-{{ .project.id }}-{{ .environment.slug }} namespace: project-{{ .project.id }}-{{ .environment.slug }} subjects: - kind: Group apiGroup: rbac.authorization.k8s.io name: gitlab:project_env:{{ .project.id }}:{{ .environment.slug }} roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: admin如果 Namespace per environment 未选中,请使用以下模板:
objects: - apiVersion: v1 kind: Namespace metadata: name: project-{{ .project.id }} - apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: bind-{{ .agent.id }}-{{ .project.id }}-{{ .environment.slug }} namespace: project-{{ .project.id }} subjects: - kind: Group apiGroup: rbac.authorization.k8s.io name: gitlab:project_env:{{ .project.id }}:{{ .environment.slug }} roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: admin -
在您的 CI/CD 配置中,使用带有
environment.kubernetes.agent: <path/to/agent/project:agent-name>语法的 agent -
在左侧边栏,选择 Operate > Kubernetes clusters
-
从基于证书的集群部分,打开服务于相同环境范围的集群
-
选择 Details 标签页并关闭集群
从 Auto DevOps 迁移
在您的 Auto DevOps 项目中,您可以使用 GitLab agent for Kubernetes 连接到您的 Kubernetes 集群。
先决条件
- 安装 GitLab agent for Kubernetes
- 授权 agent 访问相关项目或组
要从 Auto DevOps 迁移:
-
在 GitLab 中,转到您使用 Auto DevOps 的项目
-
添加三个变量。在左侧边栏,选择 Settings > CI/CD 并展开 Variables
-
添加一个名为
KUBE_INGRESS_BASE_DOMAIN的键,值为应用程序部署域名 -
添加一个名为
KUBE_CONTEXT的键,值为类似path/to/agent/project:agent-name的值 选择您选择的环境范围 如果您不确定 agent 的上下文,请编辑您的.gitlab-ci.yml文件并添加一个作业来查看可用的上下文:deploy: image: name: bitnami/kubectl:latest entrypoint: [""] script: - kubectl config get-contexts -
添加一个名为
KUBE_NAMESPACE的键,值为您的部署目标 Kubernetes 命名空间。设置相同的环境范围
-
-
选择 Add variable
-
在左侧边栏,选择 Operate > Kubernetes clusters
-
从基于证书的集群部分,打开服务于相同环境范围的集群
-
选择 Details 标签页并禁用集群
-
编辑您的
.gitlab-ci.yml文件并确保它使用 Auto DevOps 模板。例如:include: template: Auto-DevOps.gitlab-ci.yml variables: KUBE_INGRESS_BASE_DOMAIN: 74.220.23.215.nip.io KUBE_CONTEXT: "gitlab-examples/ops/gitops-demo/k8s-agents:demo-agent" KUBE_NAMESPACE: "demo-agent" -
要测试您的流水线,在左侧边栏选择 Build > Pipelines,然后选择 New pipeline
示例,查看此项目
从 GitLab 管理的应用迁移
GitLab 管理的应用 (GMA) 在 GitLab 14.0 中已弃用,在 GitLab 15.0 中已移除。 Kubernetes agent 不支持它们。要从 GMA 迁移到 agent,请执行以下步骤:
迁移集群管理项目
请参阅如何将集群管理项目与 GitLab agent for Kubernetes 一起使用
迁移集群监控功能
一旦您使用 Kubernetes agent 将 Kubernetes 集群连接到 GitLab,在启用用户访问后,您可以使用 Kubernetes 仪表板