仮想ネットワークに Azure Spring Apps をデプロイする

Note

Azure Spring Apps は、Azure Spring Cloud サービスの新しい名前です。 サービスの名前は新しくなりましたが、スクリーンショット、ビデオ、図などの資産の更新に取り組んでいる間、場所によってはしばらく古い名前が表示されます。

この記事の適用対象: ✔️ Java ✔️ C#

この記事の適用対象:❌ Basic ✔️ Standard ✔️ Enterprise

このチュートリアルでは、Azure Spring Apps インスタンスを仮想ネットワークにデプロイする方法について説明します。 このデプロイは、VNet インジェクションとも呼ばれます。

デプロイでは次のことが可能です。

  • 企業ネットワークでの Azure Spring Apps アプリとサービス ランタイムのインターネットからの分離。
  • オンプレミスのデータ センター内のシステムや、他の仮想ネットワーク内の Azure サービスとの Azure Spring Apps の対話。
  • Azure Spring Apps の送受信ネットワーク通信を制御するための顧客への権限付与。

次のビデオでは、管理対象仮想ネットワークを使用して Spring Boot アプリケーションをセキュリティで保護する方法について説明します。


Note

Azure 仮想ネットワークは、新しい Azure Spring Apps のサービス インスタンスを作成する時点に限り選択できます。 Azure Spring Apps を作成した後で、別の仮想ネットワークを使用するように変更することはできません。

前提条件

Azure portal でのリソース プロバイダーの登録に関するセクションの手順に従うか、以下の Azure CLI コマンドを実行して、Azure Spring Apps リソースプロバイダー Microsoft.AppPlatform および Microsoft.ContainerService を登録します。

az provider register --namespace Microsoft.AppPlatform
az provider register --namespace Microsoft.ContainerService

仮想ネットワークの要件

Azure Spring Apps インスタンスのデプロイ先となる仮想ネットワークは、以下の要件を満たす必要があります。

  • [場所]: 仮想ネットワークは、Azure Spring Apps インスタンスと同じ場所に存在する必要があります。
  • [サブスクリプション]: 仮想ネットワークは、Azure Spring Apps インスタンスと同じサブスクリプションに存在する必要があります。
  • サブネット: 仮想ネットワークには、Azure Spring Apps インスタンス専用の 2 つのサブネットが含まれている必要があります:
    • サービス ランタイム用に 1 つ。
    • Spring アプリケーション用に 1 つ。
    • これらのサブネットと Azure Spring Apps インスタンスの間には、一対一のリレーションシップがあります。 デプロイするサービス インスタンスごとに新しいサブネットを使用します。 各サブネットには、1 つのサービス インスタンスのみを含めることができます。
  • アドレス空間: サービス ランタイム サブネットと Spring アプリケーション サブネットの両方に対して最大 /28 までの CIDR ブロック。
  • ルート テーブル: 既定では、サブネットに既存のルート テーブルが関連付けられている必要はありません。 独自のルート テーブルを使用することができます。

次の手順を使用して、Azure Spring Apps インスタンスが含まれるように仮想ネットワークを設定します。

仮想ネットワークの作成

Azure Spring Apps インスタンスをホストする仮想ネットワークが既にある場合は、手順 1、2、3 をスキップします。 手順 4 から開始して、仮想ネットワークのサブネットを準備することができます。

  1. Azure portal のメニューで、[リソースの作成] を選択します。 Azure Marketplace で、[ネットワーク]>[仮想ネットワーク] の順に選択します。

  2. [仮想ネットワークの作成] ダイアログ ボックスで、次の情報を入力または選択します。

    設定
    サブスクリプション サブスクリプションを選択します。
    Resource group リソース グループを選択するか、新しく作成します。
    名前 azure-spring-apps-vnet」と入力します。
    場所 [米国東部] を選択します。
  3. 次へ:[次へ: IP アドレス] を選択します。

  4. [IPv4 アドレス空間] に、「10.1.0.0/16」と入力します。

  5. [サブネットの追加] を選択します。 [サブネット名] に「service-runtime-subnet」と入力し、[サブネットのアドレス範囲] に「10.1.0.0/24」と入力します。 その後、追加を選択します。

  6. [サブネットの追加] を再び選択し、サブネット名とサブネット アドレス範囲を入力します。 たとえば、「apps-subnet」と「10.1.1.0/24」と入力します。 その後、追加を選択します。

  7. [Review + create](レビュー + 作成) を選択します。 残りは既定値のままにして、[作成] を選択します。

仮想ネットワークにサービス アクセス許可を付与する

このセクションでは、Azure Spring Apps に仮想ネットワークに対する所有者アクセス許可を付与する方法について説明します。 このアクセス許可により、仮想ネットワーク上の専用かつ動的なサービス プリンシパルにさらに高度なデプロイとメンテナンスの権限を付与することができます。

