Files
ocdp-go/PROJECT_SUMMARY.md

32 KiB
Raw Permalink Blame History

OCDP 项目总结文档

创建时间: 2026-04-16 最后更新: 2026-04-16


一、项目概述

1.1 项目定位

OCDP (One Click Deployment Platform) — 开源云原生一键部署平台

核心理念: 让用户能够通过简单的操作,从 OCI Registry如 Harbor拉取 Helm Charts 并一键部署到指定 Kubernetes 集群,同时支持多租户隔离和配置模板化管理。

1.2 解决的问题

  1. 部署复杂性: 传统 K8s 部署需要编写复杂的 YAML、手动管理 Helm Values
  2. 配置一致性: 不同环境dev/staging/prod需要不同的配置但配置复用困难
  3. 多集群管理: 维护多个 K8s 集群的部署一致性和状态同步
  4. 多租户隔离: 不同团队/项目需要资源隔离和权限控制
  5. 配置版本管理: 配置变更需要可追溯、可回滚

1.3 目标用户

  • DevOps 工程师: 需要快速部署应用到多个集群
  • 开发团队: 需要自助式部署,无需深入了解 K8s
  • 平台团队: 需要管理多租户、quotas、和资源隔离

二、技术架构

2.1 技术栈

层级 技术 说明
后端 Go 1.21+ Hexagonal Architecture
前端 React 18, TypeScript, Next.js App Router
数据库 PostgreSQL 15+ 多租户数据存储
网关 Nginx 反向代理、SSL 终止
容器 Docker Compose 本地开发/部署

2.2 架构设计 — Hexagonal Architecture

┌─────────────────────────────────────────────────────────────────┐
│                        Frontend (Next.js)                        │
│                         http://localhost                         │
└─────────────────────────────────────────────────────────────────┘
                                  │
                                  ▼
┌─────────────────────────────────────────────────────────────────┐
│                     Nginx Reverse Proxy                          │
│                     http://localhost:200                         │
└─────────────────────────────────────────────────────────────────┘
                                  │
                                  ▼
┌─────────────────────────────────────────────────────────────────┐
│                      Backend API (Go)                            │
│                      http://localhost:8080                       │
│  ┌─────────────────────────────────────────────────────────────┐ │
│  │                    Input Adapters (Ports)                    │ │
│  │  ┌─────────┐  ┌─────────┐  ┌─────────┐  ┌─────────────────┐ │ │
│  │  │   REST  │  │  Auth   │  │ Swagger │  │     CORS        │ │ │
│  │  │ Handler │  │ Handler │  │  Handler│  │   Middleware    │ │ │
│  │  └────┬────┘  └────┬────┘  └─────────┘  └─────────────────┘ │ │
│  └───────┼────────────┼────────────────────────────────────────┘ │
│          │            │                                          │
│  ┌───────▼────────────▼────────────────────────────────────────┐ │
│  │                     Domain Layer                              │ │
│  │  ┌─────────────────┐      ┌─────────────────────────────┐   │ │
│  │  │     Services     │      │         Entities            │   │ │
│  │  │ - AuthService    │      │ - User, Workspace, Cluster  │   │ │
│  │  │ - ClusterService │      │ - Registry, Storage         │   │ │
│  │  │ - InstanceService│      │ - ValuesTemplate, Instance  │   │ │
│  │  │ - ...            │      └─────────────────────────────┘   │ │
│  │  └────────┬─────────┘                                        │ │
│  │           │                                                  │ │
│  │  ┌────────▼─────────────────────────────────────────────┐   │ │
│  │  │                 Repository Interfaces                 │   │ │
│  │  │  (Ports - 定义数据访问契约)                           │   │ │
│  │  └────────────────────────┬────────────────────────────┘   │ │
│  └───────────────────────────┼────────────────────────────────┘ │
│                              │                                    │
│  ┌───────────────────────────▼────────────────────────────────┐ │
│  │                    Output Adapters                           │ │
│  │  ┌─────────────┐  ┌─────────────┐  ┌─────────────────────┐  │ │
│  │  │  PostgreSQL │  │     OCI     │  │    Kubernetes       │  │ │
│  │  │  Repository │  │   Client    │  │  (Helm, Metrics)    │  │ │
│  │  └─────────────┘  └─────────────┘  └─────────────────────┘  │ │
│  └─────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘

2.3 项目结构

