チュートリアル: Azure Container Apps で Azure Cache for Redis サービスに接続する (プレビュー)
Azure Container Apps を使用すると、コンテナー アプリと同じ環境で実行されている、アプリのサポート サービスに接続できます。
開発時に、アプリケーションで迅速に開発サービスを作成し、接続することができます。 これらのサービスは簡単に作成でき、非運用環境向けに設計された開発グレードのサービスです。
運用環境に移行すると、アプリケーションを運用環境グレードのマネージド サービスに接続できるようになります。
このチュートリアルでは、開発と運用の両方のグレードの Azure Cache for Redis サービスをコンテナー アプリに接続する方法を示します。
このチュートリアルで学習する内容は次のとおりです。
- 新しい Redis 開発サービスを作成する
- コンテナー アプリを Redis 開発サービスに接続する
- アプリケーションからサービスを切断する
- メモリ内キャッシュを実行しているサービスを検査する
前提条件
リソース | 説明 |
---|---|
Azure アカウント | アクティブなサブスクリプションが必要です。 持っていない場合は、無料で作成できます。 |
Azure CLI | ご利用のマシンに Azure CLI がまだインストールされていない場合はインストールします。 |
Azure リソース グループ | my-services-resource-group という名前のリソース グループを米国東部リージョンに作成します。 |
Azure Cache for Redis | my-services-resource-group に Azure Cache for Redis のインスタンスを作成します。 |
設定
Azure CLI にサインインします。
az login
Container Apps CLI 拡張機能をアップグレードします。
az extension add --name containerapp --upgrade
Microsoft.App
名前空間を登録します。az provider register --namespace Microsoft.App
Microsoft.ServiceLinker
名前空間を登録します。az provider register --namespace Microsoft.ServiceLinker
リソース グループの変数を設定します。
RESOURCE_GROUP="my-services-resource-group"
Azure Cache for Redis の DNS 名の変数を作成します。
Azure Cache for Redis インスタンスの一覧を表示するには、次のコマンドを実行します。
az redis list --resource-group "$RESOURCE_GROUP" --query "[].name" -o table
環境名を格納する変数を作成します。
<MY_ENVIRONMENT_NAME>
は、実際のコンテナー アプリ環境の名前に置き換えます。ENVIRONMENT=<MY_ENVIRONMENT_NAME>
場所の変数を設定します。
LOCATION="eastus"
環境の新規作成
az containerapp env create \ --location "$LOCATION" \ --resource-group "$RESOURCE_GROUP" \ --name "$ENVIRONMENT"
CLI の構成と、環境の作成が完了したので、これでアプリケーションと開発サービスを作成できるようになりました。
開発サービスを作成する
このサンプル アプリケーションは、メモリ内または Redis キャッシュ内の一連の文字列を管理します。
Redis 開発サービスを作成し、myredis
という名前を付けます。
az containerapp add-on redis create \
--name myredis \
--resource-group "$RESOURCE_GROUP" \
--environment "$ENVIRONMENT"
コンテナー アプリの作成
次に、インターネットにアクセスできるコンテナー アプリを作成します。
次に、新しいコンテナー アプリを作成して Redis サービスにバインドします。
az containerapp create \ --name myapp \ --image mcr.microsoft.com/k8se/samples/sample-service-redis:latest \ --ingress external \ --target-port 8080 \ --bind myredis \ --environment "$ENVIRONMENT" \ --resource-group "$RESOURCE_GROUP" \ --query properties.configuration.ingress.fqdn
このコマンドは、完全修飾ドメイン名 (FQDN) を返します。 このチュートリアルを通してアプリケーションの動作を検査できるよう、この場所を Web ブラウザーに貼り付けておきます。
containerapp create
コマンドは、--bind
オプションを使用して、コンテナー アプリと Redis 開発サービスの間にリンクを作成します。バインド要求は、資格情報や接続文字列などの接続情報を収集し、これらを環境変数としてアプリケーションに挿入します。 これらの値は、サービスへの接続を作成するためのアプリケーション コードで使用できるようになりました。
この場合、アプリケーションでは次の環境変数を使用できます。
REDIS_ENDPOINT=myredis:6379 REDIS_HOST=myredis REDIS_PASSWORD=... REDIS_PORT=6379
ブラウザーを使用してアプリケーションにアクセスする場合は、Redis データベースに文字列を追加したり、Redis データベースから文字列を削除したりできます。 アプリケーション データは Redis キャッシュに格納されるため、ゼロスケール後にアプリケーションを再起動した後でもデータを使用できます。
バインディングは、アプリケーションから削除することもできます。
Redis 開発サービスのバインドを解除します。
コンテナー アプリからバインドを削除するには、
--unbind
オプションを使用します。az containerapp update \ --name myapp \ --unbind myredis \ --resource-group "$RESOURCE_GROUP"
アプリケーションは、環境変数が定義されていない場合、テキスト文字列がメモリに保存されるように記述されています。
この状態では、アプリケーションがゼロスケールされると、データは失われます。
この変更を確認するには、Web ブラウザーに戻り、Web アプリケーションを更新します。 すると、データがメモリ内に格納されていることを示す構成情報が表示されます。
これで、アプリケーションを Redis サービスに再バインドして、以前に保存したデータを確認できるようになりました。
Redis 開発サービスを再バインドします。
az containerapp update \ --name myapp \ --bind myredis \ --resource-group "$RESOURCE_GROUP"
サービスが再接続されているため、Web アプリケーションを更新すると、Redis に格納されているデータを確認できます。
マネージド サービスへの接続
アプリケーションを運用環境に移行する準備ができたら、開発サービスにバインドされているアプリケーションをマネージド サービスにバインドできます。
次の手順では、アプリケーションを Azure Cache for Redis の既存のインスタンスにバインドします。
DNS 名の変数を作成します。
その際は、必ず
<YOUR_DNS_NAME>
を実際の Azure Cache for Redis のインスタンスの DNS 名に置き換えてください。AZURE_REDIS_DNS_NAME=<YOUR_DNS_NAME>
Azure Cache for Redis にバインドします。
az containerapp update \ --name myapp \ --unbind myredis \ --bind "$AZURE_REDIS_DNS_NAME" \ --resource-group "$RESOURCE_GROUP"
このコマンドは、開発環境のバインドの削除と、運用グレードのマネージド サービスへのバインドの確立を同時に行います。
お使いのブラウザーに戻り、ページを更新します。
コンソールは、次の例のような値を出力します。
AZURE_REDIS_DATABASE=0 AZURE_REDIS_HOST=azureRedis.redis.cache.windows.net AZURE_REDIS_PASSWORD=il6HI... AZURE_REDIS_PORT=6380 AZURE_REDIS_SSL=true
Note
アドオンとマネージド サービスに使用される環境変数の名前は若干異なります。
このチュートリアルで使用されるサンプル コードを確認するには、https://github.com/Azure-Samples/sample-service-redis を参照してください。
これで、新しい文字列を追加すると、値は開発サービスではなくインスタンス Azure Cache for Redis に格納されるようになりました。
リソースをクリーンアップする
このチュートリアルで作成したリソースを引き続き使用する予定がない場合は、アプリケーションと Redis サービスを削除できます。
アプリケーションとサービスは独立しています。 この独立性は、サービスを環境内の任意の数のアプリケーションに接続でき、すべてのアプリケーションが切断されても、明示的に削除されるまで存在することを意味します。
次のコマンドを実行して、コンテナー アプリと開発サービスを削除します。
az containerapp delete --name myapp
az containerapp add-on redis delete --name myredis
または、リソース グループを削除して、コンテナー アプリとすべてのサービスを削除することもできます。
az group delete \
--resource-group "$RESOURCE_GROUP"