乐趣区

关于云计算:OpenFaaS实战之四模板操作template

欢送拜访我的 GitHub

https://github.com/zq2599/blog_demos

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

OpenFaaS 实战系列文章链接

  1. 部署
  2. 函数入门
  3. Java 函数
  4. 模板操作 (template)
  5. 大话 watchdog
  6. of-watchdog(为性能而生)
  7. java11 模板解析
  8. OpenFaaS 实战之八:自制模板 (maven+jdk8)
  9. 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

根本命令

  1. 获取所有官网模板:
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
...
  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
...

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 世界...
退出移动版