非公開スペースにデプロイされたアプリケーションのエンドポイントとパスの設定

CloudHub 2.0 では、共有スペースではなく非公開スペースにデプロイされたアプリケーションでのみ、エンドポイントのカスタマイズがサポートされています。

非公開スペースは、クライアントからの要求を非公開スペースにデプロイされたアプリケーションに転送します。

アプリケーションを非公開スペースにデプロイすると、2 種類の​エンドポイント​が作成されます。

  • エンドポイント​: 公開スペースにデプロイされたアプリケーションに到達するために使用される URL。このコンテキストでは、外部からエンドポイントにアクセスできるため、ネットワーク外のクライアントがアプリケーションに到達できます。このエンドポイントを削除すれば、外部トラフィックがアプリケーションに到達することを回避できます。

  • 内部エンドポイント​: 公開スペースにデプロイされたアプリケーションに到達するために使用される URL。ただし、非公開ネットワーク内、VPN、またはトランジットゲートウェイ (TGW) でのみアクセスできます。このエンドポイント種別は変更または削除できません。

エンドポイント URL の例としては、​https://my-app.example.com/​ のようになります。エンドポイントでは、ネットワーク外のクライアントがアプリケーションに到達できます。内部エンドポイントには、非公開ネットワーク内、VPN、またはトランジットゲートウェイ (TGW) でのみアクセスできます。ネットワーク内でのみアプリケーションにアクセスできるようにするには、内部エンドポイントを使用します。

次の設定により、クライアントからの要求がアプリケーションに到達する方法をカスタマイズできます。

エンドポイントを削除して、非公開ネットワークの外部にあるクライアントがアプリケーションに要求を送信できないようにすることもできます。

始める前に

システム管理者は、アプリケーションのエンドポイントとパスを設定する前に、非公開スペースの TLS コンテキストをセットアップする必要があります。

複数のエンドポイントを設定する

複数のエンドポイント (​my-app.example.com​ と ​my-old-app.oldname.com​ など) を介してアプリケーションに到達可能にすることができます。

各エンドポイント名が一意になるように、サブドメインで ​app-name​ プレースホルダーを使用するか、ドメインにワイルドカードが含まれていない場合はパスを使用します。

複数のエンドポイントを設定する手順は、次のとおりです。

  1. アプリケーションを非公開スペースにデプロイする場合、​[Ingress (イングレス)]​ タブをクリックします。

    アプリケーションがすでにデプロイ済みの場合:

    1. Anypoint Platform から、​[Runtime Manager]​ > ​[Applications (アプリケーション)]​ を選択します。

    2. アプリケーション名をクリックします。

    3. ナビゲーションメニューで ​[Settings (設定)]​ をクリックします。

    4. [Ingress (イングレス)]​ タブをクリックします。

  2. 最初のエンドポイントを設定します。

    1. [Domain (ドメイン)]​ ドロップダウンリストから、最初のドメイン (​*.example.com​ など) を選択します。

      ドメインにワイルドカードが含まれる場合、​[Subdomain (サブドメイン)]​ 項目を使用できます。

    2. サブドメインを入力するか、​[Subdomain (サブドメイン)]​ 項目に ​my-app​ プレースホルダーを入力して、​[Application Name (アプリケーション名)]​ 項目で指定したアプリケーションの名前をサブドメインとして使用します。

      詳細は、​「プレースホルダー」​を参照してください。

    3. アプリケーションの HTTP リスナーがリスンするパス (​v1/api​ など) を入力します。

  3. 追加のエンドポイントを設定する場合は、​[Add Endpoint (エンドポイントを追加)]​ をクリックして、ステップ 2.1 ~ 2.3 を繰り返します。

  4. デプロイメントの状況に応じて、次のいずれかを選択します。

    • アプリケーションをデプロイする準備ができている場合、​[Deploy (デプロイ)]​ をクリックします。

    • このアプリケーションがデプロイされている場合、​[Apply Changes (変更を適用)]​ をクリックします。

  5. 設定された各エンドポイントでアプリケーションに到達できることを確認します。

プレースホルダー

サブドメインとパスでは、次の小文字プレースホルダー (省略可能) がサポートされます。

プレースホルダー 解決対象

app-name

アプリケーションをデプロイするときに ​[Application Name (アプリケーション名)]​ 項目で指定したアプリケーションの名前

business-group-id

アプリケーションに関連付けられビジネスグループ ID

environment-id

アプリケーションをデプロイする環境

アプリケーションと URL エンドポイントに異なるパスを設定する

