Skip to content

一个企业级的 etcd Kubernetes Operator,用于在 Kubernetes 集群中管理 etcd 实例,提供高可用、动态扩缩容、自动故障恢复和数据维护等功能

License

Notifications You must be signed in to change notification settings

VanLiuZhi/etcd-k8s-operator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ETCD Kubernetes Operator

Go Version Kubernetes License Build Status

一个企业级的 etcd Kubernetes Operator,用于在 Kubernetes 集群中管理 etcd 实例,提供高可用、动态扩缩容、自动故障恢复和数据维护等功能。

🚀 特性

✅ 已实现功能

  • CRD 定义: 完整的 EtcdCluster、EtcdBackup、EtcdRestore API
  • 资源管理: StatefulSet、Service、ConfigMap 自动生成
  • 基础控制器: Reconcile 循环和状态机实现
  • 测试框架: 单元测试、集成测试、端到端测试
  • 开发工具: 完整的测试脚本和开发文档
  • 集群生命周期: 创建、删除、更新流程完整实现
  • 动态扩缩容: 支持1→3节点扩容和3→2节点缩容,功能完全正常

🚧 开发中功能

  • 🚧 TLS 安全: 自动证书生成和管理
  • 🚧 健康检查: etcd 客户端健康监控

⚠️ 已知问题

  • ⚠️ 状态显示延迟: EtcdCluster资源的READY字段更新有延迟,不影响实际功能
    • 控制器内部状态正确,但kubectl输出状态可能有延迟
    • 功能完全正常,仅影响状态显示
    • 计划在下个版本修复

📋 计划功能

  • 📋 数据备份恢复: 支持定期备份和点时间恢复
  • 📋 故障恢复: 智能故障检测和自动恢复
  • 📋 监控集成: Prometheus 指标和 Grafana 仪表板

📋 系统要求

  • Kubernetes: 1.22 或更高版本
  • Go: 1.22.3 (开发环境)
  • Docker: 20.10+ (构建镜像)
  • Kind: 0.17+ (测试环境)

🏗️ 架构概览

┌─────────────────────────────────────────────────────────────┐
│                    Kubernetes Cluster                       │
├─────────────────────────────────────────────────────────────┤
│  ┌─────────────────┐    ┌─────────────────────────────────┐ │
│  │  ETCD Operator  │    │        ETCD Cluster             │ │
│  │                 │    │  ┌─────┐ ┌─────┐ ┌─────┐       │ │
│  │  ┌───────────┐  │    │  │Node1│ │Node2│ │Node3│       │ │
│  │  │Controller │  │◄──►│  └─────┘ └─────┘ └─────┘       │ │
│  │  └───────────┘  │    │                                 │ │
│  │  ┌───────────┐  │    │  ┌─────────────────────────┐   │ │
│  │  │  Webhook  │  │    │  │     Service & Ingress   │   │ │
│  │  └───────────┘  │    │  └─────────────────────────┘   │ │
│  └─────────────────┘    └─────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘

🚀 快速开始

1. 安装 Operator

# 使用 Helm 安装
helm repo add etcd-operator https://your-org.github.io/etcd-k8s-operator
helm install etcd-operator etcd-operator/etcd-operator

# 或者使用 kubectl 直接安装
kubectl apply -f https://github.com/your-org/etcd-k8s-operator/releases/latest/download/install.yaml

2. 创建 ETCD 集群

使用官方 etcd 镜像

apiVersion: etcd.etcd.io/v1alpha1
kind: EtcdCluster
metadata:
  name: my-etcd-cluster
  namespace: default
spec:
  size: 3
  version: "v3.5.21"
  repository: "quay.io/coreos/etcd"
  storage:
    size: "10Gi"
    storageClassName: "fast-ssd"  # 可选
  security:
    tls:
      enabled: true
      autoTLS: true
  resources:
    requests:
      cpu: "100m"
      memory: "128Mi"
    limits:
      cpu: "500m"
      memory: "512Mi"
kubectl apply -f etcd-cluster.yaml

3. 验证集群状态

# 检查集群状态
kubectl get etcdcluster my-etcd-cluster

# 查看详细信息
kubectl describe etcdcluster my-etcd-cluster

# 检查 Pod 状态
kubectl get pods -l app.kubernetes.io/name=etcd,app.kubernetes.io/instance=my-etcd-cluster

📚 文档

📋 项目管理文档

🔧 技术设计文档

🛠️ 开发

环境准备

# 克隆仓库
git clone https://github.com/your-org/etcd-k8s-operator.git
cd etcd-k8s-operator

# 安装依赖
make deps

# 运行测试
make test

# 构建二进制文件
make build

本地开发

# 创建 Kind 集群
make kind-create

# 部署 CRD
make install

# 运行 operator (在集群外)
make run

# 部署测试集群
kubectl apply -f config/samples/etcd_v1alpha1_etcdcluster.yaml

测试

# 设置测试环境
make test-setup

# 运行单元测试
make test-unit

# 运行集成测试
make test-integration

# 运行端到端测试
make test-e2e

# 运行所有测试
make test-all

# 快速测试模式
make test-fast

# 清理测试环境
make test-cleanup

📊 项目状态

详细进度追踪请查看: 项目主控文档

当前阶段: 集群生命周期管理 (第4-5周)

  • 项目架构设计 - 完整的技术架构和设计方案
  • 项目初始化 - Kubebuilder 项目脚手架和基础设施
  • CRD 设计实现 - 完整的 API 类型定义和验证规则
  • 核心控制器实现 - EtcdCluster 控制器基础逻辑
  • 完整测试系统 - 多层次测试架构和自动化测试
  • 集群生命周期管理 - 完善集群创建、删除、更新流程 (进行中)

完成度: 55% (5/10 个主要阶段完成)

下一步重点

  1. 本周目标: 修复控制器资源创建逻辑,实现 TLS 安全配置
  2. 下周目标: 完成 etcd 客户端健康检查和高级扩缩容
  3. 月度目标: 完成备份恢复和监控集成功能

里程碑

  • 🎯 v0.1.0 (第 4 周): 基础集群管理功能
  • 🎯 v0.2.0 (第 8 周): 高可用和扩缩容功能
  • 🎯 v0.3.0 (第 12 周): 备份恢复和监控功能
  • 🎯 v1.0.0 (第 16 周): 生产就绪版本

🤝 贡献

我们欢迎社区贡献!请查看 贡献指南 了解如何参与项目。

贡献方式

  • 🐛 报告 Bug
  • 💡 提出新功能建议
  • 📝 改进文档
  • 🔧 提交代码补丁
  • 🧪 编写测试用例

📄 许可证

本项目采用 Apache License 2.0 许可证。

🙏 致谢

感谢以下项目和社区的支持:

📞 联系我们


⭐ 如果这个项目对您有帮助,请给我们一个 Star!

About

一个企业级的 etcd Kubernetes Operator,用于在 Kubernetes 集群中管理 etcd 实例,提供高可用、动态扩缩容、自动故障恢复和数据维护等功能

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published