Flux Operator 是一个 Kubernetes CRD 控制器,用于管理 CNCF Flux CD 和 ControlPlane 企业发行版 的生命周期。该操作符通过自服务能力、部署窗口以及针对 GitHub、GitLab 和 Azure DevOps 拉取请求测试的预览环境扩展了 Flux。
Flux CD 自动驾驶 - 操作符提供了一种替代 Flux 引导过程的方法,它通过完全自动化 Flux 控制器的安装、配置和升级来消除跨集群舰队管理 Flux 的运营负担,基于声明式 API。
高级配置 - 操作符简化了 Flux 多租户锁定、分片、水平和垂直扩展、持久存储的配置,并允许使用 Kustomize 补丁微调 Flux 控制器。操作符简化了从 Git 作为集群期望状态交付机制到 OCI 资产和 S3 兼容存储的过渡。
深入洞察 - 操作符提供了对 Flux 管理的交付管道的深入洞察,包括关于 Flux 控制器准备状态、协调器统计信息和集群状态同步的详细报告和 Prometheus 指标。
自服务环境 - 操作符的 ResourceSet API 允许平台团队定义自己的应用程序标准,作为一个可以模板化、参数化并作为单个单元部署在自服务环境中的 Flux 和 Kubernetes 资源组。ResourceSet API 与 Git 拉取请求集成,创建临时环境进行测试和验证。
AI 辅助 GitOps - Flux MCP Server 将 AI 助手连接到运行操作符的 Kubernetes 集群,通过自然语言实现无缝交互。它充当 AI 工具和 GitOps 管道之间的桥梁,允许您分析跨环境的部署、故障排除问题并使用对话提示执行操作。
企业支持 - 操作符是 ControlPlane 企业产品 的关键组件,旨在自动将新的 Flux 版本、CVE 补丁和热修复安全可靠地部署到生产环境中。操作符与 ControlPlane Flux 发行版一起,在 Red Hat OpenShift、Amazon EKS、Azure AKS 和 Google GKE 上进行了端到端测试。
在 flux-system 命名空间中安装 Flux Operator,例如使用 Helm:
helm install flux-operator oci://ghcr.io/controlplaneio-fluxcd/charts/flux-operator \
--namespace flux-system
[!NOTE] Flux Operator 可以使用 Helm、Terraform、OperatorHub、kubectl 等方法安装。 更多信息,请参阅 安装指南。
在 flux-system 命名空间中创建一个名为 flux 的 FluxInstance 资源,以安装最新稳定的 Flux 版本:
apiVersion: fluxcd.controlplane.io/v1
kind: FluxInstance
metadata:
name: flux
namespace: flux-system
annotations:
fluxcd.controlplane.io/reconcileEvery: "1h"
fluxcd.controlplane.io/reconcileArtifactEvery: "10m"
fluxcd.controlplane.io/reconcileTimeout: "5m"
spec:
distribution:
version: "2.x"
registry: "ghcr.io/fluxcd"
artifact: "oci://ghcr.io/controlplaneio-fluxcd/flux-operator-manifests"
components:
- source-controller
- kustomize-controller
- helm-controller
- notification-controller
- image-reflector-controller
- image-automation-controller
cluster:
type: kubernetes
size: medium
multitenant: false
networkPolicy: true
domain: "cluster.local"
kustomize:
patches:
- target:
kind: Deployment
patch: |
- op: replace
path: /spec/template/spec/nodeSelector
value:
kubernetes.io/os: linux
- op: add
path: /spec/template/spec/tolerations
value:
- key: "CriticalAddonsOnly"
operator: "Exists"
[!NOTE] Flux 实例可以通过多种方式进行定制。 更多信息,请参阅 配置指南。
要从 Git 仓库同步集群状态,请向 FluxInstance 添加以下配置:
apiVersion: fluxcd.controlplane.io/v1
kind: FluxInstance
metadata:
name: flux
namespace: flux-system
spec:
sync:
kind: GitRepository
url: "https://github.com/my-org/my-fleet.git"
ref: "refs/heads/main"
path: "clusters/my-cluster"
pullSecret: "flux-system"
# distribution omitted for brevity
如果源仓库是私有的,则必须在 flux-system 命名空间中创建 Kubernetes 密钥,并应包含克隆仓库所需的凭据:
flux create secret git flux-system \
--url=https://github.com/my-org/my-fleet.git \
--username=git \
--password=$GITHUB_TOKEN
[!NOTE] 更多关于如何配置从 Git 仓库、容器注册表和 S3 兼容存储同步的信息,请参阅 集群同步指南。
要监控 Flux 部署状态,请检查 flux-system 命名空间中的
FluxReport 资源:
kubectl get fluxreport/flux -n flux-system -o yaml
报告定期更新,包含有关部署准备状态、发行详情、协调器统计信息、Flux CRD 版本、集群同步状态等信息。
Flux Operator 的 ResourceSet API 提供了一个高层次抽象,用于定义和管理 Flux 资源及相关 Kubernetes 对象作为单一单元。ResourceSet API 设计用于减少 GitOps 工作流的复杂性,并使开发者和平台团队能够自助服务。
指南:
我们欢迎通过 GitHub 拉取请求对 Flux Operator 项目做出贡献。请参阅 CONTRIBUTING 指南,了解如何设置开发环境并开始为项目做贡献的详细信息。
Flux Operator 是一个开源项目,根据 AGPL-3.0 许可证发布。
该项目由 CNCF Flux 核心维护者团队的一部分 ControlPlane 开发。