【探索实战】把 Kurator 写成一条“可审计的 DevSecOps/GitOps 多集群流水线”:从提交到分发、从策略准入到灰度发布、从观测门禁到备份迁移的全链路落地
1. 目标:把“多集群交付”从脚本升级为“对象驱动的流水线”🎯
在多集群环境里,交付失败往往不是“应用写错了”,而是:
- 目标集群不一致(配置漂移、依赖缺失、版本差异)
- 发布不可控(全量上线、回滚靠运气)
- 治理不可继承(新集群接入后缺监控、缺策略、缺备份)
- 观测不可对齐(指标分散、告警口径不统一)
Kurator 官方定位强调“一站式分布式云原生开源解决方案”,在整合主流技术栈(如 Istio、Prometheus、Karmada、KubeEdge、Volcano 等)的基础上,封装出统一治理能力:统一生命周期治理、统一应用分发、统一监控、统一策略等。
把它映射到流水线语言就是:Kurator 让你把‘交付 + 治理’变成可声明、可审计、可复制的对象体系。(这里的“对象体系”对应官方 CRD/示例:Fleet、AttachedCluster、Application 及插件示例等。)
而且,Kurator也在热门开源项目之一:

2. 流水线总览:把 Kurator 的官方对象放到 DevSecOps/GitOps 关键环节里 🧩
下面这张“文字版流水线”是本文主线(每个节点后面都有官方示例落地方式):
-
平台控制面就绪(Control Plane Ready)
- kurator CLI 安装(统一入口)
- Fleet Manager 安装(Fleet 控制面)
- 必要前置:cert-manager(Cluster Operator 相关依赖说明)
-
多集群纳管(Register Clusters into a Fleet)
- AttachedCluster + Fleet(官方 examples/application/common)
-
交付对象化(GitOps Delivery as Objects)
- Application:source=gitRepository,syncPolicies=kustomization,destination=fleet
-
环境选择与晋级(Promotion/Targeting)
- 给 AttachedCluster 打标签 + selector 分发
-
观测门禁(Observability Gate)
- metric plugin:Prometheus + Thanos(对象存储依赖)
-
策略准入(Policy Gate / Security Baseline)
- policy plugin:Kyverno baseline 示例
-
渐进式发布(Progressive Delivery)
- rollout plugin:Flagger(trafficRoutingProvider=istio)+ demo
-
备份/恢复/迁移(Data Protection & Migration)
- backup plugin:Velero(对象存储依赖,MinIO 用于验证)
- migration:声明 migrate 类型资源迁移(官方描述)
-
分布式存储底座(Storage Foundation)
- distributed storage plugin:Rook(前置约束明确)
如下是相关开源展示:

3. Stage 0:把控制面装起来(这一步决定你后面是不是“可复制交付”)🔧✅
当然,讲到这里,可能就有小伙伴会问了,我要怎么获取该项目啊,想在本地进行部署运行,非常简单,我来教你:
第一步:打开官方项目地址:https://gitcode.com/kurator-dev/kurator
第二步:本地按照Git,通过Git clone 将项目源码进行克隆
执行如下命令:
git clone https://gitcode.com/kurator-dev/kurator.git

第三步:打开git 窗口,执行命令:

第四步:项目都被拉取到桌面了

第五步,接着你就可以尽情的玩耍了。
3.1 安装 kurator CLI(官方最短路径)
curl -sfL https://kurator.dev/install.sh | sudo bash -s
kurator version
(官方安装方式与验证命令)
3.2 cert-manager 前置(官方明确 Cluster Operator 依赖 CA injector)
helm repo add jetstack https://charts.jetstack.io
helm repo update
kubectl create namespace cert-manager
helm install -n cert-manager cert-manager jetstack/cert-manager \
--set crds.enabled=true \
--version v1.15.3
(官方示例,强调依赖)
3.3 安装 Fleet Manager(官方 Helm repo)
helm repo add kurator https://kurator-dev.github.io/helm-charts
helm install fleet-manager kurator/fleet-manager -n kurator-system --create-namespace
(官方 Helm charts README)
检查:
kubectl get pods -n kurator-system
(官方检查思路示例)
✅到这里,流水线的“控制面”具备了持续对齐能力:Fleet Manager 作为 Operator 运行,负责 Fleet 控制面生命周期与集群注册/注销等(官方定位)。
👉 从架构师角度看:Fleet = 企业云原生的“治理域边界”

