写点什么

OpenFaaS 实战之二:函数入门,mysql 集群数据同步原理

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

    阅读完需:约 5 分钟

下载模板


创建函数


调整描述文件,非必须


函数功能编写


构建镜像


推送到仓库


部署函数


使用函数


  • 接下来,开始操作吧;

提醒

本文中的操作会用到工具 faas-cli,前文已提到过此工具可以部署在任意电脑上,远程连接 OpenFaaS,请确保 faas-cli 所在机器上有 docker 服务,因为构建镜像时会用到。

下载模板

  1. 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


  1. 执行命令 faas-cli new --list,得到模板列表如下,可见语言类型还是很丰富的:


[root@node1 faas-template]# faas-cli new --list


Languages available as templates:


  • csharp

  • dockerfile


《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
浏览器打开:qq.cn.hn/FTe 免费领取
复制代码


go


  • java11

  • java11-vert-x

  • node

  • node12

  • php7

  • python

  • python3

  • python3-debian

  • ruby


  1. 执行以下命令即可创建函数,add 是函数名,python 是语言类型,bolingcavalry 是 docker 镜像名字的前缀:


faas-cli new add --lang python -p bolingcavalry


  1. 控制台提示如下:


[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


  1. 当前目录下,产生名为 add 的文件夹,以及名为 add.yml 的文件;

  2. 先看 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


  1. 进入 add 文件夹,看到 faas-cli 帮我们生成的源码文件 handler.py,默认代码:


def handle(req):


"""handle a request to the function


Args:


req (str): request body


"""


return req


  1. 上述代码不符合咱们的需求,完全替换为以下内容:


def handle(req):


array = req.replace('\n', '').split(',')


rlt = 0


for i in array:


rlt += int(i)


return rlt


  1. 回到 add.yml 所在目录,执行以下命令开始构建函数:


faas-cli build -f ./add.yml


  1. 如下所示,开始在本地构建 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


  1. 查看本地镜像,确定是刚刚构建的:


[root@node1 faas-template]# docker images|grep add


bolingcavalry/add latest 5e6c22fa838d 4 minutes ago 88.4MB

关于 OpenFaaS 访问镜像

  1. 此时要关注的是 K8S 环境如何能访问到此镜像;

  2. 要注意的是 OpenFaaS 默认的镜像拉取策略是 Always,即每次都远程拉取,所以镜像必须放入仓库,例如 hub.docker.com、habor、registry 等;(这个策略可以修改,不过本文中先不动它)

  3. 关于镜像仓库的知识就不在此展开,我这里用的是 hub.docker.com,因为我的 ID 是 bolingcavalry,因此登录后执行 docker push bolingcavalry/add:latest 即可推送到远程仓库;

部署函数

  1. 执行部署命令 faas-cli deploy -f add.yml,控制台会提示部署成功,还会给出 URL:

用户头像

Java高工P7

关注

还未添加个人签名 2021.11.08 加入

还未添加个人简介

评论

发布
暂无评论
OpenFaaS实战之二:函数入门,mysql集群数据同步原理