このチュートリアルでは、この サンプル を使用して、Azure Cache for Redis または Azure Managed Redis インスタンスに接続します。
[前提条件]
- Azure サブスクリプション。 Azure サブスクリプションをお持ちでない場合は、無料アカウントを作成してください。
- Azure Kubernetes Service クラスター - クラスター作成の詳細については、「クイック スタート: Azure portal を使用して Azure Kubernetes Service (AKS) クラスターをデプロイする」を参照してください。
- Azure Cache for Redis インスタンスへの接続に使用するユーザー割り当てマネージド ID。
Von Bedeutung
このチュートリアルでは、コンテナー、ポッド、サービスなどの Kubernetes の基本的な概念について理解していることを前提としています。
Azure Cache Redis インスタンスを設定する
Azure portal または任意の CLI ツールを使用して、新しい Azure Cache for Redis インスタンスを作成します。 クイックスタート ガイドを使用して作業を開始します。 または、Azure Managed Redis インスタンスを作成することもできます。
このチュートリアルでは、Standard C1 キャッシュを使用します。
キャッシュを作成する手順を完了します。
Redis キャッシュ インスタンスが作成されたら、[認証] タブに移動します。Redis キャッシュ インスタンスへの接続に使用するユーザー割り当てマネージド ID を選択し、[保存] を選択します。
または、[リソース] メニューの [データ アクセス構成] に移動して、ユーザー割り当てマネージド ID を使用して新しい Redis ユーザーを作成し、キャッシュに接続することもできます。
ポータルの Redis ユーザーのユーザー名を書き留めます。 このユーザー名は、AKS ワークロードで使用します。
サンプルをローカルで実行する
このサンプルをローカルで実行するには、Redis インスタンス上でユーザー プリンシパルを Redis ユーザーとして構成します。 このコード サンプルでは、DefaultAzureCredential を介してユーザー プリンシパルを使用して、Redis インスタンスに接続します。
AKS クラスターを構成する
AKS クラスターのワークロード ID を構成するには、次の手順に従います。
その後、次の手順を完了します。
- OIDC 発行者とワークロード ID を有効にします
- マネージド ID を既に作成済みの場合は、ユーザー割り当てマネージド ID を作成する手順をスキップします。 新しいマネージド ID を作成する場合は、マネージド ID 用に新しい Redis ユーザーを作成し、適切なデータ アクセス許可を割り当ててください。
- ユーザー割り当てマネージド ID のクライアント ID で注釈が付けられた Kubernetes Service アカウントを作成します
- AKS クラスターのフェデレーション ID 資格情報を作成します。
Azure Cache for Redis に接続するワークロードを構成する
次に、AKS クラスターを構成した後に Azure Cache for Redis に接続するように AKS ワークロードを設定します。
サンプル アプリのコードをダウンロードします。
az acr build コマンドを使用して、Docker イメージをビルドして Azure Container Registry にプッシュします。
az acr build --image sample/connect-from-aks-sample:1.0 --registry yourcontainerregistry --file Dockerfile .次のコマンドを使用して、コンテナー レジストリを AKS クラスターにアタッチします。
az aks update --name clustername --resource-group mygroup --attach-acr youracrname
ワークロードを展開する
このセクションでは、まず Kubernetes CLI をインストールしてから、AKS クラスターに接続します。
Kubernetes CLI のインストール
Kubernetes CLI の kubectlを使用して、ローカル コンピューターから Kubernetes クラスターに接続します。 ローカルで実行している場合は、次のコマンドを使用して kubectl をインストールできます。
az aks install-cli
Azure Cloud Shell を使用する場合、kubectl は既にインストールされているため、この手順はスキップできます。
AKS クラスターに接続する
ポータルを使用して、AKS クラスターのリソース グループとクラスター名をコピーします。 AKS クラスターに接続するように kubectl を構成するには、リソース グループとクラスター名を指定して次のコマンドを使用します。
az aks get-credentials --resource-group myResourceGroup --name myClusterName次のコマンドを実行して、クラスターに接続できることを確認します。
kubectl get nodesクラスター ノードの一覧を示す同様の出力が表示されます。
NAME STATUS ROLES AGE VERSION aks-agentpool-21274953-vmss000001 Ready agent 1d v1.29.7 aks-agentpool-21274953-vmss000003 Ready agent 1d v1.29.7 aks-agentpool-21274953-vmss000006 Ready agent 1d v1.29.7
ワークロードを実行する
次のコードは、ワークロードの実行に使用するポッド仕様ファイルについて説明しています。 ポッドには azure.workloadidentity/use: "true" というラベルが付いており、AKS ワークロード ID で必要になる serviceAccountName の注釈が付いていることに注意してください。 アクセス キー認証を使用する場合は、AUTHENTICATION_TYPE、REDIS_HOSTNAME、REDIS_ACCESSKEY、REDIS_PORT の各環境変数の値を置き換えます。 Azure Managed Redis インスタンスの場合は、REDIS_PORT の値を 10000 に設定します。
apiVersion: v1 kind: Pod metadata: name: entrademo-pod labels: azure.workload.identity/use: "true" # Required. Only pods with this label can use workload identity. spec: serviceAccountName: workload-identity-sa containers: - name: entrademo-container image: youracr.azurecr.io/connect-from-aks-sample:1.0 imagePullPolicy: Always command: ["dotnet", "ConnectFromAKS.dll"] resources: limits: memory: "256Mi" cpu: "500m" requests: memory: "128Mi" cpu: "250m" env: - name: AUTHENTICATION_TYPE value: "MANAGED_IDENTITY" # change to ACCESS_KEY to authenticate using access key - name: REDIS_HOSTNAME value: "your redis hostname" - name: REDIS_ACCESSKEY value: "your access key" - name: REDIS_PORT value: "6380" # change to 10000 for Azure Managed Redis restartPolicy: Neverこのファイルを podspec.yaml として保存し、次のコマンドを実行して AKS クラスターに適用します。
kubectl apply -f podspec.yamlポッドが作成されたことを示す応答が表示されます。
pod/entrademo-pod createdアプリケーションをテストするには、次のコマンドを実行してポッドが実行されているかどうかをチェックします。
kubectl get pods次のように表示されれば、ポッドは正常に実行されています。
NAME READY STATUS RESTARTS AGE entrademo-pod 0/1 Completed 0 42sこのチュートリアルはコンソール アプリであるため、このコマンドを使用して、ポッドのログを確認し、想定どおりに実行されたことを確認する必要があります。
kubectl logs entrademo-appユーザー割り当てマネージド ID を使用してポッドが Redis インスタンスに正常に接続されたことを示す次のログが表示されます。
Connecting with managed identity.. Retrieved value from Redis: Hello, Redis! Success! Previous value: Hello, Redis!
クラスターをクリーンアップする
クラスターをクリーンアップするには、次のコマンドを実行します。
kubectl delete pod entrademo-pod
リソースをクリーンアップする
この記事で作成したリソースを引き続き使用する場合は、リソース グループを保持します。
それ以外の場合、リソースを使い終わったら、課金されないように、作成した Azure リソース グループを削除できます。
Von Bedeutung
リソース グループを削除すると、元に戻すことができません。 リソース グループを削除すると、そのリソース グループ内のすべてのリソースは完全に削除されます。 間違ったリソース グループやリソースをうっかり削除しないようにしてください。 リソースを既存のリソース グループ内に作成し、そのリソース グループ内に保持したいリソースが含まれている場合は、リソース グループを削除するのではなく、各リソースを個別に削除できます。
リソース グループを削除するには
Azure portal にサインインし、 [リソース グループ] を選択します。
削除するリソース グループを選択します。
多数のリソース グループがある場合は、[任意のフィールドのフィルター...] ボックスを使用し、この記事用に作成したリソース グループの名前を入力します。 結果リストでリソース グループを選びます。
[リソース グループの削除] を選択します。
リソース グループの削除の確認を求めるメッセージが表示されます。 確認のためにリソース グループの名前を入力し、[削除] を選択します。
しばらくすると、リソース グループとそのリソースのすべてが削除されます。