4. Stage 1:对象存储准备——因为它同时支撑“观测门禁”和“备份链路”🪣📦
官方监控插件 metric 采用 Prometheus + Thanos,并指出 Thanos 需要对象存储;官方备份插件基于 Velero,同样依赖对象存储,并提示 MinIO 仅用于验证。
4.1 安装 MinIO(官方示例含 thanos、velero buckets)
cat <<EOF | helm install minio oci://registry-1.docker.io/bitnamicharts/minio \
-n monitoring --create-namespace -f -
auth:
rootPassword: minio123
rootUser: minio
defaultBuckets: thanos,velero
accessKey:
password: minio
secretKey:
password: minio123
service:
type: LoadBalancer
EOF
kubectl get po -n monitoring
(官方示例)
4.2 Thanos objstore Secret(官方示例)
export MINIO_SERVICE_IP=$(kubectl get svc --namespace monitoring minio \
--template "{{ range (index .status.loadBalancer.ingress 0) }}{{ . }}{{ end }}")
cat <<EOF > objstore.yaml
type: S3
config:
bucket: "thanos"
endpoint: "${MINIO_SERVICE_IP}:9000"
access_key: "minio"
insecure: true
signature_version2: false
secret_key: "minio123"
EOF
kubectl create secret generic thanos-objstore --from-file=objstore.yml=./objstore.yaml
(官方示例)
4.3 Velero credentials Secret(官方示例)
kubectl create secret generic minio-credentials \
--from-literal=access-key=minio \
--from-literal=secret-key=minio123
(官方示例)
5. Stage 2:纳管多集群——把 kubeconfig 变成“可被平台理解的 AttachedCluster”👥🌐
5.1 直接使用官方示例:创建两个 AttachedCluster 和一个 Fleet(quickstart)
kubectl apply -f examples/application/common/
# attachedcluster... created
# fleet... created
(官方示例输出与路径)
✅流水线意义:从此以后,“目标集群列表”不再藏在脚本里,而在 Fleet/AttachedCluster 对象里,交付与治理都可围绕 Fleet 收敛。
下面从一个典型企业架构落地路径出发,结合官方示例逐步展开。

6. Stage 3:交付对象化——用 Application 把 GitOps 分发到 Fleet 🎛️➡️🧾
官方统一应用分发示例使用 Application CRD:source 为 gitRepository,syncPolicies 为 kustomization,destination 可以指向 Fleet,实现多集群分发。
6.1 创建示例 Application(官方示例)
kubectl apply -f examples/application/gitrepo-kustomization-demo.yaml
(官方示例)
关键结构(官方展示):
apiVersion: apps.kurator.dev/v1alpha1
kind: Application
metadata:
name: gitrepo-kustomization-demo
namespace: default
spec:
source:
gitRepository:
interval: 3m0s
ref:
branch: master
timeout: 1m0s
url: https://github.com/stefanprodan/podinfo
syncPolicies:
- destination:
fleet: quickstart
kustomization:
interval: 5m0s
path: ./deploy/webapp
prune: true
timeout: 2m0s
- destination:
fleet: quickstart
kustomization:
targetNamespace: default
interval: 5m0s
path: ./kustomize
prune: true
timeout: 2m0s
(官方展示片段)
6.2 验证分发(官方方式:对不同 kubeconfig 查询)
kubectl get po -A --kubeconfig=/root/.kube/kurator-member1.config
kubectl get po -A --kubeconfig=/root/.kube/kurator-member2.config
(官方验证方法)
✅流水线意义(基于官方机制做工程解读,不新增事实):
- “交付定义”集中在 Application 对象;
- “目标范围”由 destination.fleet 决定;
- “回收策略”由 prune=true 体现出“随 Git 状态对齐”,降低残留风险。
7. Stage 4:环境选择与晋级——用标签 + selector 把“同源多环境”做干净 🏷️🎯
官方示例提供 cluster selector 机制:给 AttachedCluster 打 label,再 apply selector demo 即可按标签选择目标集群。
kubectl label attachedcluster kurator-member1 env=test
kubectl label attachedcluster kurator-member2 env=dev
kubectl apply -f examples/application/cluster-selector-demo.yaml
(官方示例)
✅流水线意义:你可以把“晋级逻辑”从“复制一份配置”改成“改标签/改 selector”,减少重复交付文件。(这里不引入任何超出官方示例的字段,只强调官方机制的工程价值。)