ocdp-go/
├── backend/                        # Go 后端 (Hexagonal Architecture)
│   ├── cmd/api/                    # 入口点
│   │   └── main.go                 # 主程序,路由配置,依赖注入
│   ├── internal/
│   │   ├── adapter/                # 适配器层
│   │   │   ├── input/http/         # 输入适配器HTTP 接口)
│   │   │   │   ├── rest/           # REST Handlers
│   │   │   │   ├── dto/            # Data Transfer Objects
│   │   │   │   └── middleware/     # 中间件(认证、授权)
│   │   │   └── output/             # 输出适配器(外部服务)
│   │   │       ├── persistence/    # 数据库实现
│   │   │       ├── oci/            # OCI Registry 客户端
│   │   │       ├── helm/           # Helm 客户端
│   │   │       └── k8s/            # K8s 客户端
│   │   ├── domain/                 # 领域层(核心业务逻辑)
│   │   │   ├── entity/             # 实体定义
│   │   │   ├── service/            # 领域服务
│   │   │   └── repository/         # 仓储接口
│   │   └── pkg/                    # 公共工具包
│   └── scripts/                    # 数据库脚本
│       ├── init-db.sql             # 初始数据库结构
│       └── migrations/             # 增量迁移脚本
├── frontend/                       # Next.js 前端
│   ├── src/
│   │   ├── app/                    # App Router 页面
│   │   │   ├── login/              # 登录页面
│   │   │   ├── clusters/           # 集群管理
│   │   │   ├── registries/         # Registry 管理
│   │   │   ├── charts/             # Charts 浏览器(从 Harbor 直接拉取)
│   │   │   ├── templates/          # Values 模板管理
│   │   │   ├── storage/            # Storage Backends 管理
│   │   │   ├── monitoring/         # 监控页面
│   │   │   └── admin/              # 管理后台
│   │   ├── lib/                    # 工具库
│   │   │   ├── api.ts              # API 客户端
│   │   │   ├── types.ts            # TypeScript 类型
│   │   │   └── auth-context.tsx    # 认证上下文
│   │   └── components/             # 共享组件
│   └── public/                     # 静态资源
└── infra/nginx/                    # Nginx 配置

三、核心功能模块

3.1 认证与多租户

用户体系:

  • Admin: 管理员可管理所有资源、用户、Workspace
  • User: 普通用户,仅能访问自己 Workspace 的资源
  • 通过 Bootstrap Process 初始化用户账号

Workspace 隔离 (Rancher Project 风格):

K8s Cluster: k8s-prod
│
├── Workspace: team-alpha (一个用户属于一个 Workspace)
│   ├── Namespaces: [app-a, app-b]  (1+ 个 Namespace)
│   ├── User: alice
│   │   └── KubeConfig: ocdp-team-alpha-alice
│   │       └── 权限: 限制在 namespace: team-alpha-*
│   ├── ResourceQuota: CPU 10核, GPU 2卡
│   └── Instances: nginx-prod, redis-prod
│
├── Workspace: team-beta
│   ├── Namespaces: [app-x]
│   ├── User: bob
│   │   └── KubeConfig: ocdp-team-beta-bob
│   │       └── 权限: 限制在 namespace: team-beta-*
│   └── ResourceQuota: CPU 5核, GPU 1卡

Rancher Project 隔离模型说明:

  • 1 用户 = 1 Workspace: 用户只能属于一个 Workspace
  • Workspace 包含多 Namespace: 一个 Workspace 可创建多个 Namespace
  • KubeConfig 权限隔离: Admin 创建用户时自动生成 KubeConfig限制在 workspace-* 范围内
  • 资源配额限制: 每个 Workspace 有独立的 CPU/GPU 配额

KubeConfig 自动生成流程:

Admin 创建用户 "alice" in Workspace "team-alpha"
        ↓
Backend: 在 K8s 中创建 ServiceAccount
        └── name: ocdp-team-alpha-alice
        └── namespace: ocdp-system
        ↓
Backend: 创建 Role (限制 namespace 范围)
        └── rules: [get,list,watch,create,update,delete] on pod, deployment, service, etc.
        └── resourceNames: [team-alpha-*]  (限制只能操作 workspace 的资源)
        ↓
Backend: 创建 RoleBinding
        └── subjects: [ServiceAccount: ocdp-team-alpha-alice]
        └── roleRef: Role [ocdp-team-alpha-alice]
        ↓