Note

最低限必要なアクセス許可は、ユーザー アクセス管理者ネットワーク共同作成者です。 Owner アクセス許可を付与できない場合は、これらの両方にロールの割り当てを付与できます。

独自のルート テーブルまたはユーザー定義ルート機能を使用している場合は、Azure Spring Apps にルート テーブルと同じロールの割り当てを付与する必要もあります。 詳細については、「独自のルート テーブルを持ち込む」セクションおよび「Azure Spring Apps インスタンスのエグレス トラフィックを制御する」を参照してください。

アクセス許可を付与するには、次の手順を使用します。

  1. 前に作成した仮想ネットワーク azure-spring-apps-vnet を選択します。

  2. [アクセス制御 (IAM)] を選択してから、[追加]>[ロール割り当ての追加] の順に選択します。

    Azure portal の [アクセス制御 (IAM)] ページのスクリーンショット。[ロールの割り当てを追加] ボタンが強調表示された [アクセスの確認] タブが表示されています。

  3. Azure Spring Apps リソース プロバイダーに Owner ロールを割り当てます。 詳細については、Azure ポータルを使用した Azure ロールの割り当て を参照してください。

    Note

    Azure Spring Apps リソース プロバイダーが見つからない場合は、"Azure Spring Cloud リソース プロバイダー" を検索します。

    Azure portal の [アクセス制御] ページのスクリーンショット。[ロールの割り当てを追加] ウィンドウと、Azure Spring Apps リソース プロバイダーが選択されている [選択] ボックスが強調表示されています。

Azure Spring Apps インスタンスをデプロイする

仮想ネットワークに Azure Spring Apps インスタンスをデプロイするには、次の手順を使用します。

  1. Azure Portalを開きます。

  2. 上部の検索ボックスで Azure Spring Apps を検索します。 その結果から [Azure Spring Apps] を選択します。

  3. [Azure Spring Apps] ページで [追加] を選択します。

  4. Azure Spring Apps の [作成] ページで、フォームに入力します。

  5. 仮想ネットワークと同じリソース グループおよびリージョンを選択します。

  6. [サービスの詳細] の下にある [名前] で、[azure-spring-cloud-vnet] を選択します。

  7. [ネットワーク] タブを選択し、以下の値を選択します。

    設定 Value
    Deploy in your own virtual network (自分の仮想ネットワーク内にデプロイする) [はい] を選択します。
    仮想ネットワーク [azure-spring-apps-vnet] を選択します。
    Service runtime subnet (サービス ランタイム サブネット) [service-runtime-subnet] を選択します。
    Spring Boot microservice apps subnet (Spring Boot マイクロサービス アプリ サブネット) [apps-subnet] を選択します。

    [ネットワーク] タブが表示されている Azure portal の [Azure Spring Apps の作成] ページのスクリーンショット。

  8. [確認と作成] を選択します。

  9. 指定を確認し、[作成] を選択します。

    [レビューと作成] タブの [ネットワーク] セクションが表示されている Azure portal の [Azure Spring Apps の作成] ページのスクリーンショット。

デプロイ後、Azure Spring Apps インスタンスのネットワーク リソースをホストするために、サブスクリプションにさらに 2 つのリソース グループが作成されます。 [ホーム] に移動し、上部のメニュー項目から [リソース グループ] を選択して、次の新しいリソース グループを検索します。

ap-svc-rt_{service instance name}_{service instance region} という名前のリソース グループには、サービス インスタンスのサービス ランタイム用のネットワーク リソースが含まれています。

サービス ランタイムのリソースを示す Azure portal のスクリーンショット。

ap-app_{service instance name}_{service instance region} という名前のリソース グループには、サービス インスタンスの Spring アプリケーション用のネットワーク リソースが含まれています。

Spring アプリケーションのリソースを示す Azure portal のスクリーンショット。

これらのネットワーク リソースは、上の図で作成した仮想ネットワークに接続されています。

仮想ネットワークの [接続デバイス] ページが表示されている Azure portal のスクリーンショット。

重要

リソース グループは、Azure Spring Apps サービスによって完全に管理されています。 内部のリソースを手動で削除または変更 "しない" でください。

使用するサブネット範囲を小さくする

この表は、使用するサブネット範囲を小さくしていった場合に Azure Spring Apps がサポートするアプリ インスタンスの最大数を示したものです。

アプリ サブネットの CIDR IP 総数 使用可能な IP 数 最大アプリ インスタンス
/28 16 8

0.5のコアを持つアプリ: 192
1 つのコアを持つアプリ: 96
2 つのコアを持つアプリ: 48
3 つのコアを持つアプリ: 32
4 つのコアを持つアプリ: 24

/27 32 24

