OpenFaaS 实战之二:函数入门,mysql 集群数据同步原理
下载模板
创建函数
调整描述文件,非必须
函数功能编写
构建镜像
推送到仓库
部署函数
使用函数
接下来,开始操作吧;
提醒
本文中的操作会用到工具 faas-cli,前文已提到过此工具可以部署在任意电脑上,远程连接 OpenFaaS,请确保 faas-cli 所在机器上有 docker 服务,因为构建镜像时会用到。
下载模板
OpenFaaS 官方提供了编程语言模板,执行命令 faas-cli template pull,可以将最新模板下载到本地:
[root@node1 faas-template]# faas-cli template pull
Fetch templates from repository: https://github.com/openfaas/templates.git at master
2020/11/19 16:34:31 Attempting to expand templates from https://github.com/openfaas/templates.git
2020/11/19 16:34:45 Fetched 12 template(s) : [csharp dockerfile go java11 java11-vert-x node node12 php7 python python3 python3-debian ruby] from https://github.com/openfaas/templates.git
执行命令 faas-cli new --list,得到模板列表如下,可见语言类型还是很丰富的:
[root@node1 faas-template]# faas-cli new --list
Languages available as templates:
csharp
dockerfile
go
java11
java11-vert-x
node
node12
php7
python
python3
python3-debian
ruby
执行以下命令即可创建函数,add 是函数名,python 是语言类型,bolingcavalry 是 docker 镜像名字的前缀:
faas-cli new add --lang python -p bolingcavalry
控制台提示如下:
[root@node1 faas-template]# faas-cli new add --lang python -p bolingcavalry
Folder: add created.
/ _ \ _ __ ___ _ __ | __| _ __ _/ ___|
| | | | '_ \ / _ \ '_ | |_ / |/ _
__ \
| || | |) | / | | | | (| | (| |) |
_/| ./ ___|| ||| _,|_,|___/
|_|
Function created in folder: add
Stack file written: add.yml
当前目录下,产生名为 add 的文件夹,以及名为 add.yml 的文件;
先看 add.yml,这是函数的描述文件,本文中已经够用了,无需修改:
version: 1.0
provider:
name: openfaas
gateway: http://192.168.133.187:31112
functions:
add:
lang: python
handler: ./add
image: bolingcavalry/add:latest
进入 add 文件夹,看到 faas-cli 帮我们生成的源码文件 handler.py,默认代码:
def handle(req):
"""handle a request to the function
Args:
req (str): request body
"""
return req
上述代码不符合咱们的需求,完全替换为以下内容:
def handle(req):
array = req.replace('\n', '').split(',')
rlt = 0
for i in array:
rlt += int(i)
return rlt
回到 add.yml 所在目录,执行以下命令开始构建函数:
faas-cli build -f ./add.yml
如下所示,开始在本地构建 docker 镜像,正常情况下可以构建成功:
Step 29/29 : CMD ["fwatchdog"]
---> Running in 94b3e80d0df2
Removing intermediate container 94b3e80d0df2
---> 5e6c22fa838d
Successfully built 5e6c22fa838d
Successfully tagged bolingcavalry/add:latest
Image: bolingcavalry/add:latest built.
[0] < Building add done in 62.81s.
[0] Worker done.
Total build time: 62.81s
查看本地镜像,确定是刚刚构建的:
[root@node1 faas-template]# docker images|grep add
bolingcavalry/add latest 5e6c22fa838d 4 minutes ago 88.4MB
关于 OpenFaaS 访问镜像
此时要关注的是 K8S 环境如何能访问到此镜像;
要注意的是 OpenFaaS 默认的镜像拉取策略是 Always,即每次都远程拉取,所以镜像必须放入仓库,例如 hub.docker.com、habor、registry 等;(这个策略可以修改,不过本文中先不动它)
关于镜像仓库的知识就不在此展开,我这里用的是 hub.docker.com,因为我的 ID 是 bolingcavalry,因此登录后执行 docker push bolingcavalry/add:latest 即可推送到远程仓库;
部署函数
执行部署命令 faas-cli deploy -f add.yml,控制台会提示部署成功,还会给出 URL:
评论