3、Flux安装与引导:使用Flux CLI安装、Bootstrap到GitHub/GitLab、多租户引导策略
Flux 的安装与引导是 GitOps 实践落地的第一步。本章将深入讲解如何使用 Flux CLI 完成安装、通过 Bootstrap 命令将集群与 Git 仓库(GitHub / GitLab)绑定,以及面向企业级场景的多租户引导策略。掌握这些内容后,你可以在 5 分钟内让一个 Kubernetes 集群具备完整的 GitOps 能力。
3.1 安装 Flux CLI
Flux CLI 是操作 Flux 的核心工具,支持安装、引导、诊断和升级。推荐在本地开发机或 CI/CD 环境中安装。
3.1.1 安装方式对比
| 操作系统 | 安装命令 | 验证命令 |
|---|---|---|
| macOS (Homebrew) | brew install fluxcd/tap/flux |
flux --version |
| Linux (脚本) | curl -s https://fluxcd.io/install.sh | sudo bash |
flux --version |
| Windows (Chocolatey) | choco install flux |
flux --version |
| 二进制下载 | 从 GitHub Releases 下载对应平台二进制 | ./flux --version |
最佳实践:安装完成后,执行
flux check --pre 检查集群是否满足 Flux 的运行时要求(如 Kubernetes 版本 ≥ 1.21、集群有足够的 RBAC 权限)。
3.2 Bootstrap 到 GitHub
Bootstrap 是 Flux 的核心引导流程:它会自动在目标 Git 仓库中创建 Flux 组件所需的 YAML 清单,并将这些清单应用到集群,实现集群与仓库的初始同步。
3.2.1 前置条件
- 一个可用的 Kubernetes 集群(本地 Kind / Minikube 或云上集群均可)。
- 一个 GitHub 个人访问令牌(PAT),权限范围:
repo(完整控制)。 - 已安装 Flux CLI 并配置好
kubectl上下文。
3.2.2 执行 Bootstrap
# 设置 GitHub 令牌环境变量
export GITHUB_=<your-personal-access->
export GITHUB_USER=<your-github-username>
# 执行 Bootstrap 到 GitHub
flux bootstrap github \
--owner=$GITHUB_USER \
--repository=fleet-infra \
--branch=main \
--path=./clusters/my-cluster \
--personal
参数说明:
--owner:GitHub 用户名或组织名。--repository:存放 Flux 配置的仓库名(如不存在则自动创建)。--branch:目标分支,推荐main。--path:仓库内子路径,用于多集群管理。--personal:使用个人账号而非组织。
执行结果:Bootstrap 完成后,Flux 会在集群中部署 source-controller、kustomize-controller、helm-controller、notification-controller 四个核心组件,并在
flux-system 命名空间中运行。
3.3 Bootstrap 到 GitLab
GitLab 的引导流程与 GitHub 类似,但需要额外配置 Deploy 或 Personal Access 。
3.3.1 前置条件
- GitLab 个人访问令牌(PAT),权限范围:
api、read_repository、write_repository。 - GitLab 项目 ID 或项目路径。
3.3.2 执行 Bootstrap
# 设置 GitLab 令牌环境变量
export GITLAB_=<your-gitlab->
# 执行 Bootstrap 到 GitLab
flux bootstrap gitlab \
--owner=my-group \
--repository=fleet-infra \
--branch=main \
--path=./clusters/my-cluster \
---auth \
--personal
关键差异点:
---auth:使用令牌认证而非 SSH 密钥。--owner:GitLab 组名或用户名。- GitLab 引导会自动创建 Deploy Key 并配置 Webhook,实现自动同步。
注意:如果使用 GitLab 自托管实例,需要额外指定
--hostname 参数,例如 --hostname=gitlab.example.com。
3.4 Bootstrap 流程可视化
下图展示了 Flux Bootstrap 从 CLI 到集群与 Git 仓库绑定的完整流程:
3.5 多租户引导策略
在企业环境中,多个团队共享同一个集群时,需要实施多租户隔离。Flux 支持通过 Kustomize 覆盖和 RBAC 绑定实现租户级别的引导。
3.5.1 多租户架构设计
推荐使用 Repository-per-Tenant 或 Path-per-Tenant 两种模式:
| 模式 | 描述 | 适用场景 | 隔离级别 |
|---|---|---|---|
| Repository-per-Tenant | 每个租户拥有独立的 Git 仓库 | 租户间完全隔离,安全要求高 | 强隔离 |
| Path-per-Tenant | 所有租户共享一个仓库,通过子路径区分 | 团队协作紧密,管理成本低 | 中等隔离 |
3.5.2 多租户引导步骤
- 创建租户命名空间:为每个租户创建独立的命名空间,例如
tenant-alpha、tenant-beta。 - 配置 RBAC:为每个租户绑定
RoleBinding,限制其只能操作自身命名空间。 - 引导 Flux 到租户路径:使用
flux bootstrap时指定不同的--path参数。 - 部署租户控制器:为每个租户部署独立的
Kustomization和GitRepository资源。
3.5.3 多租户引导示例
# 租户 Alpha 引导
flux bootstrap github \
--owner=my-org \
--repository=fleet-infra \
--branch=main \
--path=./tenants/alpha/cluster \
--personal
# 租户 Beta 引导
flux bootstrap github \
--owner=my-org \
--repository=fleet-infra \
--branch=main \
--path=./tenants/beta/cluster \
--personal
关键配置:在
tenants/alpha/cluster/flux-system/ 目录下,可以放置租户专属的 kustomization.yaml,通过 patches 字段覆盖全局配置,实现租户级别的差异化。
3.6 多租户引导架构图
下图展示了基于 Path-per-Tenant 模式的多租户引导架构:
3.7 验证与排错
引导完成后,使用以下命令验证 Flux 状态:
# 查看 Flux 组件运行状态
flux check
# 查看所有 Kustomization 资源
flux get kustomizations --all-namespaces
# 查看所有 GitRepository 源
flux get sources git --all-namespaces
# 查看同步状态
flux reconcile kustomization flux-system --with-source
排错技巧:如果同步失败,首先检查
kubectl describe gitrepository -n flux-system 查看源仓库的认证状态,然后检查 kubectl logs -n flux-system deployment/kustomize-controller 查看控制器日志。
3.8 本章小结
- Flux CLI 是安装和引导的唯一入口,支持多平台安装。
- Bootstrap 命令自动完成 Git 仓库初始化、组件部署和集群绑定。
- GitHub 和 GitLab 的引导流程基本一致,仅认证方式略有差异。
- 多租户引导 通过仓库路径或独立仓库实现,结合 RBAC 确保租户隔离。
- 引导完成后,务必使用
flux check和flux get验证集群状态。