蓝鲸PaaS apiserver 项目结构完全解析:Django+DRF 分层架构设计
【免费下载链接】blueking-paas蓝鲸智云 PaaS 平台是一个开放式的开发平台,让开发者可以方便快捷地创建、开发、部署和管理 SaaS 应用。它提供了完善的前后台开发框架、服务总线(ESB)、API Gateway、调度引擎、公共组件 等服务。旨在帮助用户快速、低成本的构建免运维运营系统与支撑工具。项目地址: https://gitcode.com/GitHub_Trending/bl/blueking-paas
蓝鲸 PaaS(BlueKing PaaS)的apiserver是蓝鲸智云 PaaS 平台的主控模块,它基于Django + DRF(Django REST Framework)构建了一套清晰的分层架构,负责 SaaS 应用的创建、开发、部署与管理。本文带你用 10 分钟看懂 apiserver 的目录结构、核心模块划分与一次 API 请求的完整链路,是新手快速上手蓝鲸 PaaS 源码阅读的最佳切入点。
一、apiserver 在整体架构中的位置 📍
在了解内部结构之前,先看全局。蓝鲸 PaaS 由「平台集群」和「应用集群」两部分组成:Apiserver 作为 REST API 的统一入口,向下向 Kubernetes 应用集群下发「蓝鲸应用(BkApp)」,向上对接 MySQL、Redis、对象存储 Bk-Repo 等基础设施。
官方架构文档见:docs/resource/img/architecture-202305.png,本地开发指引见:apiserver/README.md
二、顶层目录结构一览 🔎
apiserver 的顶层目录遵循「代码、配置、文档、工具」分离的原则:
| 目录/文件 | 作用 |
|---|---|
| paasng/ | 核心 Python 代码(Django 项目根目录) |
| assets/ | 管理端 Admin42 的 JS 组件源码 |
| dev_utils/bundle/ | 用 docker-compose 快速拉起 MySQL/Redis/Minio 依赖 |
| conf.yaml.tpl | 配置模板(dynaconf 加载) |
| Makefile | make server、make celery等常用命令入口 |
所有业务代码集中在paasng/目录,其内部又被拆分为两个核心包:
paasng/ ├── paasng/ # 平台层:业务逻辑、账号、应用生命周期、管理端 ├── paas_wl/ # 工作负载层:Kubernetes 资源、镜像、发布、网络 ├── tests/ # 单元测试 / API 测试 / E2E 测试 └── manage.py # Django 管理入口💡wl是 workload(工作负载)的缩写,这个命名本身就是对分层思想的最直接体现。
三、核心包深度拆解
1. 平台层paasng/:应用生命周期都在这里
paasng/paasng/ 按职责拆成 6 个子包,这是阅读源码的主线:
platform/—— 平台核心业务。其中 applications/ 负责应用的 CRUD 与权限保护,每个模块内部再按models.py → serializers/ → views/ → urls.py的标准 DRF 分层组织;engine/管理运行环境;modules/管理多模块;templates/负责应用模板。accessories/—— 增强能力:日志(log/)、服务市场(servicehub/)、发布上架(publish/)、CI 集成(ci/)等。infras/—— 基础设施适配层:统一封装对蓝鲸账号、IAM 权限、API 网关、监控、通知等外部系统的调用,见 paasng/infras/。plat_admin/+plat_mgt/—— Admin42 管理控制台的服务端代码。bk_plugins/—— 蓝鲸插件体系。utils/—— 通用工具:错误码、加密、限流、审计中间件等。
2. 工作负载层paas_wl/:离 Kubernetes 最近的一层
paas_wl/ 把「应用如何跑在 K8s 上」这件事完整建模:
workloads/—— K8s 资源的 Python 模型:networking/(Ingress/域名路由)、images/(镜像管理)、release_controller/(发布单)、autoscaling/(弹性伸缩)。bk_app/processes/—— 进程与 Deployment 的实体定义,是「蓝鲸应用」与 K8s 资源之间的桥梁。bk_app/cnative/—— 云原生应用规格(spec)的声明式描述。apis/admin/—— Admin42 管理端 API,挂在/admin42/路由前缀下。
3. 一次 REST 请求如何流动?
以「查询应用列表」为例,请求会经过 4 层,每一层职责单一:
- 路由层:paasng/urls.py 汇总所有模块路由,如
include("paasng.platform.applications.urls"); - 视图层:DRF
ViewSet接收请求,完成参数校验与权限判断(如IsAuthenticated+ 应用级权限类); - 序列化层:
serializers负责入参校验与出参格式化; - 模型层:
models.py定义 ORM 模型,数据库迁移由 Django migrations 管理。
这套「ViewSet + Serializer + Model」的标准分层,正是 DRF 项目推荐的组织方式,新手可以照着platform/applications/抄作业。
四、快速跑通本地环境 🚀
官方提供了开箱即用的本地开发流程(详见 apiserver/README.md):
- 用
dev_utils/bundle/start.sh拉起 MySQL / Redis / Minio; make init-py-dep安装 Python 依赖(poetry 管理,Python 3.14);- 参考 conf.yaml.tpl 编写本地配置;
python manage.py migrate初始化数据库,make server启动 Web 服务,make celery启动异步任务。
测试体系同样值得学习:单元测试、API 测试(不发真实 HTTP 请求的框架级测试)、E2E 测试(需真实 K8s 集群)三类分层,位于 paasng/tests/。
五、总结
蓝鲸 PaaS apiserver 的结构设计可以归纳为三句话:
- 两个核心包:
paasng管平台业务,paas_wl管 Kubernetes 工作负载,边界清晰; - 标准 DRF 分层:urls → views → serializers → models,每个模块自包含、可独立阅读;
- 适配层隔离:所有外部系统调用收敛在
infras/,替换依赖不污染业务代码。
按「全局架构图 → urls.py 路由表 → 单个模块内四层结构」的顺序阅读,你可以在一天之内建立对整个 apiserver 的完整心智模型。
【免费下载链接】blueking-paas蓝鲸智云 PaaS 平台是一个开放式的开发平台,让开发者可以方便快捷地创建、开发、部署和管理 SaaS 应用。它提供了完善的前后台开发框架、服务总线(ESB)、API Gateway、调度引擎、公共组件 等服务。旨在帮助用户快速、低成本的构建免运维运营系统与支撑工具。项目地址: https://gitcode.com/GitHub_Trending/bl/blueking-paas
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考