Flux CD Flux CD

安装 Flux 并 Bootstrap 集群

安装 Flux CLI,运行预检,并 bootstrap Flux,使其从 Git 管理自身。

10 min 初级

本指南安装 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 会移除所有内容。

热门指南