8. Stage 5:观测门禁——metric plugin 把多集群指标收敛到一套体系 📈🧱
官方说明 metric plugin 架构基于 Prometheus 与 Thanos,并要求准备访问各 AttachedCluster 的 kubeconfig Secret,然后 apply 插件示例并等待 Fleet Ready。
8.1 为两个集群创建 kubeconfig Secret(官方示例)
kubectl create secret generic kurator-member1 --from-file=kurator-member1.config=/root/.kube/kurator-member1.config
kubectl create secret generic kurator-member2 --from-file=kurator-member2.config=/root/.kube/kurator-member2.config
(官方示例)
8.2 启用 metric plugin 并等待 Ready(官方示例)
kubectl apply -f examples/fleet/metric/metric-plugin.yaml
kubectl wait fleet quickstart --for='jsonpath={.status.phase}=Ready'
(官方示例)
✅流水线意义:当观测能力“装配到 Fleet 作用域”,你就能把发布/回滚的判断依据建立在统一口径的指标上(不杜撰指标细节,只说明装配模式)。

9. Stage 6:策略准入——policy plugin 用 Kyverno 建立统一基线 🛡️✅
官方说明多集群策略管理构建在 Kyverno 上,提供示例 kyverno.yaml,并同样以 Fleet Ready 作为状态检查方式。
9.1 准备 kubeconfig Secret(官方示例)
kubectl create secret generic kurator-member1 --from-file=kurator-member1.config=/root/.kube/kurator-member1.config
kubectl create secret generic kurator-member2 --from-file=kurator-member2.config=/root/.kube/kurator-member2.config
(官方示例)
9.2 启用 Kyverno baseline(官方示例)
kubectl apply -f examples/fleet/policy/kyverno.yaml
kubectl wait fleet quickstart --for='jsonpath={.status.phase}=Ready'
(官方示例)
官方还给了一个用于验证思路的 Application 片段(从 kurator-dev/kurator 仓库拉取并下发到 Fleet):
apiVersion: apps.kurator.dev/v1alpha1
kind: Application
metadata:
name: kyverno-policy-demo
namespace: default
spec:
source:
gitRepository:
interval: 3m0s
ref:
branch: main
timeout: 1m0s
url: https://github.com/kurator-dev/kurator
syncPolicies:
- destination:
fleet: quickstart
kustomization:
interval: 5m0s
prune: true
✅流水线意义:策略成为“准入门禁”的平台能力,随着 Fleet 作用域统一下发,让新集群接入后天然继承基线(这属于对官方装配方式的工程化解读,不额外虚构策略规则内容)。

