Azure Arc で有効になっている AKS で OpenFaaS を使用する
適用対象: Azure Local 22H2 上の AKS、Windows Server 上の AKS
OpenFaaS は、コンテナーを使用してサーバーレス関数を構築するためのフレームワークです。 オープンソースプロジェクトとして、コミュニティ内で大規模な導入を獲得しました。 この記事では、Azure Arc によって有効になっている AKS で実行されている Kubernetes クラスターに OpenFaas をインストールして使用する方法について説明します。
前提条件
この記事の手順を完了するには、次の要件があることを確認します。
- Kubernetesの基本的な理解。
- Kubernetes クラスター少なくとも 1 つの Linux ワーカー ノードが稼働しています。
- ローカル
kubectl
環境は、クラスターを指すよう構成されています。 Get-AksHciCredential PowerShell コマンドを使用すると、kubectl
を使用してご自身のクラスターにアクセスできます。 - Helm v3 コマンド ラインと前提条件がインストールされています。
- Azure CLI を使用して、PowerShell よりも Azure CLI を使用する場合は、コマンドを実行できます。
- Git コマンドライン ツールがシステムにインストールされます。
OpenFaaS
CLI がインストールされています。 インストール オプションについては、OpenFaaS CLI のドキュメントを参照してください。
重要
Helm は Linux ノードで実行するものです。 クラスターに Windows Server ノードがある場合は、Helm ポッドが Linux ノードでのみ実行されるようにスケジュールされていることを確認する必要があります。 また、インストールする Helm グラフが正しいノードで実行されるようにスケジュールされていることも確認する必要があります。 この記事のコマンドでは、 ノード セレクターを使用して ポッドが適切なノードにスケジュールされていることを確認しますが、すべての Helm グラフでノード セレクターが公開されるわけではありません。 クラスターでは、 taints などの他のオプションを使用することもできます。
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 用の 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 アドレスがサービスに割り当てられるまで、1 分かかる場合があります。
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 システムをテストするには、この例で http://192.168.0.152:8080
ポート 8080 の外部 IP アドレスを参照します。 サインインするように求められます。 パスワードを取得するには、「 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 関数を選択し、 Deploy をクリックします。
curl
を使用して関数を呼び出します。 次の例の IP アドレスを、OpenFaaS ゲートウェイのアドレスに置き換えます。
curl -X POST http://192.168.0.152:8080/function/figlet -d "Hello Azure"
出力:
_ _ _ _ _
| | | | ___| | | ___ / \ _____ _ _ __ ___
| |_| |/ _ \ | |/ _ \ / _ \ |_ / | | | '__/ _ \
| _ | __/ | | (_) | / ___ \ / /| |_| | | | __/
|_| |_|\___|_|_|\___/ /_/ \_\/___|\__,_|_| \___|
リソースをクリーンアップする
Helm グラフをデプロイすると、多数の Kubernetes リソースが作成されます。 これらのリソースには、ポッド、デプロイ、およびサービスが含まれます。 これらのリソースをクリーンアップするには、 helm uninstall
コマンドを使用し、前の helm list
コマンドで見つかったリリース名を指定します。
helm uninstall openfaas
次の例は、 openfaas という名前のリリースがアンインストールされたことを示しています。
release "openfaas" uninstalled
次のステップ
OpenFaaS ワークショップを使用すると、独自の GitHub ボットを作成する方法、シークレットの使用、メトリックの表示、自動スケーリングなどのトピックを扱う一連のハンズオン ラボを通して引き続き学習できます。