ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

蓝鲸PaaS apiserver 项目结构完全解析:Django+DRF 分层架构设计

蓝鲸PaaS apiserver 项目结构完全解析:Django+DRF 分层架构设计 蓝鲸PaaS apiserver 项目结构完全解析DjangoDRF 分层架构设计【免费下载链接】blueking-paas蓝鲸智云 PaaS 平台是一个开放式的开发平台让开发者可以方便快捷地创建、开发、部署和管理 SaaS 应用。它提供了完善的前后台开发框架、服务总线ESB、API Gateway、调度引擎、公共组件 等服务。旨在帮助用户快速、低成本的构建免运维运营系统与支撑工具。项目地址: https://gitcode.com/GitHub_Trending/bl/blueking-paas蓝鲸 PaaSBlueKing PaaS的apiserver是蓝鲸智云 PaaS 平台的主控模块它基于Django DRFDjango 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 加载Makefilemake 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)视图层DRFViewSet接收请求完成参数校验与权限判断如IsAuthenticated 应用级权限类序列化层serializers负责入参校验与出参格式化模型层models.py定义 ORM 模型数据库迁移由 Django migrations 管理。这套「ViewSet Serializer Model」的标准分层正是 DRF 项目推荐的组织方式新手可以照着platform/applications/抄作业。四、快速跑通本地环境 官方提供了开箱即用的本地开发流程详见 apiserver/README.md用dev_utils/bundle/start.sh拉起 MySQL / Redis / Miniomake 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),仅供参考
返回列表