0.5のコアを持つアプリ: 456
1 つのコアを持つアプリ: 228
2 つのコアを持つアプリ: 144
3 つのコアを持つアプリ: 96
4 つのコアを持つアプリ: 72

/26 64 56

0.5のコアを持つアプリ: 500
1 つのコアを持つアプリ: 500
2 つのコアを持つアプリ: 336
3 つのコアを持つアプリ: 224
4 つのコアを持つアプリ: 168

/25 128 120

0.5のコアを持つアプリ: 500
1 つのコアを持つアプリ: 500
2 つのコアを持つアプリ: 500
3 つのコアを持つアプリ: 480
4 つのコアを持つアプリ: 360

/24 256 248

0.5のコアを持つアプリ: 500
1 つのコアを持つアプリ: 500
2 つのコアを持つアプリ: 500
3 つのコアを持つアプリ: 500
4 つのコアを持つアプリ: 500

サブネットの場合、5 つの IP アドレスが Azure によって予約されており、Azure Spring Apps には少なくとも 3 つの IP アドレスが必要です。 少なくとも 8 個の IP アドレスが必要になるため、/29 と /30 は非運用です。

サービス ランタイムのサブネットの場合、最小サイズは /28 です。

Note

サブネット範囲が小さいと、イングレス コントローラーなどのシステム コンポーネントに使用できる基になるリソースに影響します。 Azure Spring Apps は、基になるイングレス コントローラーを使用してアプリケーション トラフィック管理を処理します。 イングレス コントローラー インスタンスの数は、アプリケーション トラフィックが増加すると自動的に増えます。 アプリケーション トラフィックが将来的に増加する可能性がある場合は、より広い IP 範囲の仮想ネットワーク サブネットを予約してください。 通常、1 秒あたり 10000 要求のトラフィックに対して 1 つの IP アドレスを予約します。

独自のルート テーブルを使用する

Azure Spring Apps では、既存のサブネットとルート テーブルの使用がサポートされています。

カスタム サブネットにルート テーブルが含まれていない場合、Azure Spring Apps はサブネットごとにルート テーブルを作成し、インスタンスのライフサイクル全体を通してこれらにルールを追加します。 カスタム サブネットにルート テーブルが含まれている場合は、Azure Spring Apps はインスタンスの操作中に既存のルート テーブルを確認し、操作に応じてルールを追加または更新します。

警告

カスタム ルールをカスタム ルート テーブルに追加し、更新することができます。 ただし、ルールは Azure Spring Apps によって追加され、これらを更新したり削除したりすることはできません。 0.0.0.0/0 などのルールは、特定のルート テーブルに常に存在し、NVA や他のエグレス ゲートウェイなどのインターネット ゲートウェイのターゲットにマップされている必要があります。 ルールの更新でカスタム ルールのみが変更されている場合は注意が必要です。

ルート テーブルの要件

カスタム vnet が関連付けられているルート テーブルは、次の要件を満たしている必要があります。

  • Azure Spring Apps サービス インスタンスの作成時のみ、Azure ルート テーブルを vnet に関連付けることができます。 Azure Spring Apps の作成後は、別のルート テーブルを使用するように変更することはできません。
  • Spring アプリケーション サブネットとサービス ランタイム サブネットは、異なるルート テーブルに関連付けるか、どちらもルート テーブルに関連付けないでおく必要があります。
  • インスタンスの作成前にアクセス許可を割り当てる必要があります。 Azure Spring Apps リソース プロバイダーには、必ずルート テーブルに対する Owner アクセス許可 (または User Access Administrator および Network Contributor アクセス許可) を付与してください。
  • クラスターを作成した後で、関連付けられているルート テーブル リソースを更新することはできません。 ルート テーブル リソースは更新できませんが、ルート テーブルのカスタム ルールは変更できます。
  • ルーティング規則が競合する可能性があるため、複数のインスタンスでルート テーブルを再利用することはできません。

カスタム DNS サーバーの使用

Azure Spring Apps では、仮想ネットワークでのカスタム DNS サーバーの使用をサポートしています。

DNS サーバー仮想ネットワーク設定でカスタム DNS サーバーを指定しない場合、Azure Spring Apps は、既定では、Azure DNS を使用して IP アドレスを解決します。 仮想ネットワークがカスタム DNS 設定で構成されている場合は、カスタム DNS サーバー内のアップストリーム DNS サーバーとして Azure DNS IP 168.63.129.16 を追加してください。 Azure DNS は、「仮想ネットワークでの Azure Spring Apps の実行に関するお客様の責任」に記載されているすべてのパブリック FQDN の IP アドレスを解決できます。 また、仮想ネットワーク内の *.svc.private.azuremicroservices.io の IP アドレスを解決することもできます。

カスタム DNS サーバーがアップストリーム DNS サーバーとして Azure DNS IP 168.63.129.16 を追加できない場合は、次の手順を使用します。

次のステップ