安装 Flux 并 Bootstrap 集群
安装 Flux CLI,运行预检,并 bootstrap Flux,使其从 Git 管理自身。
本指南安装 Flux CLI,将 Flux bootstrap 到集群中,并展示它向你的 Git 仓库提交了什么。你需要为一个可以随意试验的集群配置好 kubectl。本地的 kind 或 minikube 集群是理想选择,另外还需要一个 GitHub 账号来存放仓库。
创建集群并安装 CLI
创建一个可随意丢弃的本地集群:
kind create cluster --name flux-demo
kubectl get nodes
使用 Homebrew 安装 Flux CLI,或在 Linux 上使用安装脚本:
brew install fluxcd/tap/flux
# or
curl -s https://fluxcd.io/install.sh | sudo bash
检查它是否可用:
flux --version
你也可以从发布页面下载二进制文件。Flux 支持最近的三个 Kubernetes 次版本,因此请使用比较新的集群。
运行预检
在 kubectl 指向你的集群时,询问 Flux 该集群是否兼容:
flux check --pre
你应该会看到 Kubernetes 版本,以及最后一行说明先决条件已满足。
创建个人访问令牌
Bootstrap 需要一个令牌,以便创建仓库、推送提交并注册部署密钥。在 GitHub 中,创建一个具有 repo 范围的经典个人访问令牌,或者一个对目标仓库的 Contents 和 Administration 具有读写权限的细粒度令牌。在当前 shell 中导出它:
export GITHUB_TOKEN=<your-token>
该令牌只在 bootstrap 期间由 CLI 使用。默认情况下,Flux 会为它的长期访问创建一个 SSH 部署密钥,而令牌不会存储在集群中,所以设置较短的过期时间(以天计,而不是月)是没问题的。
Bootstrap Flux
针对个人账号运行 bootstrap。如果仓库不存在,会被创建:
flux bootstrap github \
--owner=<your-github-user> \
--repository=fleet-infra \
--branch=main \
--path=clusters/dev \
--personal
对于组织,省略 --personal。重要的参数:
--repository是 Flux 存放它自己的清单,以及之后你的应用配置的地方。--path是仓库中此集群所同步的文件夹。每个集群使用一个路径,例如clusters/dev和clusters/production,这样一个仓库就能服务多个集群。--branch是 Flux 提交并跟踪的分支。
该命令会连接到 GitHub,克隆仓库,生成 Flux 清单,提交并推送它们,将 Flux 安装到集群中,并等待控制器就绪。你之后会遇到的两个变体:
--token-auth通过 HTTPS 使用个人访问令牌本身,而不是生成 SSH 部署密钥。--read-write-key授予部署密钥写权限。当 Flux 自己推送提交时,比如镜像自动化,你就需要它。
Bootstrap 可以安全地重复运行。用较新的 CLI 运行它会升级控制器,并且会采纳你传入的任何额外选项。
验证安装
flux check
kubectl get pods -n flux-system
flux check 会报告每个控制器是否健康。你应该会看到 source、kustomize、helm 和 notification 控制器正在运行。然后查看 Flux 提交了什么:
git clone https://github.com/<your-github-user>/fleet-infra.git
cd fleet-infra
tree clusters
clusters/
└── dev/
└── flux-system/
├── gotk-components.yaml # the Flux controllers and CRDs
├── gotk-sync.yaml # a GitRepository and Kustomization pointing back at this repo
└── kustomization.yaml
gotk 代表 GitOps Toolkit。gotk-sync.yaml 中的两个对象是整个配置的核心:
flux get sources git
flux get kustomizations
flux-system GitRepository 告诉 source-controller 你的仓库在哪里以及跟随哪个分支。flux-system Kustomization 告诉 kustomize-controller 应用该仓库中 ./clusters/dev 下的一切。你添加到该路径下的任何内容都会被自动拾取,下一篇指南正是这样部署一个应用的。
清理
要从集群中移除 Flux:
flux uninstall
这会移除控制器、CRD,以及 Flux 在集群中管理的资源。它不会删除你的 Git 仓库。对于本地实验,kind delete cluster --name flux-demo 会移除所有内容。
热门指南
-
推送与拉取:Flux 如何向 Kubernetes 交付 为什么基于拉取、由 Git 驱动的交付会改变你部署、保障安全和恢复集群的方式。 -
使用 GitRepository 与 Kustomization 部署你的第一个应用 通过 Kustomization 资源将 Flux 指向 Git 中的清单,并观察同步。 -
控制同步行为:间隔、Prune、漂移修正与回滚 决定 Flux 何时应用变更、删除什么、如何暂停它,以及如何撤销一次有问题的部署。 -
使用 Flux 镜像自动化实现镜像更新自动化 让 Flux 检测新的容器镜像标签,并将其提交回 Git。 -
使用 Flux 配置多集群 从一个仓库管理多个集群,包含共享基础设施和每个集群各自的差异。 -
Flux CD 与 Argo CD:如何选择 GitOps 工具 比较架构、UI、Helm、密钥、租户和镜像自动化,以选出合适的工具。