当前位置:网站首页>OpenFaaS实战之四:模板操作(template)

OpenFaaS实战之四:模板操作(template)

2022-04-23 14:17:00 InfoQ

  • go
  • java11
  • java11-vert-x
  • node
  • node12
  • php7
  • python
  • python3
  • python3-debian
  • ruby

  • 有了模板,就能创建函数,如下命令创建名为java-function的函数:

faas-cli new --lang java11 java-function

成功后,修改此文件添加业务代码:./src/main/Handler.java;

  • 前面执行faas template store list查看的时候,注意每个模板的SOURCE字段,如果是openfaas-incubator,例如rust-http,就要使用以下命令来下载(多了个前缀openfaas-incubator):

faas-cli template store pull openfaas-incubator/rust-http

以上是模板的基本操作,此刻您可能有疑问:那些都是官方模板,第三方的模板怎么获取?另外如果我想自己做模板给别人用,又该如何操作?这些问题,接下来逐个解答;

[](()使用第三方模板

  • 我在GitHub上做了个第三方模板仓库,来看如何使用,使用其他人的第三方模板都是这个套路;
  • 所谓模板仓库,其本质还是普通的GitHub仓库,只是里面的内容要符合OpenFaaS的要求;
  • 我的模板仓库地址是:https://github.com/zq2599/openfaas-templates ,如下图:

![在这里插入图片描述](https://img-blog.csdnimg.cn/20201122111825108.jpg?x-oss-process=image/watermark,type_Zm 
《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】
 FuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2JvbGluZ19jYXZhbHJ5,size_16,color_FFFFFF,t_70#pic_center)

  • 下载上述模板仓库的命令(注意,找个干净的文件夹执行命令):

faas template pull https://github.com/zq2599/openfaas-templates

可见就是把仓库地址作为参数放在整个命令的末尾

  • 控制台操作如下,可见下载了一个template目录,里面有两个模板:dockerfile和java11extend:

[root@node1 333]# faas template pull https://github.com/zq2599/openfaas-templates

Fetch templates from repository: https://github.com/zq2599/openfaas-templates at master

2020/11/22 11:19:53 Attempting to expand templates from https://github.com/zq2599/openfaas-templates

2020/11/22 11:19:58 Fetched 2 template(s) : [dockerfile java11extend] from https://github.com/zq2599/openfaas-templates

[root@node1 333]# ls

template

[root@node1 333]# tree template/

template/

├── dockerfile

│ ├── function

│ │ └── Dockerfile

│ └── template.yml

└── java11extend

├── build.gradle

├── Dockerfile

├── function

│ ├── build.gradle

│ ├── gradle

│ │ └── wrapper

│ │ ├── gradle-wrapper.jar

│ │ └── gradle-wrapper.properties

│ ├── gradlew

│ ├── gradlew.bat

│ ├── settings.gradle

│ └── src

│ ├── main

│ │ └── java

│ │ └── com

│ │ └── openfaas

│ │ └── function

│ │ └── Handler.java

│ └── test

│ └── java

│ └── HandlerTest.java

├── gradle

│ └── wrapper

│ ├── gradle-wrapper.jar

│ └── gradle-wrapper.properties

├── README.md

├── settings.gradle

└── template.yml

16 directories, 17 files

  • 执行faas new --list看有哪些模板,果然是GitHub仓库中的两个:

[root@node1 333]# faas new --list

Languages available as templates:

  • dockerfile
  • java11extend

  • 使用模板创建函数:

faas-cli new java11extend-function --lang java11extend -p bolingcavalry

  • 制作镜像:

faas-cli build -f ./java11extend-function.yml

控制台输出以下信息,提示镜像制作成功:

Step 29/30 : HEALTHCHECK --interval=5s CMD [ -e /tmp/.lock ] || exit 1

---> Running in 6b68ca763980

Removing intermediate container 6b68ca763980

---> 50cea9002e9c

Step 30/30 : CMD ["fwatchdog"]

---> Running in c2f87a87c8f4

Removing intermediate container c2f87a87c8f4

---> 8094a5064a20

Successfully built 8094a5064a20

Successfully tagged bolingcavalry/java11extend-function:latest

Image: bolingcavalry/java11extend-function:latest built.

[0] < Building java11extend-function done in 81.75s.

[0] Worker done.

Total build time: 81.76s

  • 接下来将镜像推送到镜像仓库、部署函数、验证等操作请参考前文[《OpenFaaS实战之三:Java函数》]((),里面有详细的步骤,就不在本文中展开了,下面的图片证明此模板做出的函数可以正常部署和运行:

null

[](()自己制作模板仓库

经历了前面的实战,对于如何制作模板仓库,相信您心中已经有了答案,这里简单小结一下需要遵守的原则:

  • 在GitHub上有个公共仓库;
  • 所有内容必须放在master分支;
  • 仓库内要有名为template的文件夹;
  • template文件夹里面,是每个模板自己的文件夹,如下图,是两个模板:

null
  • 至于每个模板的文件夹里的内容,这就涉及到模板开发了,相关内容太多,就不在本篇展开了,只说一下重点:template.yml是函数描述文件,必须要有,然后是Dockerfile,这是用来构建镜像用的,至于其他内容和各种模板自身特点有关,在制作镜像时会用到,以java11为例,含有gradle、java相关的文件,这都是构建java工程时会用到,而java工程的构建结果又会被放入docker镜像中,阅读Dockerfile的内容可以详细的看到这一切;
  • 当下为了快速做出模板,可以把官方模板的内容复制过来,改改就能用,地址:https://github.com/openfaas/templates
  • 仓库准备好之后,任何人都可以通过类似以下命令来下载仓库使用了:

faas template pull https://github.com/zq2599/openfaas-templates

[](()注意点

最后有两处温馨提醒,请注意:

  • 现在GitHub上新增的仓库,默认分支已经不是master了,而是mian,但fass-cli命令认准的是master分支,所以请您确保自己的仓库文件内容都在master分支,而不是main
  • 执行命令查看官方模板时,可以看到java8的模板,如下图红框,原以为这是java开发者的福音:

null
尽管在列表中可以看到java8,但是OpenFaaS的官方文档宣布java8模板已经废弃,不建议使用,如下图红框,文档地址:https://docs.openfaas.com/cli/templates/#java

null
  • 以上就是模板相关的操作了,本篇作为基础还是挺重要的,建议您多动手熟悉相关命令,为后面的深入学习打好基础;

版权声明
本文为[InfoQ]所创,转载请带上原文链接,感谢
https://xie.infoq.cn/article/92d5ba3826e61b87dbd7e0892