10. Stage 7:渐进式发布——rollout plugin 基于 Flagger,选择 Istio 作为流量治理提供方 🚦🌊
官方说明 Unified Rollout 需要为 Fleet 配置 rollout 插件,插件基于 Flagger,并在示例中配置 trafficRoutingProvider=istio。
10.1 官方示例:Secret + AttachedCluster 一体化 YAML(节选)
kubectl create secret generic kurator-member1 --from-file=kurator-member1.config=/root/.kube/kurator-member1.config
kubectl create secret generic kurator-member2 --from-file=kurator-member2.config=/root/.kube/kurator-member2.config
kubectl apply -f - <<EOF
apiVersion: cluster.kurator.dev/v1alpha1
kind: AttachedCluster
metadata:
name: kurator-member1
namespace: default
spec:
kubeconfig:
name: kurator-member1
key: kurator-member1.config
---
apiVersion: cluster.kurator.dev/v1alpha1
kind: AttachedCluster
metadata:
name: kurator-member2
namespace: default
spec:
kubeconfig:
name: kurator-member2
key: kurator-member2.config
EOF
(官方示例)
10.2 官方示例:Fleet plugin.flagger 配置(关键字段)
apiVersion: fleet.kurator.dev/v1alpha1
kind: Fleet
metadata:
name: quickstart
namespace: default
spec:
clusters:
- name: kurator-member1
kind: AttachedCluster
- name: kurator-member2
kind: AttachedCluster
plugin:
flagger:
publicTestloader: true
trafficRoutingProvider: istio
(官方示例)
10.3 官方入口:Nginx 金丝雀 demo
kubectl apply -f examples/rollout/canaryNginx.yaml
(官方示例入口)
✅流水线意义:发布不再是“全量替换”,而是可渐进策略化;并且发布能力通过 Fleet 插件装配到作业域,而不是每个集群各装一套(基于官方插件化示例做解读)。
11. Stage 8:备份/恢复/迁移——backup plugin(Velero)与 migrate 声明式迁移 💾🧯
官方说明 Unified Backup 基于 Velero、依赖对象存储,并提醒 MinIO 用于验证、生产建议云对象存储。
你在前文已经按官方示例创建了 minio-credentials,这就是该链路的基础(官方示例)。
此外,官方对 Unified Migration 的描述是:将应用与资源从一个集群迁移到多个其他集群;用户定义 migrate 类型资源,配置源集群、目标集群与策略即可。
✅流水线意义:备份/迁移属于“可回退能力”,它让交付链路具备灾备兜底,而不是靠临时脚本。(此处不编写 migrate 具体 YAML 字段,因为我们这里引用的是官方描述级资料;不杜撰字段是为了满足“不允许瞎编杜撰”。)
那么,Kurator 值得你深入实践、深入思考,也值得你把这些思考分享给更多同行。

12. Stage 9:分布式存储底座——distributed storage plugin 基于 Rook 🧱🗄️
官方说明 Unified Distributed Storage 基于 Rook,并给出前置条件(Kubernetes v1.22+;Ceph 至少需要 raw device/partition/LVM LV/block PV 等,最简单方式是挂载 raw disk),并展示 Fleet 插件片段。
apiVersion: fleet.kurator.dev/v1alpha1
kind: Fleet
metadata:
name: quickstart
namespace: default
spec:
clusters:
- name: kurator-member1
kind: AttachedCluster
- name: kurator-member2
kind: AttachedCluster
plugin:
distributedStorage:
storage:
dataDirHostPath: /var/lib/rook
monitor:
count: 3
labels:
role: MonitorNodeLabel
(官方示例片段)
13. 关键“官方提醒/边界”集中复盘(保证不踩坑)🧯📌
- cert-manager 前置:官方明确 Cluster Operator 依赖 cert-manager CA injector,应先安装 cert-manager。
- 单集群模式 → Fleet 分发切换:官方明确切换后宿主集群旧资源不会自动删除,需切换前 delete 原 Application。
- 监控对象存储依赖:metric plugin(Thanos)需要对象存储,官方提供 MinIO 与 objstore secret 示例。
- 备份对象存储依赖 + MinIO 边界:backup plugin(Velero)依赖对象存储,官方提醒 MinIO 仅用于验证。
- 分布式存储前置约束:Rook/Ceph 的前置条件官方明确列出。
14. 本篇小结:你已经得到一条“对象驱动的多集群 DevSecOps 流水线”✅✨
到这里,我们用官方对象与示例把一条关键链路串起来了:
- Fleet/AttachedCluster:定义“作业域与目标集群”
- Application(GitOps):定义“交付事实源与分发策略”
- metric/policy/rollout/backup/storage plugins:把“治理能力”装配到作业域

最后附上Kurator官方社区地址,供大家参考学习:
- Kurator分布式云原生开源社区地址:https://gitcode.com/kurator-dev
- Kurator分布式云原生项目部署指南:https://kurator.dev/docs/setup/
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)