欢迎访问我的GitHubhttps://github.com/zq2599/blog_demos
内容:所有原创文章分类汇总及配套源码,涉及Java、Docker、Kubernetes、DevOPS等;
OpenFaaS实战系列文章链接
- 部署
- 函数入门
- Java函数
- 模板操作(template)
- 大话watchdog
- of-watchdog(为性能而生)
- java11模板解析
- OpenFaaS实战之八:自制模板(maven+jdk8)
- OpenFaaS实战之九:终篇,自制模板(springboot+maven+jdk8)
- 本文是《OpenFaaS实战》系列的第二篇,在Kubernetes环境把OpenFaaS在搭建好之后,终于可以开始开发函数了;
- 本篇的主题是熟悉OpenFaaS的函数操作,包括:开发、部署、使用,demo函数使用的语言是python,因为简单;
- demo函数本身并不复杂:一个加法程序,接收1,2,3这样的字符串,分割成三个数字1、2、3,将它们相加的结果返回;
- 提前把函数操作的流程捋捋,如下所示,后面会按照这个流程去执行:
- 接下来,开始操作吧;
下载模板
- OpenFaaS官方提供了编程语言模板,执行命令faas-cli template pull,可以将最新模板下载到本地:
[root@node1 faas-template]# faas-cli template pullFetch templates from repository: https://github.com/openfaas/templates.git at master2020/11/19 16:34:31 Attempting to expand templates from https://github.com/openfaas/templates.git2020/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 --listLanguages 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 bolingcavalryFolder: add created.____________ / _ \ _ _____ _ __ |___|_ ___ _/ ___|| | | | '_ \ / _ \ '_ \| |_ / _` |/ _` \___ \| |_| | |_) |__/ | | |_| (_| | (_| |___) | \___/| .__/ \___|_| |_|_|\__,_|\__,_|____/|_|Function created in folder: addStack file written: add.yml- 当前目录下,产生名为add的文件夹,以及名为add.yml的文件;
- 先看add.yml,这是函数的描述文件,本文中已经够用了,无需修改:
version: 1.0provider:name: openfaasgateway: http://192.168.133.187:31112functions:add:lang: pythonhandler: ./addimage: bolingcavalry/add:latest- 进入add文件夹,看到faas-cli帮我们生成的源码文件handler.py,默认代码:
def handle(req):"""handle a request to the functionArgs:req (str): request body"""return req- 上述代码不符合咱们的需求,完全替换为以下内容:
def handle(req):array = req.replace('\n', '').split(',')rlt = 0for i in array:rlt += int(i)return rlt- 回到add.yml所在目录,执行以下命令开始构建函数:
faas-cli build -f ./add.yml- 如下所示,开始在本地构建docker镜像,正常情况下可以构建成功:
Step 29/29 : CMD ["fwatchdog"] ---> Running in 94b3e80d0df2Removing intermediate container 94b3e80d0df2 ---> 5e6c22fa838dSuccessfully built 5e6c22fa838dSuccessfully tagged bolingcavalry/add:latestImage: 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 addbolingcavalry/addlatest5e6c22fa838d4 minutes ago88.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.ymlDeploying: 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-fnNAMEREADYSTATUSRESTARTSAGEadd-5679bcd94c-vc9rw1/1Running032mnodeinfo-57fb768fb8-955tf1/1Running0104m- 此时登录管理页面,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'21至此,OpenFaaS环境下的函数基本操作的实战就完成了,接下来的文章会继续深入OpenFaaS,了解它更多强大的能力;你不孤单,欣宸原创一路相伴
- Java系列
- Spring系列
- Docker系列
- kubernetes系列
- 数据库+中间件系列
- DevOps系列
https://github.com/zq2599/blog_demos
- 春季老年人吃什么养肝?土豆、米饭换着吃
- 三八妇女节节日祝福分享 三八妇女节节日语录
- 老人谨慎!选好你的“第三只脚”
- 校方进行了深刻的反思 青岛一大学生坠亡校方整改校规
- 脸皮厚的人长寿!有这特征的老人最长寿
- 长寿秘诀:记住这10大妙招 100%增寿
- 春季老年人心血管病高发 3条保命要诀
- 眼睛花不花要看四十八 老年人怎样延缓老花眼
- 香槟然能防治老年痴呆症? 一天三杯它人到90不痴呆
- 老人手抖的原因 为什么老人手会抖