Backend: 生成 KubeConfig
        └── clusters: [k8s-prod]
        └── users: [ocdp-team-alpha-alice]
        └── contexts: [ocdp-team-alpha-alice@k8s-prod]
        ↓
Backend: 将 KubeConfig 注入用户账户
        └── 存储在 users.kubeconfig 字段
        └── 或通过 API 返回给用户下载
        ↓
Alice 登录后:
        └── 可下载自己的 KubeConfig
        └── 可使用 kubectl 操作: team-alpha-* 命名空间
        └── 无法访问其他 Workspace 的资源

3.2 集群管理

功能:

  • 添加/编辑/删除 Kubernetes 集群
  • 支持多种认证方式: kubeconfig, CA + Cert + Key, Token
  • 健康检查和状态监控
  • 支持两种隔离模式:
    • namespace: 共享集群,不同 Workspace 使用不同 Namespace推荐
    • cluster: 独立集群模式,每个 Workspace 有独立集群凭证

3.3 Registry 管理

功能:

  • 添加 OCI Registry (Harbor, Docker Hub 等)
  • 健康检查和连接验证
  • 支持认证(用户名/密码)
  • 支持 HTTPS/HTTP (insecure 模式)

使用方式: 用户在 Charts 页面直接浏览 Registry 中的 Repositories 和 Chart 版本

3.4 Storage Backends分层存储配置

背景: 有状态应用(数据库、消息队列)需要持久化存储。不同集群、不同用户可能使用不同的存储后端。

分层配置架构:

