1. 程式人生 > >樹莓派上安裝openfaas和初體驗

樹莓派上安裝openfaas和初體驗

什麼是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

image

輸入賬號admin和剛才的密碼登入

image

之後我們點選deploy new function來嘗試部署一個function,比如我部署的是nodeinfo這個function,接著點選nodeinfo這個function,我們可以看到下面這些資訊

image

在這裡你可以修改這個function的副本,可以看到這個function的執行次數,還可以點選url去訪問他,點選invoke呼叫這個function

image

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提供的例項。

歡迎關注Bboysoul的部落格www.bboysoul.co