什么是openfaas
openfaas 是一款开源的faas框架,什么是faas,faas是Function as a Service的缩写可以理解为功能服务化,FaaS提供了一种比微服务更加服务碎片化的软件架构范式,可以让开发更关注代码开发逻辑,而不需要关注代码架构。openfaas可以在k8s上运行也可以在swarm集群上运行
实验环境
两个安装着raspbian的树莓派AB
安装docker容器
这个我就不再详细讲了,很简单,使用下面命令安装
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
两个树莓派都要安装
初始化swarm集群
两条命令
在树莓派A中启动集群
docker swarm init
之后把把树莓派B加入到树莓派A master节点中
docker swarm join --token SWMTKN-1-1vpekrn4tldy8b2b80qgni5ns8ggk3y3lsm022q6b63szhoohg-djfwtkhfb2ileh3fulqo8rgot 10.10.10.108:2377
接着在A节点中输入
docker node ls
如果有两个节点,说明集群初始化成功
安装openfaas
这个也很简单
首先在docker swarm master节点中执行
git clone https://github.com/openfaas/faas && \
cd faas && \
./deploy_stack.sh
执行完成之后就安装成功了
默认集群的账号是admin
密码在安装完成时候会有一串秘钥
如果你安装完成之后没注意这串秘钥也没有关系,使用下面的方式既可找回
docker exec -it func_faas-swarm.1.sapakfa1baiaf3pqwwrm6xakx /bin/sh
之后查看下面这个文件就可以了
cat /run/secrets/basic-auth-password
最后我们安装faas-cli,faas-cli是控制openfaas的一个cli工具,我们除了可以在openfaas提供的web界面上操作openfaas以外,还可以使用这个cli工具
curl -sL https://cli.openfaas.com | sudo sh
安装完成之后再命令行中输入faas
来验证是否安装成功
web 界面初体验
刚才说过了,我们可以使用openfaas提供的web界面来操作openfaas,在浏览器中输入你的swarm任何一个节点的ip加端口8080
输入账号admin和刚才的密码登录
之后我们点击deploy new function来尝试部署一个function,比如我部署的是nodeinfo这个function,接着点击nodeinfo这个function,我们可以看到下面这些信息
在这里你可以修改这个function的副本,可以看到这个function的执行次数,还可以点击url去访问他,点击invoke调用这个function
cli初体验
首先使用faas这个命令我们要登录到openfaas中
faas login --password 9e3c4697e48463fd215ed07203a0aa4fab2a834b58262c65a81b51d2d21a92d3
之后我们查看已经部署了的function
faas list
➜ ~ faas list
Function Invocations Replicas
youtube-dl 7 1
nodeinfo 2 1
nslookup 0 1
之后我们执行nodeinfo这个function
faas-cli invoke nodeinfo
这里会显示
➜ ~ faas-cli invoke nodeinfo
Reading from STDIN - hit (Control + D) to stop.
因为这个function我们不需要任何的参数,所以我们只需要输入Control + D就可以成功的执行这个function
Hostname: 870aa299570a
Platform: linux
Arch: arm
CPU count: 4
Uptime: 111863
或者我们执行下面的命令也可以达到相同的效果
echo "" | faas invoke nodeinfo
➜ ~ echo "" | faas invoke nodeinfo
Hostname: cc2d291d748c
Platform: linux
Arch: arm
CPU count: 4
Uptime: 149743
接着我们删除nodeinfo这个function
faas remove nodeinfo
创建这个function
faas store deploy NodeInfo -u https://raw.githubusercontent.com/openfaas/store/master/store-armhf.json
我解释下我为什么要这么写,因为我们是在树莓派下进行操作,所以我们所有的软件都要armhf架构的,如果你直接执行
faas store deploy NodeInfo
可能会下载到x86架构的镜像,所以我们要指定store的地址,而这个store是openfaas提供的实例。
欢迎关注我的博客www.bboy.app
Have Fun