- 执行以下命令即可创建函数,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:
[root@node1 faas-template]# faas-cli deploy -f add.yml
Deploying: add.
WARNING! Communication is not secure, please consider using HTTPS. Letsencrypt.org offers free SSL/TLS certificates.
Deployed. 202 Accepted.
URL: http://192.168.133.187:31112/function/add.openfaas-fn
- 如果K8S可以顺利拉取到镜像,就可以看到openfaas-fn这个namespace下新增了名为add-xxx的pod,且状态正常:
[root@node1 faas-template]# kubectl get pods -n openfaas-fn
NAME READY STATUS RESTARTS AGE
add-5679bcd94c-vc9rw 1/1 Running 0 32m
nodeinfo-57fb768fb8-955tf 1/1 Running 0 104m
- 此时登录管理页面,http://192.168.133.187:31112,可以看到新增的函数,也可以在页面上验证功能调用是否正常,如下图:

- 也可以在其他电脑上发起请求测试,如下所示,函数可以正常服务:
[root@node1 ~]# curl http://192.168.133.187:31112/function/add -X POST -d ‘1,2,3,4,5,6’