┌─────────────────────────────────────────────────────────────┐
│  Layer 1: Cluster Level (最低优先级)                         │
│  Admin 为集群配置默认存储(如集群共享 NFS                    │
│  例: { server: "10.6.80.11", path: "/shared/data" }         │
└─────────────────────────────────────────────────────────────┘
                            ↓ (覆盖)
┌─────────────────────────────────────────────────────────────┐
│  Layer 2: Workspace Level (中等优先级)                       │
│  Workspace 管理员配置的存储路径覆盖                           │
│  例: { server: "10.6.80.12", path: "/workspace/data" }      │
└─────────────────────────────────────────────────────────────┘
                            ↓ (覆盖)
┌─────────────────────────────────────────────────────────────┐
│  Layer 3: User Override (最高优先级)                         │
│  用户在部署时可选择/覆盖存储配置                              │
│  例: { server: "10.6.80.13", path: "/my-app/data" }         │
└─────────────────────────────────────────────────────────────┘

存储类型支持:

类型 配置参数
NFS server, path
PV storageClassName, capacity, accessModes
HostPath path

使用方式:

  • 默认 merge: Storage 配置默认会 merge 到 values.yaml
  • 用户可覆盖: 用户可以在 Workspace 范围内选择可用的存储后端,或手动覆盖路径
  • 非强制: Admin 配置的 Cluster-level storage 仅作为默认值,不强制使用

使用场景:

# 1. Admin 为集群配置默认存储
Cluster: k8s-prod
└── StorageBackend: "cluster-nfs" (server: "10.6.80.11", path: "/shared")

# 2. Workspace 管理员覆盖为自己的存储
Workspace: team-alpha
└── StorageBackend: "team-alpha-nfs" (server: "10.6.80.12", path: "/team-alpha")

# 3. 用户 Alice 在部署时选择 Workspace 的存储(或再次覆盖)
Deployment Form:
├── Storage Reference: "team-alpha-nfs" 
└── Path Override: "/alice-app" (可选)

# 4. 最终 values.yaml (默认 merge 结果)
persistence:
  enabled: true
  storage:
    nfs:
      server: "10.6.80.12"      # 来自 Workspace 覆盖
      path: "/team-alpha/alice-app"  # 用户选择的路径

3.5 Values Templates版本化配置模板

背景: Helm 部署需要填写 Values YAML不同环境需要不同配置且配置需要可追溯、可回滚。

功能:

  • 创建可复用的配置模板
  • 版本化管理(每次更新创建新版本)
  • 保留历史版本,支持回滚
  • 部署时选择模板,自动填充 Values

实体设计:

type ValuesTemplate struct {
    ID               string  // 唯一标识
    WorkspaceID      string  // 属于哪个 Workspace
    OwnerID          string  // 创建者
    Name             string  // 模板名称 (e.g., "production", "development")
    Description      string  // 描述
    ValuesYAML       string  // Helm Values YAML 内容
    Version          int     // 版本号(递增)
    IsDefault        bool    // 是否为默认模板
}

版本管理机制:

  • 每次更新模板都会创建新版本 (Version++)
  • 保留历史版本,可查看变更记录
  • 支持回滚到任意历史版本

3.6 一键部署流程

完整工作流:

┌──────────────┐     ┌───────────────────┐     ┌─────────────────┐
│  User        │     │  OCDP Backend     │     │  Target K8s     │
│  (Web UI)    │────▶│                   │────▶│  Cluster        │
└──────────────┘     └───────────────────┘     └─────────────────┘
                            │
          ┌─────────────────┼─────────────────┐
          ▼                 ▼                 ▼
   ┌────────────┐    ┌────────────┐    ┌────────────┐
   │  Registry  │    │  Template  │    │   Helm     │
   │ (Harbor)   │    │  + Global  │    │  Client    │
   │            │    │   Config   │    │            │
   └────────────┘    └────────────┘    └────────────┘

部署步骤:

  1. 选择 Registry: 从已配置的 Harbor 中选择
  2. 浏览 Charts: 直接浏览 Repositories 和 Chart 版本
  3. 选择 Values Template: 或使用空白 Values官方模板
  4. 可选: 添加 User Override: 覆盖模板中的部分配置
  5. 可选: 选择 Storage Backend: 使用 Cluster/Workspace 默认或手动选择/覆盖
  6. 选择 Target Cluster 和 Namespace: 系统自动分配 Workspace 隔离的 Namespace
  7. 点击 Deploy
  8. Backend 合并配置: Template + User Override + Storage Backend默认 merge可覆盖
  9. Backend 调用 Helm: 从 Registry 拉取 Chart 并安装到目标集群
  10. Backend 同步状态: 显示部署结果和 Helm Release 状态

3.7 资源配额与审计

配额系统:

  • Workspace 可设置 CPU、GPU、GPU Memory 的软/硬限制
  • Workspace 创建时自动在集群中创建 ResourceQuota/LimitRange
  • 部署时检查配额,超限拒绝
  • 实例删除时释放配额

Namespace 隔离:

  • 共享集群模式下,每个 Workspace 有独立的 Namespace 前缀
  • 用户只能看到和操作自己 Workspace 的 Namespace
  • 不同 Workspace 之间资源完全隔离

审计日志:

  • 记录所有创建、更新、删除、部署操作
  • 包含操作者、时间、IP、详情

四、数据库设计

4.1 ER 图

┌─────────────┐       ┌─────────────┐       ┌─────────────┐
│  workspaces │       │    users    │       │  clusters   │
├─────────────┤       ├─────────────┤       ├─────────────┤
│ id (PK)     │◀──┐   │ id (PK)     │       │ id (PK)     │
│ name        │   │   │ username    │       │ name        │
│ description │   │   │ password    │       │ host        │
│ created_by  │───┘   │ role        │       │ workspace_id│◀─┤
│ created_at  │       │ workspace_id│──┐    │ is_shared   │
└─────────────┘       │ is_active   │  │    │ isolation   │
                      └─────────────┘  │    └─────────────┘
                             │         │           │
                             │         │           │
                             ▼         │           ▼
                      ┌─────────────┐  │    ┌─────────────┐
                      │user_config_ │  │    │ registries  │
                      │overrides    │  │    ├─────────────┤
                      ├─────────────┤  │    │ id (PK)     │
                      │ id (PK)     │  │    │ name        │
                      │ workspace_id│──┘    │ url         │
                      │ user_id     │       │ workspace_id│◀─┤
                      │ target_type │       │ is_shared   │
                      │ target_id   │       └─────────────┘
                      └─────────────┘              │
                                                  │
                              ┌───────────────────┤
                              ▼                   ▼
                       ┌─────────────┐     ┌─────────────┐
                       │   storage_  │     │  instances  │
                       │   backends  │     ├─────────────┤
                       ├─────────────┤     │ id (PK)     │
                       │ id (PK)     │     │ workspace_id│
                       │ name        │     │ cluster_id  │
                       │ type        │     │ registry_id │
                       │ workspace_id│◀─┘  │ name        │
                       │ config      │     │ namespace   │
                       └─────────────┘     │ status      │
                                           │ values_yaml │
                              ┌────────────│ user_override│
                              ▼            └─────────────┘
                       ┌─────────────┐
                       │values_      │
                       │templates    │
                       ├─────────────┤
                       │ id (PK)     │
                       │ name        │
                       │ values_yaml │
                       │ version     │
                       │ is_default  │
                       └─────────────┘

4.2 核心表说明

表名 用途 关键字段
users 用户账户 role (admin/user), workspace_id
workspaces 工作空间 name, description
workspace_quotas 资源配额 workspace_id, resource_type, hard_limit, soft_limit, used
clusters K8s 集群 host, kubeconfig, workspace_id, isolation_mode
registries OCI 仓库 url, credentials, workspace_id
storage_backends Storage 全局配置 name, type (nfs/pv/hostPath), config (JSON)
values_templates 值模板 name, values_yaml, version, is_default
instances 部署实例 cluster_id, release name, namespace, status, values
audit_logs 审计日志 user_id, action, resource_type, details

五、设计理念

5.1 为什么需要 Storage Backends 分层配置?

问题:

  • 一个 Admin 可能管理多个集群,每个集群有不同的存储配置
  • 同一集群中,不同用户/workspace 可能需要使用不同的存储路径
  • 存储配置需要集中管理,但也要允许灵活覆盖

解决方案:

  • 分层配置: Cluster → Workspace → User Override优先级递增
  • 默认 merge: Storage 配置默认会 merge 到 values.yaml用户可选择覆盖
  • 集中管理: Admin 在 Cluster 层面配置默认值Workspace 和 User 逐层覆盖
  • 灵活选择: 用户可以在可用列表中选择存储后端,或手动调整路径

5.2 为什么需要 Values Templates

问题:

  • Helm 部署需要填写复杂的 Values YAML
  • 不同环境dev/staging/prod需要不同配置
  • 配置变更后无法追溯历史
  • 相同的配置需要反复填写

解决方案:

  • 创建模板,定义标准配置
  • 支持多版本(像 Git 一样)
  • 部署时选择模板 + 可选 User Override
  • 支持回滚到历史版本

5.3 为什么需要 Workspace + Namespace 隔离?

问题:

  • 多个团队共享 K8s 集群
  • 需要资源隔离,防止相互影响
  • 需要资源配额,防止资源抢占

解决方案:

  • Workspace 对应一个或多个 Namespace
  • 共享集群模式下:{workspace-id}-{instance-name}
  • 自动创建 ResourceQuota/LimitRange
  • 用户只能看到自己 Workspace 的资源

六、当前状态与待完成功能

6.1 已完成

模块 状态 说明
用户认证 JWT + 首次登录改密
Workspace 多租户 Admin/User 角色隔离
集群管理 CRUD + 健康检查
Registry 管理 CRUD + Harbor 连接验证
Charts 浏览器 从 Harbor 直接浏览 Repositories 和 Chart 版本
实例部署 创建/升级/回滚/删除(后端状态管理)
状态同步 从 K8s 同步 Helm Release 状态
监控页面 集群状态、Node 指标
配额系统 数据库结构已创建
审计日志 数据库结构已创建
Storage Backends CRUD 管理 + 分层配置cluster/workspace/shared 优先级解析)
Values Templates CRUD + 版本历史 + 回滚(行式版本化,每次更新 INSERT 新行)

