適用於:在 Windows Server 上運行的 AKS
OpenFaaS 是使用容器建置無伺服器函式的架構。 作為一個 開放原始碼 專案,它在社群中獲得了大規模的採用。 本文說明在 Windows Server 上的 AKS 上執行的 Kubernetes 叢集上安裝及使用 OpenFaas。
必要條件
若要完成本文中的步驟,請確定您有下列需求:
- 對 Kubernetes 的基本瞭解。
- 具有至少一個正在運行的 Linux 工作節點的 Kubernetes 叢集。
- 您的本機
kubectl
環境已設定為指向您的叢集。 您可以使用 Get-AksHciCredential PowerShell 命令,使用kubectl
存取叢集。 - Helm v3 命令行和必要條件已安裝。
- 如果您想要將 Azure CLI 設為 PowerShell,您可以使用 Azure CLI 來執行命令。
- Git 命令行工具會安裝在您的系統上。
- CLI
OpenFaaS
已安裝。 如需安裝選項,請參閱 OpenFaaS CLI 文件。
重要
Helm 的目的是要在 Linux 節點上執行。 如果您的叢集有 Windows Server 節點,您必須確定 Helm Pod 已排定只在 Linux 節點上執行。 您也必須確定您安裝的任何 Helm 圖表都已排定在正確的節點上執行。 本文中的命令會使用 節點選取器 來確保 Pod 被排程到正確的節點,但並非所有 Helm 圖表都支援節點選取器。 您也可以在叢集上使用其他選項,例如 污點。
新增 OpenFaaS Helm 圖表存放庫
使用您的 kubeconfig 檔案時,請開啟主控台以啟動部署程式。 如果您在 Windows 上執行,下載並執行 Git Bash 是遵循的最簡單方式。 從這裡開始,OpenFaaS 會維護自己的 Helm 圖表,以隨時掌握所有最新變更:
helm repo add openfaas https://openfaas.github.io/faas-netes/
helm repo update
部署 OpenFaaS
最佳做法是,OpenFaaS 和 OpenFaaS 函式應該儲存在自己的 Kubernetes 命名空間中。
建立 OpenFaaS 系統和函式的命名空間:
kubectl apply -f https://raw.githubusercontent.com/openfaas/faas-netes/master/namespaces.yml
產生 OpenFaaS UI 入口網站和 REST API 的密碼:
# generate a random password
PASSWORD=$(head -c 12 /dev/urandom | shasum| cut -d' ' -f1)
kubectl -n openfaas create secret generic basic-auth \
--from-literal=basic-auth-user=admin \
--from-literal=basic-auth-password="$PASSWORD"
您可以使用 取得秘密 echo $PASSWORD
的值。
Helm 圖表會使用您在這裡建立的密碼,在 OpenFaaS 閘道上啟用基本身份驗證,而 OpenFaaS 閘道會透過負載平衡器向外部公開。
OpenFaaS 的 Helm 圖表包含在複製的存放庫中。 使用此圖表在 Kubernetes 叢集上部署 OpenFaaS:
helm upgrade openfaas --install openfaas/openfaas \
--namespace openfaas \
--set basic_auth=true \
--set functionNamespace=openfaas-fn \
--set serviceType=LoadBalancer
輸出:
NAME: openfaas
LAST DEPLOYED: Fri May 14 18:35:47 2021
NAMESPACE: openfaas
STATUS: deployed
REVISION: 1
TEST SUITE: None
若要確認 OpenFaas 已啟動,請執行下列命令:
kubectl --namespace=openfaas get deployments -l "release=openfaas, app=openfaas"
建立了用於存取 OpenFaaS 閘道的公用 IP 位址。 若要擷取此IP位址,請使用 kubectl get service 命令。 將IP位址指派給服務可能需要一分鐘的時間:
kubectl get service -l component=gateway --namespace openfaas
輸出:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
gateway ClusterIP 10.110.205.41 <none> 8080/TCP 7m
gateway-external LoadBalancer 10.107.51.110 192.168.0.152 8080:32029/TCP 7m
若要測試 OpenFaaS 系統,請流覽至埠 8080 上的外部 IP 位址- http://192.168.0.152:8080
在此範例中。 系統會提示您登入。 若要擷取密碼, 請輸入 echo $PASSWORD
。
設定 $OPENFAAS_URL
為在此範例中找到的外部IP。
使用您的主控台登入。 如果您在 Windows 上的 GitBash 中執行命令,您可能需要使用 faas-cli
,而不是 ./faas-cli
在下列命令中使用:
export OPENFAAS_URL=http://192.168.0.152:8080
echo -n $PASSWORD | ./faas-cli login -g $OPENFAAS_URL -u admin --password-stdin
建立第一個函式
現在 OpenFaaS 運作正常,請使用 OpenFaaS 入口網站建立函式。
選取 [ 部署新函式],然後搜尋 Figlet。 選取 Figlet 函式,然後按兩下 [ 部署]。
使用 curl
來叫用函式。 以 OpenFaaS 閘道的位址取代下列範例中的IP位址。
curl -X POST http://192.168.0.152:8080/function/figlet -d "Hello Azure"
輸出:
_ _ _ _ _
| | | | ___| | | ___ / \ _____ _ _ __ ___
| |_| |/ _ \ | |/ _ \ / _ \ |_ / | | | '__/ _ \
| _ | __/ | | (_) | / ___ \ / /| |_| | | | __/
|_| |_|\___|_|_|\___/ /_/ \_\/___|\__,_|_| \___|
清除資源
部署 Helm 圖表時會建立許多 Kubernetes 資源。 這些資源包含 Pod、部署和服務。 若要清除這些資源,請使用 helm uninstall
命令,並指定您的發行名稱,如上一個 helm list
命令所示:
helm uninstall openfaas
下列範例顯示已卸載名為 openfaas 的版本:
release "openfaas" uninstalled
下一步
您可以透過一系列實作課程繼續學習 OpenFaaS 的內容,這些課程涵蓋如何建立自己的 GitHub 機器人、存取機密資訊、查看指標和自動調整等主題。