OpenFaaS 实战之四:模板操作 (template),29 岁 vivo 员工吐槽
本篇概览
本文是《OpenFaaS 实战》系列的第四篇,经历了前三篇快节奏操作,咱们对 OpenFaaS 有了基本了解,至少部署和开发是轻车熟路,现在要放慢脚步夯实基本功,扫除知识盲点;
本篇目标是掌握 template(模板)有关知识,包括以下内容:
基本命令
使用第三方模板
自己制作模板仓库
注意事项
从上面的概览可见,本篇内容不多但很基础很重要,接下来打开终端动手练习吧;
关于简化命令
如下所示,faas 其实就是 faas-cli 的链接,因此,平时输入命令用 faas 更简单:
[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
执行完毕后,当前目录下出现名为 template 的文件夹,里面是所有官方模板
[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
...
查看当前目录下可用的模板:
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
有了模板,就能创建函数,如下命令创建名为 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-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
评论