6.2 待完成功能

高优先级 (P0)

功能 描述
KubeConfig 自动生成 Admin 创建用户时自动创建 SA + Role + RoleBinding 并注入 KubeConfig
部署表单集成 Values Template 在 Deploy Modal 中选择预定义的 Values Template
Storage Backends 分层配置 Cluster → Workspace → User Override 分层配置 + 默认 merge
Namespace 隔离 每个 Workspace 有独立的 Namespace 前缀,用户不可见其他 Workspace 的资源
K8s ResourceQuota 联动 Workspace 创建时自动在集群中创建 ResourceQuota/LimitRange

中优先级 (P1)

功能 描述
配额强制执行 部署时检查 CPU/GPU 配额,超限拒绝并提示
配额使用情况 UI 在 Workspace 详情页显示 CPU/GPU/Memory 使用率和限制
User Config Override 部署时可额外覆盖 Template 中的部分配置

P2 已完成

功能 描述
Values Templates 版本管理 创建/历史/回滚,已 E2E 验证通过
Storage 分层配置解析 ResolveStorageConfig 优先级 (cluster > workspace > shared),已集成到 InstanceService
Helm 实际安装到 K8s 验证 Helm Client 实际工作,不仅仅是状态管理
Namespace 隔离 每个 Workspace 有独立的 Namespace 前缀,用户不可见其他 Workspace 的资源

