etcd-operator 正式加入 Cozystack:v1alpha2 API 全新架构解析
etcd-operator 已捐赠给 Cozystack 项目,发布从零实现的 v1alpha2 API 版本。新版本放弃 StatefulSet,直接驱动 etcd 原生 Membership API 管理集群成员,支持 Learner 模式加入、优雅退出、缩容至零、内存存储、自动 TLS 证书管理、S3 快照等特性。详解架构变更、核心功能与迁移路径。
作者:核流 Admin · 栏目:资源
etcd-operator 项目已正式捐赠给 CNCF 沙箱项目 Cozystack,并同步发布了全新实现的 v1alpha2 API 版本。新版本API 组从 etcd.aenix.io 变更为 etcd-operator.cozystack.io,底层架构也从 StatefulSet 管理成员转向直接驱动 etcd 原生Membership API——通过 MemberAdd、MemberPromote、MemberRemove 操作精细控制集群成员关系。项目采用 Go 语言编写,基于 Apache 2.0 许可证发布 核心功能与架构亮点 新版本通过 EtcdCluster 和 EtcdMember 两个 CRD 管理 etcd 集群,每个成员的 Pod PVC Operator 独立协调。成员加入时先以 Learner 模式加入集群,确认数据同步完成后才提升为 Voting 成员;移除时优雅退出Quorum。集群可以暂停(缩容至零副本)并保留成员标识,恢复后即可重新加入。存储方面支持 PVC 和 tmpfs 两种模式——后者适用于可重建的数据场景,Pod 丢失后自动重建新成员 TLS 通信支持客户端与对等连接独立配置,用户可提供自有 Secret 或让 Operator 通过 cert-manager 自动签发并续期证书。认证方式为 root 用户模式,凭据通过 Secret 注入。快照功能通过 EtcdSnapshot 资源实现,支持备份到 S3 PVC,并可在初始启动时从快照恢复集群。Operator 自动创建 PodDisruptionBudget,防止节点 Drain 操作破坏 Quorum。所有 CRD 校验通过 CEL 表达式在 apiserver 侧完成,无需 Webhook 和 cert-manager 依赖 从 v1alpha1 迁移 与旧版本相比,新版本API 组、资源命名和校验方式均有显著变化。EtcdBackup 更名为 EtcdSnapshot,并将 Service 切换为 Headless 模式以支持稳定的按成员 DNS 名称。参数配置从自由格式 options 映射替换为类型化的结构化参数集,避免了与 Operator 逻辑冲突的配置问题。迁移工具 etcd-migrate 支持原地迁移——运行中的集群无需移动数据、重建 Pod 或丢失 Quorum,仅更改对象所有权、标签和注解后即可由Operator 接管。通过 DNS 名称访问集群的客户端无需任何修改 对于已经在生产环境中使用旧版本的用户,迁移过程经过精心设计,风险可控。与 etcd 官方 Operator 相比,v1alpha2 在功能覆盖上已经领先——官方 Operator 的路由图中多项功能尚未实现,v1alpha2 已经提供了包括缩容至零、内存存储、CEL 校验、自动 PDB 和 scale 子资源和 kubectl-etcd 插件在内的多项独家能力。如果你使用 Cozystack Kamaji 的多租户平台用户,这个 Operator 的成熟度尤其值得关注 要开始使用 etcd-operator,请访问 GitHub 仓库 aenix-io/etcd-operator,查看 README 中的安装指南和快速入门示例。项目采用标准的 Kubernetes Operator 部署方式,通过 kubectl apply 即可安装 CRD Controller。如果你已经在使用 Cozystack 平台,该 Operator 已内置可用;否则可通过 Helm Chart 或直接应用 YAML 清单部署到现有集群中 参考资料 GitHub:aenix-io/etcd-operatorCNCF Blog:etcd-operator joins Cozystack with a new v1alpha2 API