如何将Spring Cloud Function部署到OpenFaaS平台?
如何将Spring Cloud Function部署到OpenFaaS平台
Spring Cloud Function官方目前仅提供AWS、Azure等公有云无服务器平台的适配组件,没有原生OpenFaaS部署支持,但可以通过OpenFaaS的自定义容器运行时能力完成部署。
部署前置要求:本地已安装配置好Docker、faas-cli,且可正常访问OpenFaaS网关和容器镜像仓库
具体操作步骤如下:
- 改造Spring Cloud Function项目
引入Spring Web依赖将函数能力暴露为标准HTTP接口,默认端口设置为8080,本地验证接口调用正常后,执行mvn package或gradle bootJar命令打包为可执行Fat Jar包。 - 编写Dockerfile构建自定义运行镜像
基于OpenFaaS官方of-watchdog组件封装运行镜像,参考Dockerfile内容如下:# 引入of-watchdog运行时组件 FROM openfaas/of-watchdog:0.9.6 as watchdog # 选择和项目匹配的JDK基础镜像,此处以JDK11为例 FROM openjdk:11-jre-slim as runtime COPY --from=watchdog /fwatchdog /usr/bin/fwatchdog RUN chmod +x /usr/bin/fwatchdog # 配置非root运行用户 RUN groupadd -r app && useradd -r -g app app USER app # 替换为你实际打包生成的Jar包路径 COPY --chown=app:app target/scf-demo.jar /app/app.jar # 配置watchdog对接Spring Boot服务参数 ENV mode="http" ENV upstream_url="http://127.0.0.1:8080" ENV port="8080" ENV fprocess="java -jar /app/app.jar" EXPOSE 8080 # 若项目未引入actuator依赖可删除健康检查配置 HEALTHCHECK --interval=2s CMD [ "wget", "-q", "-O", "/dev/null", "http://localhost:8080/actuator/health" ] CMD [ "fwatchdog" ] - 编写OpenFaaS部署配置文件
在项目根目录新建stack.yml文件,参考内容如下:version: 1.0 provider: name: openfaas gateway: http://替换为你的OpenFaaS网关地址:8080 functions: scf-demo: # 替换为你的函数名称 lang: dockerfile image: 替换为你的镜像仓库地址/scf-demo:v1 # 替换为实际镜像地址和版本 - 执行部署操作
先登录你的容器镜像仓库,然后在项目根目录执行faas-cli up -f stack.yml命令,会自动完成镜像构建、推送、函数部署全流程,部署完成后即可在OpenFaaS控制台查看并调用测试函数。
优化建议:如果要进一步优化函数启动速度、减小镜像体积,可以用Spring Native将项目编译为原生二进制文件打包镜像,更适配无服务器场景的冷启动要求。
内容的提问来源于stack exchange,提问作者Klaus
相关产品推荐
相关产品推荐