低优先级 (P2)

功能 描述
完整的 E2E 测试 覆盖所有核心流程的自动化测试
审计日志查看页面 Admin 查看所有操作记录

实施路线图 — 当前进度 (2026-04-17)

Phase 1: 核心部署体验 (已完成)
├── [x] 部署表单添加 Values Template 选择器
├── [x] Storage Backend 配置自动 merge 到 values.yaml
└── [x] Namespace 隔离实现Workspace → ns prefix

Phase 2: 配额系统 (部分完成)
├── [ ] 部署时配额检查
├── [ ] K8s ResourceQuota 自动创建
└── [ ] 配额使用 UI 展示

Phase 3: 完善功能 (部分完成)
├── [ ] User Config Override
└── [ ] 审计日志页面

6.3 实施路线图

Phase 1: 核心部署体验 (1-2 周)
├── [ ] 部署表单添加 Values Template 选择器
├── [ ] Storage Backend 配置自动 merge 到 values.yaml
└── [ ] Namespace 隔离实现Workspace → ns prefix

Phase 2: 配额系统 (1 周)
├── [ ] 部署时配额检查
├── [ ] K8s ResourceQuota 自动创建
└── [ ] 配额使用 UI 展示

Phase 3: 完善功能 (1 周)
├── [ ] User Config Override
└── [ ] 审计日志页面

七、完整的部署工作流(示例)

1. Admin 初始化平台
   ├── 添加 Harbor Registry: "harbor.company.com"
   ├── 配置 Kubernetes Cluster: "k8s-prod"
   └── 配置 Cluster-level Storage Backend: NFS (10.6.80.11:/shared)

2. Admin 创建 Workspace "team-alpha"
   └── 设置资源配额: CPU 10核, GPU 2卡
   └── 系统自动在集群创建 ns: team-alpha-*
   └── 系统自动创建 ResourceQuota: team-alpha-quota
   └── 配置 Workspace-level Storage: NFS (10.6.80.12:/team-alpha)

3. Admin 创建用户 "alice",分配到 team-alpha
   └── 系统自动创建 KubeConfig (SA + Role + RoleBinding)
   └── 权限范围: namespace team-alpha-*
   └── 发送初始密码 + KubeConfig 下载链接

4. Alice 登录(首次需改密)
   ├── 下载 KubeConfig
   │   └── 使用 kubectl 操作: team-alpha-* 命名空间
   ├── 创建 Values Template: "production" (v1)
   │   └── 定义 replicaCount=3, 引用 storage 配置
   ├── 部署 Instance: "my-nginx"
   │   ├── 选择 Chart: harbor.company.com/charts/nginx:1.0.0
   │   ├── 选择 Template: production
   │   ├── 选择 Storage: team-alpha-nfs (或覆盖路径)
   │   ├── 选择 Cluster: k8s-prod
   │   └── Namespace: team-alpha-my-nginx (自动分配)
   └── 查看 Instance 状态: deployed ✓

5. Alice 查看集群中实际资源
   ├── Namespace: team-alpha-my-nginx
   ├── Pods: nginx-xxx
   └── ResourceQuota: team-alpha-quota (已生效)

6. Alice 更新 Template (v2)
   └── replicaCount 改为 5

7. Alice 升级 Instance
   └── Helm upgrade my-nginx → 新配置自动应用

8. Admin 查看审计日志
   └── 了解所有操作记录

八、快速开始

8.1 启动服务

# 使用一键脚本
./start.sh

# 或手动启动
docker compose -f docker-compose.yml -f backend/docker-compose.yml up -d

8.2 访问

服务 地址 默认账号
前端 http://localhost admin / admin123
API http://localhost:8080/api/v1 -
Swagger http://localhost:8080/api/docs -

8.3 创建第一个部署

  1. 登录: 使用 admin/admin123
  2. 添加 Registry: Harbor 地址 + 凭证
  3. 添加 Cluster: Kubeconfig
  4. 配置 Storage Backend: NFS 服务器地址
  5. 创建 Workspace: 设置配额
  6. 创建 Values Template: 填写 Values YAML
  7. 部署: Charts 页面 → 选择 Registry → 浏览 Chart → Deploy → 选择 Template
  8. 查看状态: Monitoring 页面

九、参考文档


本文档由 Claude Code 生成2026-04-16