写点什么

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

作者:Java高工P7
  • 2021 年 11 月 11 日
  • 本文字数:2757 字

    阅读完需:约 9 分钟

│ │ └── FunctionHandler.cs


│ ├── Program.cs


│ ├── root.csproj


│ └── template.yml


├── dockerfile


│ ├── function


│ │ └── Dockerfile


│ └── template.yml


...


  1. 查看官方模板列表:


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


...


  1. 查看当前目录下可用的模板:


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


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


faas-cli new --lang java11 java-function


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


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


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


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

使用第三方模板

  1. 我在 GitHub 上做了个第三方模板仓库,来看如何使用,使用其他人的第三方模板都是这个套路;

  2. 所谓模板仓库,其本质还是普通的 GitHub 仓库,只是里面的内容要符合 OpenFaaS 的要求;

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


![在这里插入图片描述](https://img-blog.csdnimg.cn/20201122


【一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义】
浏览器打开:qq.cn.hn/FTf 免费领取
复制代码


111825108.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2JvbGluZ19jYXZhbHJ5,size_16,color_FFFFFF,t_70#pic_center)


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


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


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


  1. 控制台操作如下,可见下载了一个 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


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


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


Languages available as templates:


  • dockerfile

  • java11extend


  1. 使用模板创建函数:


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


  1. 制作镜像:


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


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


自己制作模板仓库

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


  1. 在 GitHub 上有个公共仓库;

  2. 所有内容必须放在 master 分支;

  3. 仓库内要有名为 template 的文件夹;

  4. template 文件夹里面,是每个模板自己的文件夹,如下图,是两个模板:



  1. 至于每个模板的文件夹里的内容,这就涉及到模板开发了,相关内容太多,就不在本篇展开了,只说一下重点:template.yml 是函数描述文件,必须要有,然后是 Dockerfile,这是用来构建镜像用的,至于其他内容和各种模板自身特点有关,在制作镜像时会用到,以 java11 为例,含有 gradle、java 相关的文件,这都是构建 java 工程时会用到,而 java 工程的构建结果又会被放入 docker 镜像中,阅读 Dockerfile 的内容可以详细的看到这一切;

  2. 当下为了快速做出模板,可以把官方模板的内容复制过来,改改就能用,地址:https://github.com/openfaas/templates

  3. 仓库准备好之后,任何人都可以通过类似以下命令来下载仓库使用了:

用户头像

Java高工P7

关注

还未添加个人签名 2021.11.08 加入

还未添加个人简介

评论

发布
暂无评论
OpenFaaS实战之四:模板操作(template)