Azure Container Apps での HTTPS イングレスの設定

Azure Container Apps を使用すると、イングレスを有効にすることで、コンテナー アプリをパブリックの Web に公開できます。 イングレスを有効にすると、Azure Load Balancer、パブリック IP アドレス、またはその他の Azure リソースを作成しなくても、受信 HTTPS 要求を有効にすることができます。

イングレスが有効になっているコンテナー アプリには、次のような特徴があります。

  • TLS 終端をサポートする
  • HTTP/1.1 および HTTP/2 をサポートする
  • WebSocket と gRPC をサポートする
  • HTTPS エンドポイントは常に TLS 1.2 を使用し、イングレス ポイントで終了する
  • エンドポイントは、常にポート 80 (HTTP 用) と 443 (HTTPS 用) を公開する。
    • 既定では、ポート 80 への HTTP 要求は 443 の HTTPS に自動的にリダイレクトされます。
  • 要求のタイムアウトは 240 秒である。

構成

イングレスは、アプリケーション全体に適用される設定です。 イングレス設定の変更はすべてのリビジョンに同時に適用され、新しいリビジョンは生成されません。

イングレス構成セクションは、次のような形式になります。

{
  ...
  "configuration": {
      "ingress": {
          "external": true,
          "targetPort": 80,
          "transport": auto
      }
  }
}

イングレスを構成するときには、次の設定を使用できます。

プロパティ 説明 必須
external イングレス IP とアプリの完全修飾ドメイン名 (FQDN) は、アプリ環境にそれぞれ外部または内部のエンドポイントがあるか、アプリ環境内からのみ表示可能であるかに応じて、インターネットから外部で、または VNET から内部で表示できます。 アプリ環境エンドポイントの構成に応じて、インターネットまたは VNET から表示可能にするには true、アプリ環境内でのみ表示可能にするには false。 (既定値)。 はい
targetPort コンテナーが受信要求をリッスンするポート。 この値には、コンテナーで使用するポート番号を設定します。 アプリケーションのイングレス エンドポイントは、常にポート 443 で公開されています。 はい
transport HTTP/1.1 または HTTP/2 を使用することも、トランスポートの種類を自動的に検出するように設定することもできます。 http が HTTP/1 の場合、http2 が HTTP/2 の場合、auto がトランスポートの種類を自動的に検出する場合 (既定値) いいえ
allowInsecure コンテナー アプリへの、セキュリティで保護されていないトラフィックを許可します。 false (既定値)、true

true に設定した場合、ポート 80 への HTTP 要求は HTTPS を使用してポート 443 に自動的にリダイレクトされず、安全でない接続が許可されます。
いいえ

注意

アプリケーションのイングレスを無効にするには、ingress 構成プロパティ全体を省略します。

IP アドレスとドメイン名

イングレスが有効になっている場合、アプリケーションには完全修飾ドメイン名 (FQDN) が割り当てられます。 ドメイン名の形式は次のとおりです。

イングレスの可視性の設定 完全修飾ドメイン名
外部 <APP_NAME>.<UNIQUE_IDENTIFIER>.<REGION_NAME>.azurecontainerapps.io
内部 <APP_NAME>.internal.<UNIQUE_IDENTIFIER>.<REGION_NAME>.azurecontainerapps.io

コンテナー アプリ環境には、external イングレスの可視性を持つアプリケーション用に 1 つのパブリック IP アドレスがあり、internal イングレスの可視性を持つアプリケーション用に 1 つの内部 ID アドレスがあります。 そのため、コンテナー アプリ環境内の、external イングレスの可視性を持つすべてのアプリケーションは、単一のパブリック IP アドレスを共有します。 同様に、コンテナー アプリ環境内の、internal イングレスの可視性を持つすべてのアプリケーションは、単一の内部 IP アドレスを共有します。 HTTP トラフィックは、ホスト ヘッダー内の FQDN に基づいて個々のアプリケーションにルーティングされます。

環境の設定に対してクエリを実行することで、環境の一意の識別子を取得できます。

完全修飾ドメイン名の取得

この az containerapp show コマンドは、コンテナーアプリの完全修飾ドメイン名を返します。

az containerapp show \
  --resource-group <RESOURCE_GROUP_NAME> \
  --name <CONTAINER_APP_NAME> \
  --query properties.configuration.ingress.fqdn

この例では、で囲まれたプレースホルダーを <> 実際の値に置き換えます。

このコマンドから返される値は、次の例のようなドメイン名に似ています。

myapp.happyhill-70162bb9.canadacentral.azurecontainerapps.io