アプリケーションと URL エンドポイントに異なるパスを設定できます。 たとえば、アプリケーションが ​my-app.example.com/v1/api​ でリスンしているときに、​my-app.example.com/api​ を使用してインターネットからアプリケーションにアクセスすることができます。 パス URL を書き換えると、新しいパスがすべてのエンドポイントに適用されます。

異なるパスを設定する手順は、次のとおりです。

  1. 『非公開スペースにアプリケーションをデプロイします』​。

  2. [Ingress (イングレス)]​ タブをクリックします。

  3. [Path (パス)]​ 項目で、アプリケーションにアクセスできるようにするパス (​/api​ など) を入力します。

  4. [Path Rewrite (パス書き換え)]​ 項目で、アプリケーションの HTTP リスナーに必要なベースパス (​/v1/api​ など) を入力します。

    この項目は、カスタム TLS コンテキストでデプロイされたアプリケーションでのみ使用できます。

  5. アプリケーションの新しい設定を作成するには、​[Apply Changes (変更を適用)]​ をクリックします。

エンドポイントを削除する

エンドポイントを変更する手順は、次のとおりです。

  1. Anypoint Platform から、​[Runtime Manager]​ > ​[Applications (アプリケーション)]​ を選択します。

  2. アプリケーション名をクリックします。

  3. ナビゲーションメニューで ​[Settings (設定)]​ をクリックします。

  4. [Ingress (イングレス)]​ タブをクリックします。

  5. エンドポイントリンクの行で、​[X]​ (​[Delete (削除)]​) をクリックします。

アプリケーションの内部エンドポイントを表示する

内部エンドポイントには、同じ非公開スペース内から、または非公開スペースの VPN やトランジットゲートウェイ接続を介してアクセスできます。内部エンドポイントのパスまたはドメインを変更することはできません。

内部エンドポイントの URL を表示またはコピーする手順は、次のとおりです。

  1. Anypoint Platform から、​[Runtime Manager]​ > ​[Applications (アプリケーション)]​ を選択します。

  2. アプリケーション名をクリックします。

  3. ナビゲーションメニューで ​[Settings (設定)]​ をクリックします。

  4. [Ingress (イングレス)]​ タブをクリックします。

  5. [internal endpoint (内部エンドポイント)]​ にマウスポインターを置きます。

非公開スペース内でアプリケーション間要求を送信する

非公開スペースでは、すべてのアプリケーションレプリカが非公開スペース内のエンドポイントを公開しています。インバウンドトラフィックを有効にすると、このエンドポイントは外部に公開されます。

非公開スペースの内部ドメイン内のすべてのアプリケーションに DNS レコードがあります。たとえば、​2abc2ce6-cce6-463b-afaa-a1979e3xxxxx​ 環境のアプリケーション ​helloch2​ の DNS レコードは次のとおりです。

helloch2.2abc2ce6-cce6-463b-afaa-a1979e3xxxxx.svc.cluster.local

アプリケーションレプリカは親ドメインを検索する前にまず同じドメイン内の DNS レコードを検索するため、同じ非公開スペース内の別のアプリケーションに要求を送信するには、アプリケーション名のみが必要です。両方のアプリケーションが同じ名前空間にある場合は、アプリケーション名のみが必要です。

http://helloch2:8081/hello

必要に応じて ​http​ を ​https​ に置き換えます。

svc.cluster.local​ エンドポイントを使用して、異なる名前空間のアプリケーション間でトラフィックを送信することはできません。

アプリケーション間の通信

アプリケーション間の通信方法を次に示します。

  • デフォルトの公開 DNS 名: app.sxjsip.aus-s1.cloudhub.io

  • デフォルトの内部 DNS 名 (非公開スペースのみ): app.internal-sxjsip.aus-s1.cloudhub.io

  • カスタムドメイン名 (設定されている場合): acme.example.com

  • クラスターローカル DNS: app​ または ​app.envid.svc.cluster.local

内部 DNS 名を使用する場合、トラフィックは非公開スペースネットワークに留まります。アプリケーションを非公開スペースにデプロイする場合、外部に公開されるエンドポイントを削除または省略できます。その場合、内部トラフィック用にアプリケーションの内部エンドポイントを使用できます。

クラスターローカルエンドポイントを使用する場合、トラフィックはクラスター内に留まります。ただし、クラスターローカルエンドポイントは高可用性ではありません。一部のクラスター操作 (障害回復など) により、エンドポイントに到達できなくなる可能性があります。クラスターローカルエンドポイントでは、同じ環境内のトラフィックのみが許可されます。