
蓝鲸PaaS Ingress流量路由全解一个请求从域名到Pod的完整链路【免费下载链接】blueking-paas蓝鲸智云 PaaS 平台是一个开放式的开发平台让开发者可以方便快捷地创建、开发、部署和管理 SaaS 应用。它提供了完善的前后台开发框架、服务总线ESB、API Gateway、调度引擎、公共组件 等服务。旨在帮助用户快速、低成本的构建免运维运营系统与支撑工具。项目地址: https://gitcode.com/GitHub_Trending/bl/blueking-paas蓝鲸PaaSBlueKing PaaS是一个开放式 PaaS 开发平台支持应用的全生命周期管理。很多新手部署应用后都好奇访问一个域名时请求究竟是如何被路由到 Kubernetes 集群里的 Pod 的本文带你完整看懂蓝鲸PaaS Ingress 流量路由实现原理——从 DNS 解析、Ingress Controller 规则匹配到 Service 负载均衡再到最终的容器 Pod一图理清整条链路 。一张图看懂请求经过的 5 个站点把整条链路拆开一个 HTTP 请求在蓝鲸PaaS 中会依次经过下面 5 个站点站点组件职责① DNS域名解析把app.example.com解析到入口的 IPCLB/负载均衡器② 入口网关Ingress Controller如 ingress-nginx按「域名 路径」匹配规则选定后端 Service③ Ingress 规则K8s Ingress 资源平台自动创建并持续同步的路由规则④ ServiceK8s Service按端口做负载均衡找到健康 Pod⑤ Pod应用容器实际处理请求监听固定容器端口对使用者来说你只需要关心①②而③④⑤全部由平台自动化完成——这正是 PaaS「免运维」的核心价值。平台如何为应用分配访问域名蓝鲸PaaS 支持4 种访问方式每一种都对应一个独立的 Ingress 管理器代码集中在 managers/ 目录传统模式Legacy按模板生成{应用名}.example.com形式的主机名由 LegacyAppIngressMgr 管理子域名模式为每个应用环境分配独立子域名由 SubdomainAppIngressMgr 管理子路径模式多个应用共享同一个根域用/应用路径区分由 SubPathAppIngressMgr 管理。这里有个巧妙设计各应用在各自 Namespace 里各建一条 IngressIngress Controller 会自动把这些 Ingress 合并成同一个 server 块互不冲突独立域名自定义域名用户绑定自己的域名如www.mysaas.com由 CustomDomainIngressMgr 管理并支持 HTTPS 证书。集群侧的域名池配置在 IngressConfig 中定义包含子域名根域列表、子路径根域列表、前端入口 IP 和端口映射——平台正是基于这份配置为应用「发号施令」式地分配访问入口。核心链路 1域名 → Ingress 规则当你在界面上添加自定义域名时CustomDomainManager 会做三件事合法性校验检查环境是否已部署、域名是否被平台保留check_domain_is_system 会拒绝与系统域名冲突的自定义域名落库记录把域名、路径前缀、HTTPS 开关写入 Domain 模型同步 Ingress调用CustomDomainIngressMgr.sync()把「期望状态」推送到 Kubernetes 集群。这里的同步机制是典型的声明式Desired State设计平台数据库记录期望的域名集合IngressUpdater.sync 负责比对集群中的实际状态——不存在就创建存在就更新如果 Ingress 指向的 Service 已被删除还会自动恢复为默认 Service保证路由永远可用。核心链路 2Ingress → Service → PodIngress 规则里真正起决定作用的是host path → backend service的映射。IngressV1Serializer 展示了平台生成 Ingress 资源时的关键动作每个域名生成一条 rule{host, path, backend: {service, port}}开启 HTTPS 的域名按证书 Secret 分组写入tls段通过 nginx 注解实现路径重写rewrite_to_root例如把/myapp/api改写为/api再转发和注入X-Script-Name请求头让应用知道自己运行在哪个子路径下。后端 Service 则更简单build_process_service 为每个应用的每个进程类型创建一个 Service端口固定映射为Service 80 端口 → 容器 8000 端口CONTAINER_PORT并只给web进程创建对外 Ingress。Service 名遵循{region}-{应用安全名}-{进程类型}的命名规则定义在 make_service_nameK8s 的 Endpoints 控制器会自动把 Service 与健康 Pod 关联起来——至此流量链路闭环。HTTPS 证书蓝鲸PaaS 的两级证书体系想让自定义域名走 HTTPS光有域名不够还得有证书。蓝鲸PaaS 提供了两种证书模型见 models.py应用专属证书AppDomainCert用户自己上传优先级最高适合企业自有域名共享证书AppDomainSharedCert平台统一托管的通配符/多域名证书通过 match_hostname 自动匹配域名支持*.example.com通配。无论哪一级最终都会由 IngressDomainFactory 转成集群中的 TLS Secret并写入 Ingress 的tls段。如果匹配不到任何证书平台会优雅降级为 HTTP 并记录告警而不是让部署失败——这个细节对排查「为什么我的 HTTPS 不生效」很有帮助。排错指南流量不通时看哪里现象排查方向相关源码域名打不开NXDOMAINDNS 是否解析到入口 IPIngressConfig 中的frontend_ingress_ip404Ingress 的 host/path 与实际请求是否匹配kres_slzs/ingress.py503 Service UnavailableService 是否指向了已删除的后端Endpoints 是否为空IngressUpdaterHTTPS 降级为 HTTP未匹配到证书检查共享证书 CN 配置pick_shared_cert子路径应用 404路径重写是否开启检查 rewrite 注解ProcessIngress总结蓝鲸PaaS 路由设计的三个亮点声明式同步数据库是「期望状态」的唯一来源AppDefaultIngresses 统一调度四类 Ingress 管理器每次部署/改配置都会向集群 reconcile规则漂移会被自动纠正一套抽象兼容多版本序列化器工厂 同时支持networking.k8s.io/v1与旧版v1beta1平滑适配不同 K8s 与 ingress-nginx 版本多接入形态统一收口子域名、子路径、独立域名走同一套 Manager 基类AppIngressMgr插件机制还能按需注入自定义 nginx 配置片段。理解了这条「域名 → Ingress → Service → Pod」链路你就不只是会用蓝鲸PaaS而是真正看懂了它背后 Kubernetes 流量路由的完整玩法 【免费下载链接】blueking-paas蓝鲸智云 PaaS 平台是一个开放式的开发平台让开发者可以方便快捷地创建、开发、部署和管理 SaaS 应用。它提供了完善的前后台开发框架、服务总线ESB、API Gateway、调度引擎、公共组件 等服务。旨在帮助用户快速、低成本的构建免运维运营系统与支撑工具。项目地址: https://gitcode.com/GitHub_Trending/bl/blueking-paas创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考