欢送拜访我的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/faaslrwxrwxrwx. 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]# 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...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-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.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 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
9. 接下来将镜像推送到镜像仓库、部署函数、验证等操作请参考前文[《OpenFaaS实战之三:Java函数》](https://xinchen.blog.csdn.net/article/details/109845563),外面有具体的步骤,就不在本文中开展了,上面的图片证实此模板做出的函数能够失常部署和运行: ### 本人制作模板仓库经验了后面的实战,对于如何制作模板仓库,置信您心中曾经有了答案,这里简略小结一下须要恪守的准则:1. 在GitHub上有个公共仓库;2. 所有内容必须放在<font color="red">master</font>分支;3. 仓库内要有名为<font color="blue">template</font>的文件夹;4. <font color="blue">template</font>文件夹外面,是每个模板本人的文件夹,如下图,是两个模板: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/templates7. 仓库筹备好之后,任何人都能够通过相似以下命令来下载仓库应用了:
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开发者的福音:只管在列表中能够看到java8,然而OpenFaaS的官网文档发表<font color="blue">java8模板曾经废除</font>,不倡议应用,如下图红框,文档地址:https://docs.openfaas.com/cli/templates/#java- 以上就是模板相干的操作了,本篇作为根底还是挺重要的,建议您多入手相熟相干命令,为前面的深刻学习打好根底;### 你不孤独,欣宸原创一路相伴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世界...