この記事では、パブリック インターネットではなくプライベート リンクを使用して、Azure Front Door から Azure Container Apps に直接接続する方法について説明します。 このチュートリアルでは、Azure Container Apps ワークロード プロファイル環境と Azure Front Door を作成し、プライベート リンクを介して安全に接続します。 次に、コンテナー アプリと Azure Front Door の間の接続を確認します。
前提条件
アクティブなサブスクリプションが含まれる Azure アカウント。
- 持っていない場合は、無料で作成できます。
この機能は、ワークロード プロファイル環境でのみサポートされます。
Microsoft.Cdn
リソース プロバイダーがサブスクリプションに登録されていることを確認します。- まず、Azure portalにサインインしてください。
- サブスクリプション ページを参照し、 設定>リソース プロバイダーを選択します。
- プロバイダーの一覧から Microsoft.Cdn を選択します。
- 登録 を選択します。
コンテナー アプリを作成する
コンテナー アプリのデプロイに関連するサービスを整理するためのリソース グループを作成します。
上部の検索バーで「コンテナー アプリ」を検索します。
検索結果でコンテナー アプリを選択します。
[作成] ボタンを選択します。
[ コンテナー アプリの作成 ] ページの [ 基本 ] タブで、次の操作を行います。
設定 アクション サブスクリプション Azure のサブスクリプションを選択します。 リソースグループ [ 新しいリソース グループの作成 ] リンクを選択し、 my-container-apps を入力します。 コンテナー アプリ名 「my-container-app」と入力します。 デプロイ ソース [コンテナー イメージ] を選択します。 リージョン [米国中部] を選択します。 [ コンテナー アプリ環境の作成 ] フィールドで、[ 新しい環境の作成 ] リンクを選択します。
[ コンテナー アプリ環境の作成 ] ページの [ 基本 ] タブで、次の値を入力します。
設定 価値 環境名 「my-environment」と入力します。 ゾーン冗長性 [無効] を選択します [ネットワーク] タブを選択します。
[パブリック ネットワーク アクセス] を [無効] に設定します。パブリック インターネットからの着信トラフィックをすべてブロックします。
[Use your own virtual network] (自分の仮想ネットワークを使用する) を [いいえ] に設定します。
[プライベート エンドポイントを有効にする] を[いいえ] に設定したままにします。
を選択してを作成します。
[ コンテナー アプリの作成 ] ページで、[ コンテナー ] タブを選択します。
[クイックスタート イメージを使用する] を選択します。
コンテナー アプリをデプロイする
ページの下部にある [レビューと作成] を選択します。
エラーが見つからなかった場合は、 [作成] ボタンが有効になります。
エラーが発生した場合は、エラーが含まれているタブに赤い点が表示されます。 適切なタブに移動します。エラーを含むフィールドは赤で強調表示されます。 すべてのエラーを修正したら、 [確認と作成] をもう一度選択します。
を選択してを作成します。
"デプロイが進行中です" というメッセージを含むページが表示されます。 デプロイが正常に完了すると、"デプロイが完了しました" というメッセージが表示されます。
デプロイを検証する
[リソースに移動] を選択して、新しいコンテナー アプリを表示します。
アプリケーションを表示するには、 [アプリケーションの URL] の横にあるリンクを選択します。
コンテナー アプリ エンドポイントを参照すると、次のメッセージが表示されます。
The public network access on this managed environment is disabled. To connect to this managed environment, please use the Private Endpoint from inside your virtual network. To learn more https://aka.ms/PrivateEndpointTroubleshooting.
代わりに、Azure Front Door エンドポイントを使用してコンテナー アプリにアクセスします。
Azure Front Door プロファイルとエンドポイントを作成する
上部の検索バーで Front Door を検索します。
検索結果 で Front Door プロファイルと CDN プロファイル を選択します。
Azure Front Door と簡易作成を選択します。
[続行] を選択 して Front Door を作成 します。
[ Front Door プロファイルの作成 ] ページの [ 基本 ] タブで、次の操作を行います。
設定 アクション リソースグループ [my-container-apps] を選択します。 名前 my-afd-profile を入力します。 レベル [Premium] を選択します。 プライベート リンクは、Standard レベルの Azure Front Door の配信元ではサポートされていません。 エンドポイント名 my-afd-endpoint と入力します。 配信元の種類 [Container Apps] を選択します。 配信元のホスト名 コンテナー アプリのホスト名を入力します。 ホスト名は次の例のようになります: my-container-app.orangeplant-77e5875b.centralus.azurecontainerapps.io
。プライベート リンク サービスを有効にする この設定を有効にします。 リージョン (米国) 米国中部を選択します。 ターゲット サブリソース managedEnvironments を選択します。 要求メッセージ AFD プライベート リンク要求を入力します。 [Review + create](レビュー + 作成) を選択します。
を選択してを作成します。
デプロイが完了したら、[ リソースに移動] を選択します。
Front Door と CDN プロファイルの概要ページで、エンドポイントのホスト名を見つけます。 次の例のようになります。 このホスト名をメモしておきます。
my-afd-endpoint.<HASH>.b01.azurefd.net
プライベート エンドポイント接続要求を承認する
前に作成した my-environment という名前の環境の概要ページを参照します。
設定>ネットワークを展開します。
プライベート エンドポイント接続要求のリンクが表示されます。 たとえば、
1 private endpoint
のようにします。 このリンクを選択します。[ プライベート エンドポイント接続 ] ページで、各プライベート エンドポイント接続要求を
AFD Private Link Request
説明と共に承認します。注
Azure Front Door には、複数のプライベート エンドポイント接続要求が作成される可能性がある既知の問題があります。
Azure Front Door からコンテナー アプリにアクセスする
前に記録した Azure Front Door エンドポイントのホスト名を参照します。 クイックスタート コンテナー アプリ イメージの出力が表示されます。 グローバルデプロイのデプロイには数分かかる場合があるため、予想される出力が表示されない場合は、数分待ってから更新してください。
リソースをクリーンアップする
このアプリケーションを引き続き使用しない場合は、リソース グループを削除することで、コンテナー アプリと関連付けられているすべてのサービスを削除できます。
[概要] セクションで、my-container-apps リソース グループを選択します。
リソース グループ ページの [概要] の上部で [リソース グループの削除] ボタンを選択します。
["my-container-apps" を削除しますか?] 確認ダイアログにリソース グループ名「my-container-apps」を入力します 。
を選択して、を削除します。
リソース グループを削除するプロセスが完了するまでに数分かかる場合があります。
前提条件
アクティブなサブスクリプションが含まれる Azure アカウント。
- 持っていない場合は、無料で作成できます。
最新バージョンの Azure CLI を実行していることを確認するには、次のコマンドを実行します。
az upgrade
Azure CLI 用の Azure Container Apps 拡張機能の最新バージョン。 最新バージョンを実行していることを確認するには、次のコマンドを実行します。
az extension add --name containerapp --upgrade --allow-preview true
注
2024 年 5 月以降、Azure CLI 拡張機能では、既定でプレビュー機能が有効になりません。 Container Apps のプレビュー機能にアクセスするには、
--allow-preview true
を使用して Container Apps 拡張機能をインストールします。この機能は、ワークロード プロファイル環境でのみサポートされます。
この機能は、 サポートされているリージョンでのみ使用できます。
前提条件とセットアップの詳細については、「クイック スタート: containerapp up を使用して最初のコンテナー アプリをデプロイする」を参照してください。
環境変数の設定
以下の環境変数を設定します。
RESOURCE_GROUP="my-container-apps"
LOCATION="centralus"
ENVIRONMENT_NAME="my-environment"
CONTAINERAPP_NAME="my-container-app"
AFD_PROFILE="my-afd-profile"
AFD_ENDPOINT="my-afd-endpoint"
AFD_ORIGIN_GROUP="my-afd-origin-group"
AFD_ORIGIN="my-afd-origin"
AFD_ROUTE="my-afd-route"
Azure リソース グループの作成
コンテナー アプリのデプロイに関連するサービスを整理するためのリソース グループを作成します。
az group create \
--name $RESOURCE_GROUP \
--___location $LOCATION
環境の作成
Container Apps 環境を作成します。
az containerapp env create \ --name $ENVIRONMENT_NAME \ --resource-group $RESOURCE_GROUP \ --___location $LOCATION
環境 ID を取得します。 この ID を使用して環境を構成します。
ENVIRONMENT_ID=$(az containerapp env show \ --resource-group $RESOURCE_GROUP \ --name $ENVIRONMENT_NAME \ --query "id" \ --output tsv)
環境のパブリック ネットワーク アクセスを無効にします。
az containerapp env update \ --id $ENVIRONMENT_ID \ --public-network-access Disabled
コンテナー アプリをデプロイする
次のコマンドを実行して、環境内にコンテナー アプリをデプロイします。
az containerapp up \ --name $CONTAINERAPP_NAME \ --resource-group $RESOURCE_GROUP \ --___location $LOCATION \ --environment $ENVIRONMENT_NAME \ --image mcr.microsoft.com/k8se/quickstart:latest \ --target-port 80 \ --ingress external \ --query properties.configuration.ingress.fqdn
コンテナー アプリのエンドポイントを取得します。
ACA_ENDPOINT=$(az containerapp show \ --name $CONTAINERAPP_NAME \ --resource-group $RESOURCE_GROUP \ --query properties.configuration.ingress.fqdn \ --output tsv)
コンテナー アプリ エンドポイントを参照すると、コンテナー アプリ環境でパブリック アクセスが無効になっているため、
ERR_CONNECTION_CLOSED
が表示されます。 代わりに、AFD エンドポイントを使用してコンテナー アプリにアクセスします。
Azure Front Door プロファイルを作成する
Microsoft.Cdn
リソース プロバイダーがサブスクリプションに登録されていることを確認します。az provider register --namespace Microsoft.Cdn
AFD プロファイルを作成します。 SKU
Standard_AzureFrontDoor
を使用する AFD プロファイルの配信元については、プライベート リンクはサポートされません。
az afd profile create \
--profile-name $AFD_PROFILE \
--resource-group $RESOURCE_GROUP \
--sku Premium_AzureFrontDoor
Azure Front Door エンドポイントを作成する
AFD プロファイルにエンドポイントを追加します。
az afd endpoint create \
--resource-group $RESOURCE_GROUP \
--endpoint-name $AFD_ENDPOINT \
--profile-name $AFD_PROFILE \
--enabled-state Enabled
Azure Front Door の配信元グループを作成する
AFD 配信元グループを作成します。
az afd origin-group create \
--resource-group $RESOURCE_GROUP \
--origin-group-name $AFD_ORIGIN_GROUP \
--profile-name $AFD_PROFILE \
--probe-request-type GET \
--probe-protocol Http \
--probe-interval-in-seconds 60 \
--probe-path / \
--sample-size 4 \
--successful-samples-required 3 \
--additional-latency-in-milliseconds 50
Azure Front Door の配信元を作成する
配信元グループに AFD 配信元を追加します。
az afd origin create \
--resource-group $RESOURCE_GROUP \
--origin-group-name $AFD_ORIGIN_GROUP \
--origin-name $AFD_ORIGIN \
--profile-name $AFD_PROFILE \
--host-name $ACA_ENDPOINT \
--origin-host-header $ACA_ENDPOINT \
--priority 1 \
--weight 500 \
--enable-private-link true \
--private-link-___location $LOCATION \
--private-link-request-message "AFD Private Link Request" \
--private-link-resource $ENVIRONMENT_ID \
--private-link-sub-resource-type managedEnvironments
プライベート エンドポイント接続を一覧表示する
次のコマンドを実行して、環境のプライベート エンドポイント接続を一覧表示します。
az network private-endpoint-connection list \ --name $ENVIRONMENT_NAME \ --resource-group $RESOURCE_GROUP \ --type Microsoft.App/managedEnvironments
応答にあるプライベート エンドポイント接続のリソース ID を記録します。 プライベート エンドポイント接続には、
properties.privateLinkServiceConnectionState.description
のAFD Private Link Request
値があります。 プライベート エンドポイント接続リソース ID は次のようなものです。/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.App/managedEnvironments/my-environment/privateEndpointConnections/<PRIVATE_ENDPOINT_CONNECTION_ID>
この ID とプライベート エンドポイント ID を混同しないでください。これは次のようになります。
/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/eafd-Prod-centralus/providers/Microsoft.Network/privateEndpoints/<PRIVATE_ENDPOINT_ID>
プライベート エンドポイント接続を承認する
接続を承認するには、次のコマンドを実行します。 <PLACEHOLDER> を、前のセクションで記録したプライベート エンドポイント接続リソース ID に置き換えます。
az network private-endpoint-connection approve --id <PRIVATE_ENDPOINT_CONNECTION_RESOURCE_ID>
ルートを追加する
次のコマンドを実行して、先ほど作成したエンドポイントを配信元グループにマップします。 Azure Container Apps のプライベート エンドポイントでは、インバウンドの HTTP トラフィックのみがサポートされています。 TCP トラフィックはサポートされていません。
az afd route create \
--resource-group $RESOURCE_GROUP \
--profile-name $AFD_PROFILE \
--endpoint-name $AFD_ENDPOINT \
--forwarding-protocol MatchRequest \
--route-name $AFD_ROUTE \
--https-redirect Enabled \
--origin-group $AFD_ORIGIN_GROUP \
--supported-protocols Http Https \
--link-to-default-___domain Enabled
Azure Front Door からコンテナー アプリにアクセスする
AFD エンドポイントのホスト名を取得します。
az afd endpoint show \ --resource-group $RESOURCE_GROUP \ --profile-name $AFD_PROFILE \ --endpoint-name $AFD_ENDPOINT \ --query hostName \ --output tsv
ホスト名は次の例のようなものです。
my-afd-endpoint.<HASH>.b01.azurefd.net
ホスト名を参照します。 クイックスタート コンテナー アプリ イメージの出力が表示されます。
最初に予想される出力が表示されない場合は、数分待ってから更新します。
リソースをクリーンアップする
このアプリケーションを引き続き使用しない場合は、my-container-apps リソース グループ を削除できます。 このアクションにより、Azure Container Apps インスタンスと、関連付けられているすべてのサービスが削除されます。 また、Container Apps サービスによって自動的に作成され、カスタム ネットワーク コンポーネントを含むリソース グループも削除されます。
注意事項
次のコマンドを実行すると、指定されたリソース グループとそれに含まれるすべてのリソースが削除されます。 このガイドの範囲外のリソースが指定されたリソース グループに存在する場合は、それらのリソースも削除されます。
az group delete --name $RESOURCE_GROUP
ヒント
問題がありますか? GitHub の Azure Container Apps リポジトリでイシューを開いて、お知らせください。