内容:所有原创文章分类和汇总,及配套源码,涉及Java、Docker、Kubernetes、DevOPS等;
本篇概览本文是《OpenFaaS实战》系列的第四篇,经历了前三篇快节奏操作,咱们对OpenFaaS有了基本理解,至少支配和开拓是得心应手,现在要放慢脚步夯实基本功,肃清知识盲点;本篇目标是节制template(模板)有关知识,包括以下内容:基本命令利用第三方模板自己制作模板仓库把稳事变从上面的概览可见,本篇内容不多但很根本很主要,接下来打开终端动手练习吧;关于简化命令如下所示,faas实在便是faas-cli的链接,因此,平时输入命令用faas更大略:
[root@node1 template]# ls -l /usr/local/bin/faaslrwxrwxrwx. 1 root root 23 11月 19 11:06 /usr/local/bin/faas -> /usr/local/bin/faas-cli
基本命令获取所有官方模板:
faas template pull
实行完毕后,当前目录下涌现名为template的文件夹,里面是所有官方模板
[root@node1 21]# lstemplate[root@node1 21]# cd template/[root@node1 template]# lscsharp dockerfile go java11 java11-vert-x node node12 php7 python python3 python3-debian ruby[root@node1 template]# cd ..[root@node1 21]# tree template/template/├── csharp│ ├── Dockerfile│ ├── function│ │ ├── Function.csproj│ │ └── FunctionHandler.cs│ ├── Program.cs│ ├── root.csproj│ └── template.yml├── dockerfile│ ├── function│ │ └── Dockerfile│ └── template.yml...
查看官方模板列表:
faas template store list
返复书息如下(太多了,省略部分):
NAME SOURCE DESCRIPTIONcsharp openfaas Classic C# templatedockerfile openfaas Classic Dockerfile templatego openfaas Classic Golang templatejava8 openfaas Java 8 templatejava11 openfaas Java 11 templaterust-http openfaas-incubator Rust HTTP templatebash-streaming openfaas-incubator Bash Streaming template...
查看当前目录下可用的模板:
faas new --list
终端显示:
[root@node1 21]# faas new --listLanguages available as templates:- csharp- dockerfile- 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 ,如下图:下载上述模板仓库的命令(把稳,找个干净的文件夹实行命令):faas template pull https://github.com/zq2599/openfaas-templates
可见便是把仓库地址作为参数放在全体命令的末端
掌握台操作如下,可见下载了一个template目录,里面有两个模板:dockerfile和java11extend:[root@node1 333]# faas template pull https://github.com/zq2599/openfaas-templatesFetch templates from repository: https://github.com/zq2599/openfaas-templates at master2020/11/22 11:19:53 Attempting to expand templates from https://github.com/zq2599/openfaas-templates2020/11/22 11:19:58 Fetched 2 template(s) : [dockerfile java11extend] from https://github.com/zq2599/openfaas-templates[root@node1 333]# lstemplate[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.yml16 directories, 17 files
实行faas new --list看有哪些模板,果真是GitHub仓库中的两个:
[root@node1 333]# faas new --listLanguages 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 6b68ca763980Removing intermediate container 6b68ca763980 ---> 50cea9002e9cStep 30/30 : CMD ["fwatchdog"] ---> Running in c2f87a87c8f4Removing intermediate container c2f87a87c8f4 ---> 8094a5064a20Successfully built 8094a5064a20Successfully tagged bolingcavalry/java11extend-function:latestImage: bolingcavalry/java11extend-function:latest built.[0] < Building java11extend-function done in 81.75s.[0] Worker done.Total build time: 81.76s
接下来将镜像推送到镜像仓库、支配函数、验证等操作请参考前文《OpenFaaS实战之二:函数入门 》,里面有详细的步骤,就不在本文中展开了,下面的图片证明此模板做出的函数可以正常支配和运行:
经历了前面的实战,对付如何制作模板仓库,相信您心中已经有了答案,这里大略小结一下须要遵守的原则:
在GitHub上有个公共仓库;所有内容必须放在master分支;仓库内要有名为template的文件夹;template文件夹里面,是每个模板自己的文件夹,如下图,是两个模板:至于每个模板的文件夹里的内容,这就涉及到模板开拓了,干系内容太多,就不在本篇展开了,只说一下重点: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开拓者的福音:只管在列表中可以看到java8,但是OpenFaaS的官方文档宣告java8模板已经废弃,不建议利用,如下图红框,文档地址:https://docs.openfaas.com/cli/templates/#java以上便是模板干系的操作了,本篇作为根本还是挺主要的,建议您多动手熟习干系命令,为后面的深入学习打好根本;欢迎关注我的"大众年夜众号:程序员欣宸