次の方法で共有


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 の UI

$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 をクリックします。

OpenFAAS の [Deploy A New Function]\(新しい関数のデプロイ\) ダイアログ ボックスを示すスクリーンショット。検索行に

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 ボットを作成する方法、シークレットの使用、メトリックの表示、自動スケーリングなどのトピックを扱う一連のハンズオン ラボを通して引き続き学習できます。