HTTP ルート構成ではカスタム ドメインがサポートされているため、独自のドメイン名からコンテナー アプリにトラフィックをルーティングできます。
前提条件
- 既存の Azure Container Apps 環境
- 所有するカスタム ドメイン
- ドメインの SSL 証明書 (自動証明書を使用する場合を除く)
- 環境にデプロイされた Container Apps
カスタム ドメインの構成
ドメインをホストしている DNS プロバイダーを使用して、カスタム ドメインに適した DNS レコードを作成します。
ルート ドメイン (たとえば、
contoso.com) を使用している場合は、次の DNS レコードを作成します。レコード タイプ ホスト 価値 A @Container Apps 環境の IP アドレス。 TXT asuidドメイン検証コード。 サブドメイン (たとえば、
www.contoso.com) を使用している場合は、次の DNS レコードを作成します。レコード タイプ ホスト 価値 A サブドメイン (例: www)Container Apps 環境の IP アドレス。 TXT asuid.{subdomain}(例:asuid.www)ドメイン検証コード。
注
Container Apps 環境の IP アドレスとドメイン検証コードは、Container Apps 環境の カスタム DNS サフィックス設定 にあります。
カスタム ドメインを Container Apps 環境またはコンテナー アプリにバインドしないでください。 ドメインは、1 つのアプリ、ルート、または環境にのみバインドされます。
ルートの構成
customDomains セクションを含むように Container Apps YAML ファイルを更新します。 次の条件に基づいて、 bindingType と certificateIdを含めます。
| bindingType 値 | 説明 |
|---|---|
| 障害者 | 証明書は指定されていません。 ドメインは HTTP 経由でのみ使用でき、HTTPS は使用できません。 |
| 車 | 証明書は省略可能です。 このドメインに対してマネージド証明書が既に作成されている場合は、自動的にルートに追加されます。 それ以外の場合、ドメインは最初は HTTP 経由でのみ使用できます。 このドメインのマネージド証明書を作成するには、ルートの作成後に新しいマネージド証明書を作成します。 証明書が作成されると、ルートに自動的に追加されます。 |
| SniEnabled | 証明書が必要です。 |
| 証明書タイプ | certificateId のフォーマット |
|---|---|
| 無し | 空白のままにする |
| マネージド | /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.App/managedEnvironments/{ContainerAppEnvironmentName}/managedCertificates/{CertificateFriendlyName} |
| アンマネージド | /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.App/managedEnvironments/{ContainerAppEnvironmentName}/certificates/{CertificateFriendlyName} |
注
環境に証明書を追加するには、次のいずれかの方法を使用します。
- Container Apps マネージド証明書を追加するには、 az containerapp env certificate create CLI コマンドを使用します。
- 独自の既存の証明書を持ち込むには、 az containerapp env certificate upload CLI コマンドを使用します。
証明書をコンテナー アプリにバインドしないでください。
次の例では、ルート構成を設定する方法を示します。
customDomains:
- name: "<CUSTOM_DOMAIN_ENDPOINT>"
certificateId: "<CERTIFICATE_ID>"
bindingType: "SniEnabled" # Can also be "Disabled", "Auto"
rules:
- description: "Routing to App1"
routes:
- match:
prefix: "/1"
action:
prefixRewrite: "/"
targets:
- containerApp: "<APP1_CONTAINER_APP_NAME>"
- description: "Routing to App2"
routes:
- match:
prefix: "/2"
action:
prefixRewrite: "/"
- match:
prefix: "/"
targets:
- containerApp: "<APP2_CONTAINER_APP_NAME>"
この構成では、HTTP トラフィックの 2 つのルーティング規則を定義します。
| プロパティ | 説明 |
|---|---|
customDomains.name |
使用するドメイン名 (例: "app.contoso.com") |
customDomains.certificateId |
証明書のリソース ID ( bindingType: "Auto"では不要) |
customDomains.bindingType |
SSL の処理方法: "SniEnabled" (サーバー名の表示)、"無効" (HTTP のみ)、または "自動" (自動証明書) |
description |
ルールのわかりやすいラベル |
routes.match.prefix |
一致する URL パス プレフィックス。 たとえば、/api のようにします。 |
routes.action.prefixRewrite |
転送前に一致したプレフィックスを何で置き換えるか。 |
targets.containerApp |
一致するルート要求が送信されるコンテナー アプリの名前。 |
これらのルールを使用すると、カスタム ドメイン上のさまざまなパスを異なるコンテナー アプリにルーティングしながら、宛先アプリに到達する前に要求パスを変更できます。
ルートに影響する可能性がある一覧にないその他のプロパティには、次のようなものがあります。
| プロパティ | 説明 |
|---|---|
route.match.path |
完全一致パスの定義。 |
route.match.pathSeparatedPrefix |
任意のテキストではなく、'/' 境界上のルートと一致します。 たとえば、値を /product に設定すると、 /product/1では一致しますが、 /product1では一致しません。 |
route.match.caseSensitive |
ルート パターンと大文字と小文字の区別が一致するかどうかを制御します。 |
target.label |
コンテナー アプリ内の特定のラベル付きリビジョンにルーティングします。 |
target.revision |
コンテナー アプリ内の特定のリビジョンにルーティングします。 |
ルート構成を操作する
ルート構成を管理するには、次のコマンドを使用します。
次のコマンドを実行する前に、 <> で囲まれたプレースホルダーを実際の値に置き換えてください。
新しいルート構成を作成する
az containerapp env http-route-config createを使用して、新しいルート構成を作成します。
az containerapp env http-route-config create \
--resource-group <RESOURCE_GROUP_NAME> \
--name <ENVIRONMENT_NAME> \
--http-route-config-name <CONFIGURATION_NAME> \
--yaml <CONTAINER_APPS_CONFIG_FILE>
ルート構成を一覧表示する
az containerapp env http-route-config listを使用して、定義されているすべてのルート構成を一覧表示します。
az containerapp env http-route-config list \
--resource-group <RESOURCE_GROUP_NAME> \
--name <ENVIRONMENT_NAME>
ルート構成を更新する
既存のルート構成を更新するには、 az containerapp env http-route-config update を使用します。
az containerapp env http-route-config update \
--resource-group <RESOURCE_GROUP_NAME> \
--name <ENVIRONMENT_NAME> \
--http-route-config-name <CONFIGURATION_NAME> \
--yaml <CONTAINER_APPS_CONFIG_FILE>
特定のルート構成を表示する
ルート構成の詳細を表示するには、 az containerapp env http-route-config show を使用します。
az containerapp env http-route-config show \
--resource-group <RESOURCE_GROUP_NAME> \
--name <ENVIRONMENT_NAME> \
--http-route-config-name <CONFIGURATION_NAME>
ルート構成を削除する
ルート構成を削除するには、 az containerapp env http-route-config delete を使用します。
az containerapp env http-route-config delete \
--resource-group <RESOURCE_GROUP_NAME> \
--name <ENVIRONMENT_NAME> \
--http-route-config-name <CONFIGURATION_NAME>
HTTP ルーティングを確認する
ルールベースのルーティングを使用してカスタム ドメインを構成した後:
ブラウザーでカスタム ドメインに移動します。 たとえば、
https://app.contoso.com/1のようにします。要求が最初のコンテナー アプリにルーティングされていることを確認します。
パスを
/2に変更します。 たとえば、https://app.contoso.com/2のようにします。要求が 2 つ目のコンテナー アプリにルーティングされていることを確認します。
関連コンテンツ
ヒント
問題がありますか。 GitHub の Azure Container Apps リポジトリでイシューを開いて、お知らせください。