+-
OpenFaaS实战之四:模板操作(template)
首页 专栏 云计算 文章详情
0

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

程序员欣宸 发布于 今天 00:00

欢迎访问我的GitHub

https://github.com/zq2599/blog_demos

内容:所有原创文章分类汇总及配套源码,涉及Java、Docker、Kubernetes、DevOPS等;

OpenFaaS实战系列文章链接

部署 函数入门 Java函数 模板操作(template) 大话watchdog of-watchdog(为性能而生) java11模板解析 OpenFaaS实战之八:自制模板(maven+jdk8) OpenFaaS实战之九:终篇,自制模板(springboot+maven+jdk8)

本篇概览

本文是《OpenFaaS实战》系列的第四篇,经历了前三篇快节奏操作,咱们对OpenFaaS有了基本了解,至少部署和开发是轻车熟路,现在要放慢脚步夯实基本功,扫除知识盲点; 本篇目标是掌握<font color="blue">template(模板)</font>有关知识,包括以下内容: 基本命令 使用第三方模板 自己制作模板仓库 注意事项 从上面的概览可见,本篇内容不多但很基础很重要,接下来打开终端动手练习吧;

关于简化命令

如下所示,<font color="blue">faas</font>其实就是<font color="red">faas-cli</font>的链接,因此,平时输入命令用<font color="blue">faas</font>更简单:

[root@node1 template]# ls -l /usr/local/bin/faas lrwxrwxrwx. 1 root root 23 11月 19 11:06 /usr/local/bin/faas -> /usr/local/bin/faas-cli

基本命令

获取所有官方模板: faas template pull

执行完毕后,当前目录下出现名为<font color="blue">template</font>的文件夹,里面是所有官方模板

[root@node1 21]# ls template [root@node1 21]# cd template/ [root@node1 template]# ls csharp 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 DESCRIPTION csharp openfaas Classic C# template dockerfile openfaas Classic Dockerfile template go openfaas Classic Golang template java8 openfaas Java 8 template java11 openfaas Java 11 template rust-http openfaas-incubator Rust HTTP template bash-streaming openfaas-incubator Bash Streaming template ... 3. 查看当前目录下可用的模板:

faas new --list

终端显示:

[root@node1 21]# faas new --list
Languages available as templates:

csharp dockerfile go java11 java11-vert-x node node12 php7 python python3 python3-debian

ruby

有了模板,就能创建函数,如下命令创建名为<font color="blue">java-function</font>的函数:

faas-cli new --lang java11 java-function

成功后,修改此文件添加业务代码:<font color="blue">./src/main/Handler.java</font>;

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

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

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

使用第三方模板

我在GitHub上做了个第三方模板仓库,来看如何使用,使用其他人的第三方模板都是这个套路; 所谓模板仓库,其本质还是普通的GitHub仓库,只是里面的内容要符合OpenFaaS的要求;

我的模板仓库地址是:https://github.com/zq2599/ope... ,如下图:

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

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

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

控制台操作如下,可见下载了一个<font color="red">template</font>目录,里面有两个模板:<font color="blue">dockerfile</font>和<font color="blue">java11extend</font>:

