函数即服务,一步到位!

函数即服务,一步到位!

谈起构建一个云端项目,你会想到什么?复杂的服务器购买流程和配置、各种复制的环境依赖安装、Docker镜像的打包和构建,还是令人头疼的后期运维......

然而,现在随时随地都能看见一个新的项目,每个有趣的项目都会带来很多的流量,这看起来并不复杂。但是各个平台又有部分接口的不兼容,几经周折,构建好了一个平台,最终发现流量极低。如果此时再去开发其他平台,得不偿失。

如何构建一个有趣的项目,只需一次构建就能多平台调用呢,现在有请我们今天的主角,最近非常火爆的函数即服务:FaaS !

什么是函数即服务 (FaaS)?

函数即服务 (FaaS) 是一种云计算形式,可帮助开发人员更好地工作,无需他们维护应用程序基础架构。当开发人员利用FaaS时,他们使用FaaS平台为他们构建、运行和监督应用程序包。

在这一点上,您可能会认为FaaS听起来像无服务器计算 ——它确实如此。无服务器计算允许开发人员将管理数据库、API网关、存储、消息传递和其他基础设施外包给第三方提供商。FaaS 是一种无服务器计算。

不过这个无服务器是指用户在使用Faas构建应用时无需创建服务器,而服务提供商的底层依旧是服务器架构,对于用户来说只需要输入参数即可构建应用,实在是太方便了。

Lighthouse+OpenFaaS

轻量应用服务器Lighthouse区别于普通云服务器,主要面向轻量级的应用场景,为用户提供开箱即用的云服务器产品。它将基础的云资源统一打包进套餐,同时为用户提供丰富的应用镜像,除了包含底层的操作系统之外,还分别封装了各个场景下必需的应用软件,为用户免去了购买普通云服务器时繁琐的应用部署、配置和初始化过程,购买即可用。

优惠链接:https://url.cn/cwrkpDAT

函数即服务,一步到位!

OpenFaas 简介

OpenFaaS 是一款高人气的开源的 faas 框架,开发人员可以借助 OpenFaaS 将事件驱动的功能和微服务部署到 Kubernetes,而无需编写重复、枯燥的样板编码。只需将代码或现有二进制文件打包到 Docker 镜像中,以获得具有自动缩放和监控指标的高度可扩展端点(Endpoints)。

OpenFaas 特点

  • 平台无关:OpenFaas 是开源框架,可以部署在任意云平台,无需担心平台锁定的问题

  • 语言无关:任意语言编写的函数均可打包至 Docker 镜像并部署运行

  • 使用简单:内置 UI,丰富的 CLI 命令和一键安装

  • 灵活伸缩:高峰期自动扩容,空闲时自动缩容

  • 社区活跃

函数即服务,一步到位!

函数即服务

服务器准备

想要使用自建OpenFaaS,首先你需要一台轻量应用服务器,镜像直接选择 OpenFaaS 1.0.0:

函数即服务,一步到位!

购买完成后进入产品控制台,找到已经创建的实例,在详情页-应用管理中能够看到如下信息:

函数即服务,一步到位!

或者你已经拥有了一台轻量应用服务器,那么只需要在重装系统时选择 OpenFaaS 1.0.0 镜像即可~

此刻,在确保服务器正常运行的情况下,便可以通过应用管理页面提供的访问地址访问OpenFaaS 1.0.0管理后台,获取密码请在控制台输入命令:

 cat ~lighthouse/credentials.txt

函数即服务,一步到位!

函数即服务,一步到位!

登录之后我们可以看到官方提供了一些示例Function,点击Deploy New Function即可查看

函数即服务,一步到位!

点击 deploy 之后等待状态 ready 之后就可以进行使用了,点击 invoke 进行调用,这个 function 是用来获取主机信息的。

函数即服务,一步到位!

构建自己的Function

首先登录到服务器,安装OpenFaaS提供的命令行工具:

 $ curl -sSL https://cli.openfaas.com | sudo sh

函数即服务,一步到位!

faas-cli 基础命令

 # 最新模板下载到本地
 faas-cli template pull
 # 查询 openfaas 的模板列表
 faas-cli new --list
 # 创建模板函数
 # 执行以下命令即可创建函数,add是函数名,python是语言类型
 faas-cli new qdfaas --lang python

函数即服务,一步到位!

说明: 当前目录下,产生名为qdfaas的文件夹,以及名为qdfaas.yml的文件; qdfaas.yml 内容如下:

函数即服务,一步到位!

进入qdfaas文件夹,看到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(',')
     num = 0
     for a in array:
         num -= int(a)
     return num

构建函数

完成函数后,使用以下命令构建函数。

 faas-cli build -f qdfaas.yml --shrinkwrap

构建成功后会看到目录内多出了 build 文件夹。

函数即服务,一步到位!

在本地构建Docker镜像之前要记得先登录,博主就是一直报错,后来才发现需要登录:

 sudo cat /var/lib/faasd/secrets/basic-auth-password | faas-cli login -s

函数即服务,一步到位!

切换到目录:

 cd build/openfaas

打包Docker:

 nerdctl build --namespace openfaas-fn -t qdfaas:latest .

函数即服务,一步到位!

查看镜像是不是刚刚构建的:

 nerdctl --namespace openfaas-fn image ls

函数即服务,一步到位!

部署函数

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

 faas-cli deploy -f qdfaas.yml

函数即服务,一步到位!

此时登录管理页面,可以看到新增的函数,也可以在页面上验证功能调用是否正常

函数即服务,一步到位!

最后

如果喜欢使用OpenFaas的读者比较多的话,博主会抽时间写一篇如何利用OpenFaaS函数生成封面图的文章,感谢大家的支持!

-> 加入科技玩家交流群组:点击加入 注意:
1.文中二维码和链接可能带有邀请性质,请各位玩家自行抉择。
2.请勿通过链接填写qq号与密码、银行卡号与密码等个人隐私信息。
3.禁止纯拉人头,拉app注册等信息,发现必小黑屋。
4.同一种信息仅发一次,多发会被删除。
5.文章中源码或APP等,无法保证其绝对安全,需自行辨别。
6.文章关联方不想展示也可以微信站长“socutesheep”删除。
本文由 @星橙 发布。如若转载,请注明出处: 科技玩家 » 函数即服务,一步到位!

给TA买糖
共{{data.count}}人
人已买糖
教程玩家投稿

cookie获取通用(京东,美团,饿了么等等)(电脑版)(ck登录网页)

2022-11-15 17:11:31

教程玩家投稿

华为悦盒EC6108V9C刷机

2022-11-15 17:55:29

30 条回复 A文章作者 M管理员
贴心提醒
请认真对待作者付出,勿发表无意义言论,触发过滤规则的评论将无法提交,包含敏感词的评论会自动变成待审核状态哦。
  1. Carol

    厉害了!内容不错,来顶顶帖!?

  2. slimei

    感谢分享,让我好好学习一下

  3. Carol

    支持,感觉挺不错的??

  4. Carol

    mark一手!不错!

  5. 84896150

    真棒,感谢分享!

  6. slimei

    辛苦大佬分享了,我先学习一下

  7. 七年

    辛苦大佬分享了,我先学习一下

  8. 84896150

    厉害,有空学习一下

  9. 84896150

    感谢分享,插眼学习

  10. 七年

    瞅瞅瞅瞅,mark一手

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索