樹莓派上安裝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
輸入賬號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提供的例項。
歡迎關注Bboysoul的部落格www.bboysoul.co