[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

6. 执行<font color="blue">faas new --list</font>看有哪些模板,果然是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

9. 接下来将镜像推送到镜像仓库、部署函数、验证等操作请参考前文[《OpenFaaS实战之三:Java函数》](https://xinchen.blog.csdn.net/article/details/109845563),里面有详细的步骤,就不在本文中展开了,下面的图片证明此模板做出的函数可以正常部署和运行: ![在这里插入图片描述](/img/bVcR73i) ### 自己制作模板仓库 经历了前面的实战,对于如何制作模板仓库,相信您心中已经有了答案,这里简单小结一下需要遵守的原则: 1. 在GitHub上有个公共仓库; 2. 所有内容必须放在<font color="red">master</font>分支; 3. 仓库内要有名为<font color="blue">template</font>的文件夹; 4. <font color="blue">template</font>文件夹里面,是每个模板自己的文件夹,如下图,是两个模板: ![在这里插入图片描述](/img/bVcR73j) 5. 至于每个模板的文件夹里的内容,这就涉及到模板开发了,相关内容太多,就不在本篇展开了,只说一下重点:<font color="blue">template.yml</font>是函数描述文件,必须要有,然后是<font color="blue">Dockerfile</font>,这是用来构建镜像用的,至于其他内容和各种模板自身特点有关,在制作镜像时会用到,以<font color="blue">java11</font>为例,含有gradle、java相关的文件,这都是构建java工程时会用到,而java工程的构建结果又会被放入docker镜像中,阅读<font color="blue">Dockerfile</font>的内容可以详细的看到这一切; 6. 当下为了快速做出模板,可以把官方模板的内容复制过来,改改就能用,地址:https://github.com/openfaas/templates 7. 仓库准备好之后,任何人都可以通过类似以下命令来下载仓库使用了:

faas template pull https://github.com/zq2599/ope...

### 注意点 最后有两处温馨提醒,请注意: 1. 现在GitHub上新增的仓库,默认分支已经不是<font color="blue">master</font>了,而是<font color="red">mian</font>,但fass-cli命令认准的是<font color="blue">master</font>分支,所以请您确保自己的仓库文件内容都在<font color="blue">master</font>分支,而不是<font color="red">main</font> 2. 执行命令查看官方模板时,可以看到java8的模板,如下图红框,原以为这是java开发者的福音: ![在这里插入图片描述](/img/bVcR73k) 尽管在列表中可以看到java8,但是OpenFaaS的官方文档宣布<font color="blue">java8模板已经废弃</font>,不建议使用,如下图红框,文档地址:https://docs.openfaas.com/cli/templates/#java ![在这里插入图片描述](/img/bVcR73l) - 以上就是模板相关的操作了,本篇作为基础还是挺重要的,建议您多动手熟悉相关命令,为后面的深入学习打好基础; ### 你不孤单,欣宸原创一路相伴 1. [Java系列](https://xinchen.blog.csdn.net/article/details/105068742) 2. [Spring系列](https://xinchen.blog.csdn.net/article/details/105086498) 3. [Docker系列](https://xinchen.blog.csdn.net/article/details/105086732) 4. [kubernetes系列](https://xinchen.blog.csdn.net/article/details/105086794) 5. [数据库+中间件系列](https://xinchen.blog.csdn.net/article/details/105086850) 6. [DevOps系列](https://xinchen.blog.csdn.net/article/details/105086920) ### 欢迎关注公众号:程序员欣宸 > 微信搜索「程序员欣宸」,我是欣宸,期待与您一同畅游Java世界...
云计算
阅读 19 发布于 今天 00:00
举报
收藏
分享
本作品系原创, 采用《署名-非商业性使用-禁止演绎 4.0 国际》许可协议
程序员欣宸

热爱Java和Docker

89 声望
7 粉丝
关注作者
0 条评论
得票数 最新
提交评论
程序员欣宸

热爱Java和Docker

89 声望
7 粉丝
关注作者
宣传栏
目录

欢迎访问我的GitHub

https://github.com/zq2599/blog_demos

内容:所有原创文章分类汇总及配套源码,涉及Java、Docker、Kubernetes、DevOPS等;

OpenFaaS实战系列文章链接

部署 函数入门 Java函数 模板操作(template) 大话watchdog of-watchdog(为性能而生) java11模板解析 OpenFaaS实战之八:自制模板(maven+jdk8) OpenFaaS实战之九:终篇,自制模板(springboot+maven+jdk8)

本篇概览

本文是《OpenFaaS实战》系列的第四篇,经历了前三篇快节奏操作,咱们对OpenFaaS有了基本了解,至少部署和开发是轻车熟路,现在要放慢脚步夯实基本功,扫除知识盲点; 本篇目标是掌握<font color="blue">template(模板)</font>有关知识,包括以下内容: 基本命令 使用第三方模板 自己制作模板仓库 注意事项 从上面的概览可见,本篇内容不多但很基础很重要,接下来打开终端动手练习吧;

关于简化命令

如下所示,<font color="blue">faas</font>其实就是<font color="red">faas-cli</font>的链接,因此,平时输入命令用<font color="blue">faas</font>更简单:

[root@node1 template]# ls -l /usr/local/bin/faas lrwxrwxrwx. 1 root root 23 11月 19 11:06 /usr/local/bin/faas -> /usr/local/bin/faas-cli

基本命令

获取所有官方模板: faas template pull

执行完毕后,当前目录下出现名为<font color="blue">template</font>的文件夹,里面是所有官方模板

[root@node1 21]# ls template [root@node1 21]# cd template/ [root@node1 template]# ls csharp 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 DESCRIPTION csharp openfaas Classic C# template dockerfile openfaas Classic Dockerfile template go openfaas Classic Golang template java8 openfaas Java 8 template java11 openfaas Java 11 template rust-http openfaas-incubator Rust HTTP template bash-streaming openfaas-incubator Bash Streaming template ... 3. 查看当前目录下可用的模板:

faas new --list

终端显示:

[root@node1 21]# faas new --list
Languages available as templates:

csharp dockerfile go java11 java11-vert-x node node12 php7 python python3 python3-debian

ruby

有了模板,就能创建函数,如下命令创建名为<font color="blue">java-function</font>的函数:

faas-cli new --lang java11 java-function

成功后,修改此文件添加业务代码:<font color="blue">./src/main/Handler.java</font>;

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

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

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

使用第三方模板

我在GitHub上做了个第三方模板仓库,来看如何使用,使用其他人的第三方模板都是这个套路; 所谓模板仓库,其本质还是普通的GitHub仓库,只是里面的内容要符合OpenFaaS的要求;

我的模板仓库地址是:https://github.com/zq2599/ope... ,如下图:

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

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

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

控制台操作如下,可见下载了一个<font color="red">template</font>目录,里面有两个模板:<font color="blue">dockerfile</font>和<font color="blue">java11extend</font>:

[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

6. 执行<font color="blue">faas new --list</font>看有哪些模板,果然是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

9. 接下来将镜像推送到镜像仓库、部署函数、验证等操作请参考前文[《OpenFaaS实战之三:Java函数》](https://xinchen.blog.csdn.net/article/details/109845563),里面有详细的步骤,就不在本文中展开了,下面的图片证明此模板做出的函数可以正常部署和运行: ![在这里插入图片描述](/img/bVcR73i) ### 自己制作模板仓库 经历了前面的实战,对于如何制作模板仓库,相信您心中已经有了答案,这里简单小结一下需要遵守的原则: 1. 在GitHub上有个公共仓库; 2. 所有内容必须放在<font color="red">master</font>分支; 3. 仓库内要有名为<font color="blue">template</font>的文件夹; 4. <font color="blue">template</font>文件夹里面,是每个模板自己的文件夹,如下图,是两个模板: ![在这里插入图片描述](/img/bVcR73j) 5. 至于每个模板的文件夹里的内容,这就涉及到模板开发了,相关内容太多,就不在本篇展开了,只说一下重点:<font color="blue">template.yml</font>是函数描述文件,必须要有,然后是<font color="blue">Dockerfile</font>,这是用来构建镜像用的,至于其他内容和各种模板自身特点有关,在制作镜像时会用到,以<font color="blue">java11</font>为例,含有gradle、java相关的文件,这都是构建java工程时会用到,而java工程的构建结果又会被放入docker镜像中,阅读<font color="blue">Dockerfile</font>的内容可以详细的看到这一切; 6. 当下为了快速做出模板,可以把官方模板的内容复制过来,改改就能用,地址:https://github.com/openfaas/templates 7. 仓库准备好之后,任何人都可以通过类似以下命令来下载仓库使用了:

faas template pull https://github.com/zq2599/ope...

### 注意点 最后有两处温馨提醒,请注意: 1. 现在GitHub上新增的仓库,默认分支已经不是<font color="blue">master</font>了,而是<font color="red">mian</font>,但fass-cli命令认准的是<font color="blue">master</font>分支,所以请您确保自己的仓库文件内容都在<font color="blue">master</font>分支,而不是<font color="red">main</font> 2. 执行命令查看官方模板时,可以看到java8的模板,如下图红框,原以为这是java开发者的福音: ![在这里插入图片描述](/img/bVcR73k) 尽管在列表中可以看到java8,但是OpenFaaS的官方文档宣布<font color="blue">java8模板已经废弃</font>,不建议使用,如下图红框,文档地址:https://docs.openfaas.com/cli/templates/#java ![在这里插入图片描述](/img/bVcR73l) - 以上就是模板相关的操作了,本篇作为基础还是挺重要的,建议您多动手熟悉相关命令,为后面的深入学习打好基础; ### 你不孤单,欣宸原创一路相伴 1. [Java系列](https://xinchen.blog.csdn.net/article/details/105068742) 2. [Spring系列](https://xinchen.blog.csdn.net/article/details/105086498) 3. [Docker系列](https://xinchen.blog.csdn.net/article/details/105086732) 4. [kubernetes系列](https://xinchen.blog.csdn.net/article/details/105086794) 5. [数据库+中间件系列](https://xinchen.blog.csdn.net/article/details/105086850) 6. [DevOps系列](https://xinchen.blog.csdn.net/article/details/105086920) ### 欢迎关注公众号:程序员欣宸 > 微信搜索「程序员欣宸」,我是欣宸,期待与您一同畅游Java世界...