通过OpenFaaS在Kubernetes中部署FastAPI微服务方案咨询
FastAPI应用从AWS Lambda迁移至Kubernetes部署方案
OpenFaaS部署实操流程
OpenFaaS可以直接托管多路由FastAPI应用,无需大幅改造原有代码,实操步骤如下:
- 项目适配改造
- 在项目根目录新增
faas.yml配置文件,指定运行时模板为python3-http,监听端口匹配OpenFaaS默认的9000端口 - 在
requirements.txt中补充fastapi、uvicorn依赖,原有Lambda专属依赖(如Mangum)可直接移除,OpenFaaS内置的watchdog会直接对接ASGI服务的HTTP请求 - 原有FastAPI路由逻辑无需修改,入口文件中直接启动uvicorn服务即可
- 在项目根目录新增
- 镜像构建与部署
- 本地安装
faas-cli工具后,执行faas build -f faas.yml完成容器镜像构建,镜像地址需配置为K8s集群可访问的私有仓库地址 - 完成K8s集群内OpenFaaS组件安装后,用
faas login连接到OpenFaaS网关,执行faas deploy -f faas.yml即可完成部署,所有原有路由可直接通过OpenFaaS网关访问
如果你的应用启动耗时较长、或者有常驻资源依赖,可在faas.yml中调整超时阈值、最小副本数参数,避免冷启动导致的请求异常
- 本地安装
更适配大型多路由FastAPI应用的备选方案
如果OpenFaaS的函数式运行时约束不符合你的业务需求,可选择以下更适配的方案:
- K8s原生Deployment + Service + Ingress部署
无额外第三方框架依赖,只需编写标准Dockerfile将FastAPI应用打包为通用容器镜像,用Deployment管理应用副本、Service做内部负载均衡、Ingress配置对外路由规则,支持自定义域名、HTTPS、流量切分等能力,运维成本最低,最适合复杂大型业务应用 - Knative Serving部署
保留类似AWS Lambda的自动扩缩容、缩容到0的Serverless能力,完全兼容K8s原生API,无需改造原有FastAPI代码即可直接部署,同时支持灰度发布、流量拆分等高级发布特性,比OpenFaaS更贴合K8s原生生态 - Kubeless部署
K8s原生Serverless函数框架,对Python生态适配度更高,使用逻辑和AWS Lambda高度接近,迁移成本更低,适合希望保留Serverless使用习惯的场景
迁移注意:原有Lambda运行时专属的event解析、服务集成逻辑需要调整为容器运行时的标准实现,所有依赖需要全部打包到容器镜像内,避免运行时依赖缺失。
内容的提问来源于stack exchange,提问作者Bemojo
相关产品推荐
相关产品推荐

