Help us learn about your current experience with the documentation. Take the survey.

开始将 Kubernetes 集群连接到 GitLab

本页面将指导您在单个项目中设置基本的 Kubernetes 集成。如果您是 GitLab agent for Kubernetes、基于拉取的部署(pull-based deployment)或 Flux 的新手,您应该从这里开始。

完成本教程后,您将能够:

  • 通过实时 Kubernetes 仪表板查看您的 Kubernetes 集群状态。
  • 使用 Flux 将更新部署到您的集群。
  • 使用 GitLab CI/CD 将更新部署到您的集群。

开始之前

在完成本教程之前,请确保您已准备好以下内容:

  • 一个可以通过 kubectl 本地访问的 Kubernetes 集群。 要查看 GitLab 支持的 Kubernetes 版本,请参阅 GitLab 功能支持的 Kubernetes 版本

    您可以通过运行以下命令来检查一切是否配置正确:

    kubectl cluster-info

安装和配置 Flux

Flux 是 GitOps 部署(也称为基于拉取的部署)的推荐工具。Flux 是一个成熟的 CNCF 项目。

要安装 Flux:

通过运行以下命令检查 Flux CLI 是否已正确安装:

flux -v

创建个人访问令牌

要使用 Flux CLI 进行身份验证,请创建一个具有 api 范围的个人访问令牌:

  1. 在左侧边栏中,选择您的头像。
  2. 选择 编辑个人资料
  3. 在左侧边栏中,选择 访问令牌
  4. 为令牌输入一个名称和可选的过期日期。
  5. 选择 api 范围。
  6. 选择 创建个人访问令牌

您也可以使用具有 api 范围和 maintainer 角色的 项目访问令牌群组访问令牌

引导 Flux

在本节中,您将使用 flux bootstrap 命令将 Flux 引导到一个空的 GitLab 仓库中。

要引导 Flux 安装:

  • 运行 flux bootstrap gitlab 命令。例如:

    flux bootstrap gitlab \
    --hostname=gitlab.example.org \
    --owner=my-group/optional-subgroup \
    --repository=my-repository \
    --branch=main \
    --path=clusters/testing \
    --deploy-token-auth

bootstrap 的参数如下:

参数 描述
hostname 您 GitLab 实例的主机名。
owner 包含 Flux 仓库的 GitLab 群组。
repository 包含 Flux 仓库的 GitLab 项目。
branch 提交更改的 Git 分支。
path 存储 Flux 配置的文件夹的文件路径。

引导脚本执行以下操作:

  1. 创建一个部署令牌并将其保存为 Kubernetes secret
  2. 如果 --repository 参数指定的项目不存在,则创建一个空的 GitLab 项目。
  3. --path 参数指定的文件夹中为您的项目生成 Flux 定义文件。
  4. 将定义文件提交到 --branch 参数指定的分支。
  5. 将定义文件应用到您的集群。

运行脚本后,Flux 将准备好管理其自身以及您添加到 GitLab 项目和路径中的任何其他资源。

本教程的其余部分假设您的路径是 clusters/testing,并且您的项目位于 my-group/optional-subgroup/my-repository

设置代理程序连接

要连接您的集群,您需要安装 GitLab agent for Kubernetes。 您可以使用 GitLab CLI (glab) 引导代理程序来做到这一点。

  1. 安装 GitLab CLI

    要检查 GitLab CLI 是否可用,请运行

    glab version
  2. 对您的 GitLab 实例进行 glab 身份验证

  3. 在您引导 Flux 的仓库中,运行 glab cluster agent bootstrap 命令:

    glab cluster agent bootstrap --manifest-path clusters/testing testing

默认情况下,该命令:

  1. 使用 testing 作为名称注册代理程序。
  2. 配置代理程序。
  3. 配置一个名为 testing 的环境,并为代理程序配备一个仪表板。
  4. 创建一个代理令牌。
  5. 在集群中,使用代理令牌创建一个 Kubernetes secret。
  6. 将 Flux Helm 资源提交到 Git 仓库。
  7. 触发 Flux 协调。

有关配置代理程序的更多信息,请参阅 安装 Kubernetes 代理程序

查看 Kubernetes 仪表板

glab cluster agent bootstrap 在 GitLab 中创建了一个环境并 配置了一个仪表板

要查看您的仪表板:

  1. 在左侧边栏中,选择 搜索或跳转至 并找到您的项目。
  2. 选择 运维 > 环境
  3. 选择您的环境。例如,flux-system/gitlab-agent
  4. 选择 Kubernetes 概览 选项卡。

保护部署

  • Tier: Premium, Ultimate

到目前为止,我们使用 .gitlab/agents/testing/config.yaml 文件部署了一个代理程序。 此配置使用为代理程序部署配置的服务账户启用用户访问。用户访问由 Kubernetes 仪表板和本地访问使用。

为了保持部署的安全性,您应该更改此设置以模拟 GitLab 用户。 在这种情况下,您可以通过常规的 Kubernetes 基于角色的访问控制 (RBAC) 管理对集群资源的访问。

要启用用户模拟:

  1. 在您的 .gitlab/agents/testing/config.yaml 文件中,将 user_access.access_as.agent: {} 替换为 user_access.access_as.user: {}

  2. 转到已配置的 Kubernetes 仪表板。如果访问受限,仪表板将显示错误消息。

  3. 将以下代码添加到 clusters/testing/gitlab-user-read.yaml

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
       name: gitlab-user-view
    roleRef:
       name: view
       kind: ClusterRole
       apiGroup: rbac.authorization.k8s.io
    subjects:
       - name: gitlab:user
         kind: Group
  4. 等待几秒钟以允许 Flux 应用添加的清单,然后再次检查 Kubernetes 仪表板。由于部署的集群角色绑定授予了所有 GitLab 用户的读取权限,仪表板应恢复正常。

有关用户访问的更多信息,请参阅 授予用户 Kubernetes 访问权限

保持最新

安装后,您可能需要升级 Flux 和 agentk

为此:

  • 重新运行 flux bootstrap gitlabglab cluster agent bootstrap 命令。

后续步骤

您可以直接从注册代理程序并存储 Flux 清单的项目部署到您的集群。代理程序旨在支持多租户,您可以使用已配置的代理程序和 Flux 安装将您的配置扩展到其他项目和群组。

建议您完成后续教程 开始部署到 Kubernetes。要了解更多有关在 GitLab 中使用 Kubernetes 的信息,请参阅: