开始将 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 文档中完成 安装 Flux CLI 的步骤。
通过运行以下命令检查 Flux CLI 是否已正确安装:
flux -v创建个人访问令牌
要使用 Flux CLI 进行身份验证,请创建一个具有 api 范围的个人访问令牌:
- 在左侧边栏中,选择您的头像。
- 选择 编辑个人资料。
- 在左侧边栏中,选择 访问令牌。
- 为令牌输入一个名称和可选的过期日期。
- 选择
api范围。 - 选择 创建个人访问令牌。
您也可以使用具有 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 配置的文件夹的文件路径。 |
引导脚本执行以下操作:
- 创建一个部署令牌并将其保存为 Kubernetes
secret。 - 如果
--repository参数指定的项目不存在,则创建一个空的 GitLab 项目。 - 在
--path参数指定的文件夹中为您的项目生成 Flux 定义文件。 - 将定义文件提交到
--branch参数指定的分支。 - 将定义文件应用到您的集群。
运行脚本后,Flux 将准备好管理其自身以及您添加到 GitLab 项目和路径中的任何其他资源。
本教程的其余部分假设您的路径是 clusters/testing,并且您的项目位于 my-group/optional-subgroup/my-repository。
设置代理程序连接
要连接您的集群,您需要安装 GitLab agent for Kubernetes。
您可以使用 GitLab CLI (glab) 引导代理程序来做到这一点。
-
要检查 GitLab CLI 是否可用,请运行
glab version -
在您引导 Flux 的仓库中,运行
glab cluster agent bootstrap命令:glab cluster agent bootstrap --manifest-path clusters/testing testing
默认情况下,该命令:
- 使用
testing作为名称注册代理程序。 - 配置代理程序。
- 配置一个名为
testing的环境,并为代理程序配备一个仪表板。 - 创建一个代理令牌。
- 在集群中,使用代理令牌创建一个 Kubernetes secret。
- 将 Flux Helm 资源提交到 Git 仓库。
- 触发 Flux 协调。
有关配置代理程序的更多信息,请参阅 安装 Kubernetes 代理程序。
查看 Kubernetes 仪表板
glab cluster agent bootstrap 在 GitLab 中创建了一个环境并 配置了一个仪表板。
要查看您的仪表板:
- 在左侧边栏中,选择 搜索或跳转至 并找到您的项目。
- 选择 运维 > 环境。
- 选择您的环境。例如,
flux-system/gitlab-agent。 - 选择 Kubernetes 概览 选项卡。
保护部署
- Tier: Premium, Ultimate
到目前为止,我们使用 .gitlab/agents/testing/config.yaml 文件部署了一个代理程序。
此配置使用为代理程序部署配置的服务账户启用用户访问。用户访问由 Kubernetes 仪表板和本地访问使用。
为了保持部署的安全性,您应该更改此设置以模拟 GitLab 用户。 在这种情况下,您可以通过常规的 Kubernetes 基于角色的访问控制 (RBAC) 管理对集群资源的访问。
要启用用户模拟:
-
在您的
.gitlab/agents/testing/config.yaml文件中,将user_access.access_as.agent: {}替换为user_access.access_as.user: {}。 -
转到已配置的 Kubernetes 仪表板。如果访问受限,仪表板将显示错误消息。
-
将以下代码添加到
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 -
等待几秒钟以允许 Flux 应用添加的清单,然后再次检查 Kubernetes 仪表板。由于部署的集群角色绑定授予了所有 GitLab 用户的读取权限,仪表板应恢复正常。
有关用户访问的更多信息,请参阅 授予用户 Kubernetes 访问权限。
保持最新
安装后,您可能需要升级 Flux 和 agentk。
为此:
- 重新运行
flux bootstrap gitlab和glab cluster agent bootstrap命令。
后续步骤
您可以直接从注册代理程序并存储 Flux 清单的项目部署到您的集群。代理程序旨在支持多租户,您可以使用已配置的代理程序和 Flux 安装将您的配置扩展到其他项目和群组。
建议您完成后续教程 开始部署到 Kubernetes。要了解更多有关在 GitLab 中使用 Kubernetes 的信息,请参阅:
- 使用 GitLab 与 Kubernetes 集成的最佳实践
- 使用代理程序进行 运行时容器扫描
- 为您的工程师提供 远程工作区