{{< details >}}

  • Tier: 基础版,专业版,旗舰版
  • Offering: JihuLab.com,私有化部署

{{< /details >}}

要将您的 Kubernetes 集群连接到极狐GitLab,您可以使用:

在极狐GitLab 14.5 中,基于证书的集成已被弃用。弃用计划如下所述:

如果您正在使用基于证书的集成,应尽快迁移到其他工作流。

通常情况下,要迁移依赖极狐GitLab CI/CD 的集群,您可以使用 CI/CD 工作流。此工作流使用代理连接到您的集群。代理:

  • 不暴露于互联网。
  • 不需要具有极狐GitLab 的完整 cluster-admin 访问权限。

{{< alert type=”note” >}}

基于证书的集成曾用于流行的极狐GitLab 功能,如极狐GitLab 管理的应用程序、极狐GitLab 管理的集群和 Auto DevOps。

{{< /alert >}}

查找基于证书的集群

您可以使用专用 API,在极狐GitLab 实例或群组中查找所有基于证书的集群,包括子群组和项目。使用群组 ID 查询 API 会返回在提供的群组内或以下定义的所有基于证书的集群。

在父群组中定义的集群在这种情况下不会被返回。这种行为帮助群组所有者查找他们需要迁移的所有集群。

禁用的集群也会被返回,以避免意外遗留集群。

{{< alert type=”note” >}}

集群发现 API 不适用于个人命名空间。

{{< /alert >}}

迁移通用部署

要迁移通用部署:

  1. 安装 极狐GitLab Kubernetes 代理
  2. 遵循 CI/CD 工作流来授权代理访问群组和项目,或通过模拟来保护访问
  3. 在左侧边栏中,选择 运维 > Kubernetes 集群
  4. 从基于证书的集群部分,打开服务相同环境范围的集群。
  5. 选择 详情 选项卡并关闭集群。

从极狐GitLab 管理的集群迁移到 Kubernetes 资源

{{< details >}}

  • Tier: 专业版,旗舰版

{{< /details >}}

使用极狐GitLab 管理的集群时,极狐GitLab 为每个分支创建单独的服务帐户和命名空间,并使用这些资源进行部署。

现在,您可以使用 极狐GitLab 管理的 Kubernetes 资源来自助服务资源,并增强安全控制。

使用极狐GitLab 管理的 Kubernetes 资源,您可以:

  • 在不进行人工干预的情况下安全地设置环境。
  • 在不赋予开发人员集群管理权限的情况下控制资源创建和访问。
  • 在开发人员创建新项目或环境时,为开发人员提供自助服务功能。
  • 允许开发人员在专用或共享命名空间中部署测试和开发版本。

先决条件:

要从极狐GitLab 管理的集群迁移到极狐GitLab 管理的 Kubernetes 资源:

  1. 如果您正在迁移现有环境,请通过 Kubernetes 仪表板环境 API为环境配置代理。
  2. 配置代理以在您的代理配置文件中开启资源管理:

    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
    
  3. .gitlab/agents/<agent-name>/environment_templates/default.yaml 下创建一个环境模板。检查证书集群集成页面中的 每个环境的命名空间 复选框状态。

    如果 每个环境的命名空间 已选中,请使用以下模板:

    objects:
      - apiVersion: v1
        kind: Namespace
        metadata:
          name: {{ .project.slug }}-{{ .project.id }}-{{ .environment.slug }}
      - apiVersion: rbac.authorization.k8s.io/v1
        kind: RoleBinding
        metadata:
          name: bind-{{ .agent.id }}-{{ .project.id }}-{{ .environment.slug }}
          namespace: {{ .project.slug }}-{{ .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
    

    如果 每个环境的命名空间 未选中,请使用以下模板:

    objects:
      - apiVersion: v1
        kind: Namespace
        metadata:
          name: {{ .project.slug }}-{{ .project.id }}
      - apiVersion: rbac.authorization.k8s.io/v1
        kind: RoleBinding
        metadata:
          name: bind-{{ .agent.id }}-{{ .project.id }}-{{ .environment.slug }}
          namespace: {{ .project.slug }}-{{ .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
    
  4. 在您的 CI/CD 配置中,使用 environment.kubernetes.agent: <path/to/agent/project:agent-name> 语法。
  5. 在左侧边栏中,选择 运维 > Kubernetes 集群
  6. 从基于证书的集群部分,打开服务相同环境范围的集群。
  7. 选择 详情 选项卡并关闭集群。

从 Auto DevOps 迁移

在您的 Auto DevOps 项目中,您可以使用极狐GitLab 代理与您的 Kubernetes 集群连接。

先决条件

要从 Auto DevOps 迁移:

  1. 在极狐GitLab 中,转到您使用 Auto DevOps 的项目。
  2. 添加三个变量。在左侧边栏中,选择 设置 > CI/CD 并展开 变量
    • 添加一个名为 KUBE_INGRESS_BASE_DOMAIN 的密钥,并将应用程序部署域作为值。
    • 添加一个名为 KUBE_CONTEXT 的密钥,值类似 path/to/agent/project:agent-name。 选择您选择的环境范围。 如果您不确定代理的上下文是什么,请编辑您的 .gitlab-ci.yml 文件并添加一个作业以查看可用的上下文:

       deploy:
        image:
          name: bitnami/kubectl:latest
          entrypoint: [""]
        script:
        - kubectl config get-contexts
      
    • 添加一个名为 KUBE_NAMESPACE 的密钥,并设置 Kubernetes 命名空间作为目标部署的值。设置相同的环境范围。
  3. 选择 添加变量
  4. 在左侧边栏中,选择 运维 > Kubernetes 集群
  5. 从基于证书的集群部分,打开服务相同环境范围的集群。
  6. 选择 详情 选项卡并禁用集群。
  7. 编辑您的 .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"
    
  8. 要测试您的流水线,请在左侧边栏中选择 构建 > 流水线,然后选择 新建流水线

从极狐GitLab 管理的应用程序迁移

极狐GitLab 管理的应用程序 (GMA) 在极狐GitLab 14.0 中已弃用,并在极狐GitLab 15.0 中移除。Kubernetes 代理不支持它们。要从 GMA 迁移到代理,请执行以下步骤:

  1. 从极狐GitLab 管理的应用程序迁移到集群管理项目
  2. 迁移集群管理项目以使用代理

迁移集群管理项目

查看如何使用集群管理项目与极狐GitLab 代理

迁移集群监控功能

一旦您使用 Kubernetes 代理将 Kubernetes 集群连接到极狐GitLab,您可以在启用用户访问后使用Kubernetes 仪表板