2025-11-13 02:54:06 +00:00

OCDP - Open Cloud Deployment Platform

开源云原生部署平台,支持从 Harbor或其他 OCI Registry拉取 Helm Charts 并一键部署到多个 Kubernetes 集群。

功能特性

  • 多集群管理 - 支持多个 kubeconfig管理多个 K8S 集群
  • Registry 管理 - 支持 Harbor、Docker Registry、OCI 标准仓库
  • 多租户支持 - Workspace 隔离,管理员和普通用户角色
  • 存储后端 - NFS/PV/hostPath 存储配置管理
  • Chart 引用 - 管理可用的 Helm Charts
  • Values 模板 - 版本控制、支持回滚的配置模板
  • 一键部署 - 从 Harbor 拉取 Charts 部署到指定集群
  • 实例管理 - 支持升级、回滚、卸载 Helm Release
  • 状态监控 - 实时同步 Helm Release 状态

技术栈

层级 技术
后端 Go 1.21+, Hexagonal Architecture
前端 React 18, TypeScript, Next.js, TailwindCSS
数据库 PostgreSQL
网关 Nginx

快速开始

Docker Compose 启动(推荐)

# 1. 完全停止并清理现有容器
docker compose -f docker-compose.yml -f backend/docker-compose.yml down -v

# 2. 启动所有服务PostgreSQL + Backend + Frontend + Nginx
ALLOWED_DEV_ORIGINS="http://10.6.80.114:3000" \
NEXT_PUBLIC_API_URL="http://10.6.80.114:8080/api/v1" \
BACKEND_PORT=8080 \
docker compose -f docker-compose.yml -f backend/docker-compose.yml --profile backend up -d

# 3. 查看服务状态
docker ps

# 4. 访问
#    前端: http://10.6.80.114
#    后端: http://10.6.80.114:8080/api/v1
#    默认账号: admin / admin123

# 停止服务
docker compose -f docker-compose.yml -f backend/docker-compose.yml down

开发环境

# 1. 确保 PostgreSQL 运行在 localhost:5432
#    启动 PostgreSQL 容器:
#    docker run -d --name ocdp-postgres -e POSTGRES_DB=ocdp -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=postgres -p 5432:5432 postgres:15

# 2. 初始化数据库(首次运行)
#    方法一:手动执行 SQL
cat backend/scripts/init-db.sql | docker exec -i ocdp-postgres psql -U postgres -d ocdp

#    方法二:使用 Make需确保 PostgreSQL 容器名为 ocdp-postgres
make db-init

# 3. 启动后端(需要设置环境变量)
cd backend && \
DATABASE_URL="postgres://postgres:postgres@localhost:5432/ocdp?sslmode=disable" \
JWT_SECRET="test-jwt-secret-key" \
ENCRYPTION_KEY="test-encryption-key-32-bytes-long" \
PORT=8081 \
ALLOWED_DEV_ORIGINS="10.6.80.114,localhost,127.0.0.1" \
go run cmd/api/main.go

# 4. 启动前端(需要 Node.js 20
source ~/.nvm/nvm.sh && nvm use 20
cd frontend && NEXT_PUBLIC_API_URL=http://10.6.80.114:8081/api/v1 npm run dev

# 5. 从外部访问
#    本机访问: http://localhost:3000
#    外部访问: http://10.6.80.114:3000
#    默认账号: admin / admin123

# ===== 一键启动脚本 =====
# 启动所有服务(后台运行)
./start.sh

# 停止所有服务
./stop.sh

生产环境Docker Compose

# 构建并启动所有服务
make run-2

# 停止服务
make clean-2

配置

环境变量

变量 默认值 说明
DATABASE_URL postgres://postgres:postgres@localhost:5432/ocdp?sslmode=disable 数据库连接串
PORT 8080 后端端口
BACKEND_PORT 8080 Docker 映射端口
JWT_SECRET change-me-in-production JWT 密钥
ENCRYPTION_KEY change-me-32-bytes-long-key-here 加密密钥
ALLOWED_DEV_ORIGINS http://10.6.80.114:3000 允许的跨域来源(外部访问时需要配置)
NEXT_PUBLIC_API_URL http://10.6.80.114:8080/api/v1 前端调用的API地址

配置文件

项目根目录 .env 文件包含默认配置:

  • Kubernetes 集群配置
  • Harbor 仓库信息
  • NFS 存储配置

访问

服务 地址
前端 (Nginx) http://10.6.80.114
后端 API http://10.6.80.114:8080/api/v1
API 文档 http://10.6.80.114:8080/api/docs

默认账号: admin / admin123

项目结构

ocdp-go/
├── backend/                   # Go 后端 (Hexagonal Architecture)
│   ├── cmd/api/              # 入口点
│   ├── internal/
│   │   ├── adapter/          # 适配器层 (HTTP, Persistence)
│   │   ├── domain/           # 领域层 (Entity, Service, Repository)
│   │   └── bootstrap/        # 初始化和种子数据
│   └── scripts/              # 脚本 (init-db.sql)
├── frontend/                  # Next.js 前端
│   ├── src/
│   │   ├── app/              # 页面路由
│   │   ├── components/       # 组件
│   │   └── lib/              # 工具库 (API, types, auth)
│   └── .env.local            # 前端环境配置
├── infra/nginx/               # Nginx 配置
├── docker-compose.yml         # 主配置
├── backend/docker-compose.yml # 后端配置
└── Makefile                   # 构建命令

核心 API

模块 端点 说明
认证 POST /api/v1/auth/login 用户登录
用户 GET/POST /api/v1/users 用户管理
Workspaces GET/POST /api/v1/workspaces 工作空间管理
Clusters GET/POST /api/v1/clusters 集群管理
Registries GET/POST /api/v1/registries 镜像仓库管理
Storage GET/POST /api/v1/storage-backends 存储后端管理
Chart References GET/POST /api/v1/chart-references Chart 引用管理
Values Templates GET/POST /api/v1/values-templates 配置模板管理
Instances GET/POST/DELETE /api/v1/instances 实例部署管理

权限模型

  • Admin - 管理员,可管理所有资源和用户
  • User - 普通用户,仅可访问所属 Workspace 的资源

开发命令

# 启动开发服务器
make dev              # 同时启动前后端
make dev-backend      # 仅后端
make dev-frontend     # 仅前端

# 数据库操作
make db-init          # 初始化数据库
make db-reset         # 重置数据库
make db-shell         # 打开数据库 shell

# Docker 构建
make build            # 构建所有镜像
make build-backend    # 构建后端镜像
make build-frontend   # 构建前端镜像

# 日志和调试
make logs             # 查看所有日志
make logs-backend     # 后端日志
make stop             # 停止开发服务器

License

MIT

Description
No description provided
Readme 153 MiB
2026-04-08 02:44:07 +00:00
Languages
JavaScript 53.1%
Go 21.2%
TypeScript 20.2%
Python 3.2%
Shell 1.3%
Other 0.9%