Linux中國

藉助 minikube 上手 OpenFaaS

本文將介紹如何藉助 minikube 在 Kubernetes 1.8 上搭建 OpenFaaS(讓 Serverless Function 變得更簡單)。minikube 是一個 Kubernetes 分發版,藉助它,你可以在筆記本電腦上運行 Kubernetes 集群,minikube 支持 Mac 和 Linux 操作系統,但是在 MacOS 上使用得更多一些。

本文基於我們最新的部署手冊 Kubernetes 官方部署指南

安裝部署 Minikube

1、 安裝 xhyve driverVirtualBox ,然後在上面安裝 Linux 虛擬機以部署 minikube 。根據我的經驗,VirtualBox 更穩定一些。

2、 參照官方文檔 安裝 minikube 。

3、 使用 brewcurl -sL cli.openfaas.com | sudo sh 安裝 faas-cli

4、 通過 brew install kubernetes-helm 安裝 helm 命令行。

5、 運行 minikube :minikube start

Docker 船長小貼士:Mac 和 Windows 版本的 Docker 已經集成了對 Kubernetes 的支持。現在我們使用 Kubernetes 的時候,已經不需要再安裝額外的軟體了。

在 minikube 上面部署 OpenFaaS

1、 為 Helm 的伺服器組件 tiller 新建服務賬號:

kubectl -n kube-system create sa tiller 
 && kubectl create clusterrolebinding tiller 
 --clusterrole cluster-admin 
 --serviceaccount=kube-system:tiller

2、 安裝 Helm 的服務端組件 tiller:

helm init --skip-refresh --upgrade --service-account tiller

3、 克隆 Kubernetes 的 OpenFaaS 驅動程序 faas-netes:

git clone https://github.com/openfaas/faas-netes && cd faas-netes

4、 Minikube 沒有配置 RBAC,這裡我們需要把 RBAC 關閉:

helm upgrade --install --debug --reset-values --set async=false --set rbac=false openfaas openfaas/

(LCTT 譯註:RBAC(Role-Based access control)基於角色的訪問許可權控制,在計算機許可權管理中較為常用,詳情請參考以下鏈接:https://en.wikipedia.org/wiki/Role-based_access_control

現在,你可以看到 OpenFaaS pod 已經在你的 minikube 集群上運行起來了。輸入 kubectl get pods 以查看 OpenFaaS pod:

NAME                            READY     STATUS    RESTARTS   AGE
alertmanager-6dbdcddfc4-fjmrf   1/1       Running   0          1m
faas-netesd-7b5b7d9d4-h9ftx     1/1       Running   0          1m
gateway-965d6676d-7xcv9         1/1       Running   0          1m
prometheus-64f9844488-t2mvn     1/1       Running   0          1m

30,000ft:

該 API 網關包含了一個 用於測試功能的最小化 UI,同時開放了用於功能管理的 RESTful API 。 faas-netesd 守護進程是一種 Kubernetes 控制器,用來連接 Kubernetes API 伺服器來管理服務、部署和密碼。

Prometheus 和 AlertManager 進程協同工作,實現 OpenFaaS Function 的彈性縮放,以滿足業務需求。通過 Prometheus 指標我們可以查看系統的整體運行狀態,還可以用來開發功能強悍的儀錶盤。

Prometheus 儀錶盤示例:

構建/遷移/運行

和很多其他的 FaaS 項目不同,OpenFaaS 使用 Docker 鏡像格式來進行 Function 的創建和版本控制,這意味著可以在生產環境中使用 OpenFaaS 實現以下目標:

  • 漏洞掃描(LCTT 譯註:此處我覺得應該理解為更快地實現漏洞補丁)
  • 持續集成/持續開發
  • 滾動更新

你也可以在現有的生產環境集群中利用空閑資源部署 OpenFaaS。其核心服務組件內存佔用大概在 10-30MB 。

OpenFaaS 一個關鍵的優勢在於,它可以使用容器編排平台的 API ,這樣可以和 Kubernetes 以及 Docker Swarm 進行本地集成。同時,由於使用 Docker 存儲庫 registry 進行 Function 的版本控制,所以可以按需擴展 Function,而沒有按需構建 Function 的框架的額外的延時。

新建 Function

faas-cli new --lang python hello

以上命令創建文件 hello.yml 以及文件夾 handler,文件夾有兩個文件 handler.pyrequirements.txt 可用於你可能需要的 pip 模塊。你可以隨時編輯這些文件和文件夾,不需要擔心如何維護 Dockerfile —— 我們為你通過以下方式維護:

  • 分級創建
  • 非 root 用戶
  • 以官方的 Docker Alpine Linux 版本為基礎進行鏡像構建 (可替換)

構建你的 Function

先在本地創建 Function,然後推送到 Docker 存儲庫。 我們這裡使用 Docker Hub,打開文件 hello.yml 然後輸入你的賬號名:

provider:
  name: faas
  gateway: http://localhost:8080
functions:
  hello:
    lang: python
    handler: ./hello
    image: alexellis2/hello

現在,發起構建。你的本地系統上需要安裝 Docker 。

faas-cli build -f hello.yml

把封裝好 Function 的 Docker 鏡像版本推送到 Docker Hub。如果還沒有登錄 Docker hub ,繼續前需要先輸入命令 docker login

faas-cli push -f hello.yml

當系統中有多個 Function 的時候,可以使用 --parallel=N 來調用多核並行處理構建或推送任務。該命令也支持這些選項: --no-cache--squash

部署及測試 Function

現在,可以部署、列出、調用 Function 了。每次調用 Function 時,可以通過 Prometheus 收集指標值。

$ export gw=http://$(minikube ip):31112
$ faas-cli deploy -f hello.yml --gateway $gw
Deploying: hello.
No existing function to remove
Deployed.
URL: http://192.168.99.100:31112/function/hello

上面給到的是部署時調用 Function 的標準方法,你也可以使用下面的命令:

$ echo test | faas-cli invoke hello --gateway $gw

現在可以通過以下命令列出部署好的 Function,你將看到調用計數器數值增加。

$ faas-cli list --gateway $gw
Function                       Invocations     Replicas
hello                          1               1

提示:這條命令也可以加上 --verbose 選項獲得更詳細的信息。

由於我們是在遠端集群(Linux 虛擬機)上面運行 OpenFaaS,命令裡面加上一條 --gateway 用來覆蓋環境變數。 這個選項同樣適用於雲平台上的遠程主機。除了加上這條選項以外,還可以通過編輯 .yml 文件裡面的 gateway 值來達到同樣的效果。

遷移到 minikube 以外的環境

一旦你在熟悉了在 minikube 上運行 OpenFaaS ,就可以在任意 Linux 主機上搭建 Kubernetes 集群來部署 OpenFaaS 了。

繼續學習

我們的 Github 上面有很多手冊和博文,可以帶你輕鬆「上車」,把我們的頁面保存成書籤吧:openfaas/faas

2017 哥本哈根 Dockercon Moby 峰會上,我做了關於 Serverless 和 OpenFaaS 的概述演講,這裡我把視頻放上來,視頻不長,大概 15 分鐘左右。

最後,別忘了關注 OpenFaaS on Twitter 這裡有最潮的新聞、最酷的技術和 Demo 展示。

via: https://medium.com/@alexellisuk/getting-started-with-openfaas-on-minikube-634502c7acdf

作者:Alex Ellis 譯者:mandeler 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國