次の方法で共有


クイックスタート: Terraform を使用して Azure Spring Apps をプロビジョニングする

Note

BasicStandard、および Enterprise プランは、2025 年 3 月中旬から廃止され、3 年間の提供終了期間となります。 Azure Container Apps に移行することをお勧めします。 詳細については、「Azure Spring Apps の提供終了のお知らせ」を参照してください。

Standard 従量課金プランと専用プランは、2024 年 9 月 30 日以降は非推奨となり、6 か月後に完全にシャットダウンされます。 Azure Container Apps に移行することをお勧めします。 詳細については、「Azure Spring Apps の Standard 従量課金プランと専用プランを Azure Container Apps に移行する」を参照してください。

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

このクイックスタートでは、Terraform を使用して Azure Spring Apps クラスターを既存の仮想ネットワークにデプロイする方法について説明します。

Azure Spring Apps では、コードを変更せずに、Spring アプリケーションを Azure に簡単にデプロイできます。 Spring アプリケーションのインフラストラクチャはこのサービスによって管理されるため、開発者はコードに専念できます。 Azure Spring Apps では、包括的な監視と診断、構成管理、サービス検出、CI/CD 統合、ブルー/グリーン デプロイなどを使用して、ライフサイクルを管理できます。

Enterprise デプロイ プランには、次の Tanzu コンポーネントが含まれます。

  • ビルド サービス
  • アプリケーション構成サービス
  • サービス レジストリ
  • Spring Cloud Gateway
  • API ポータル

API ポータル コンポーネントは、AzureRM Terraform プロバイダーを介して使用できるようになった場合に含まれます。

カスタム ドメイン サポートを含むカスタマイズの詳細については、Azure Spring Apps Terraform プロバイダーのドキュメントを参照してください。

前提条件

  • Azure サブスクリプション。 サブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。
  • Hashicorp Terraform
  • Azure Spring Apps クラスター用の 2 つの専用サブネット (1 つはサービス ランタイム用、もう 1 つは Spring アプリケーション用)。 サブネットと仮想ネットワークの要件については、「仮想ネットワークに Azure Spring Apps をデプロイする」の「仮想ネットワークの要件」セクションを参照してください。
  • Azure Spring Apps の診断設定用の既存の Log Analytics ワークスペースと、ワークスペースベースの Application Insights リソース。 詳細については、「診断設定でログとメトリックを分析する」と「Azure Spring Apps での Application Insights Java In-Process Agent」を参照してください。
  • Azure Spring Apps クラスターに使用するために指定した 3 つの内部クラスレス ドメイン間ルーティング (CIDR) の範囲 (それぞれ少なくとも /16)。 これらの CIDR の範囲は直接ルーティング可能ではなく、Azure Spring Apps クラスターによって内部的にのみ使用されます。 クラスターは、内部 Azure Spring Apps の CIDR に 169.254.0.0/16172.30.0.0/16172.31.0.0/16192.0.2.0/24 を使用することはできません。 また、クラスターは、クラスターの仮想ネットワーク アドレス範囲に含まれる IP 範囲を使用することもできません。
  • 仮想ネットワークに付与されたサービスのアクセス許可。 Azure Spring Apps リソース プロバイダーには、さらなるデプロイとメンテナンスを目的として仮想ネットワーク上に専用かつ動的なサービス プリンシパルを許可するために、仮想ネットワークに対する User Access Administrator および Network Contributor アクセス許可が必要です。 手順と詳細については、「仮想ネットワークに Azure Spring Apps をデプロイする」の「仮想ネットワークにサービス アクセス許可を付与する」セクションを参照してください。
  • Azure Firewall またはネットワーク仮想アプライアンス (NVA) を使用している場合は、次の前提条件も満たす必要があります。
  • ターゲット サブスクリプションで初めて Azure Spring Apps Enterprise プラン インスタンスをデプロイする場合は、「Azure Marketplace の Enterprise プラン」の「要件」セクションを参照してください。

Terraform プランを確認する

このクイックスタートで使用されている構成ファイルは、「Azure Spring Apps の参照アーキテクチャ」のものです。

# Azure provider version 

terraform {
  required_providers {
    azurerm = {
      source = "hashicorp/azurerm"
      version = "= 3.21.1"
    }
  }
}

provider "azurerm" {
    features {} 
}

### Create Resource group 
resource "azurerm_resource_group" "sc_corp_rg" {
    name      = var.resource_group_name
    location  = var.location
}

### Create Application Insights
resource "azurerm_application_insights" "sc_app_insights" {
  name                = var.app_insights_name
  location            = var.location
  resource_group_name = var.resource_group_name
  application_type    = "web"
  workspace_id        = "/subscriptions/${var.subscription}/resourceGroups/${var.azurespringcloudvnetrg}/providers/Microsoft.OperationalInsights/workspaces/${var.sc_law_id}"
  depends_on = [azurerm_resource_group.sc_corp_rg]
}

### Create Spring Cloud Service
resource "azurerm_spring_cloud_service" "sc" {
  name                = var.sc_service_name 
  resource_group_name = var.resource_group_name
  location            = var.location
  sku_name            = "S0"
  
  network {
    app_subnet_id                   = "/subscriptions/${var.subscription}/resourceGroups/${var.azurespringcloudvnetrg}/providers/Microsoft.Network/virtualNetworks/${var.vnet_spoke_name}/subnets/${var.app_subnet_id}"
    service_runtime_subnet_id       = "/subscriptions/${var.subscription}/resourceGroups/${var.azurespringcloudvnetrg}/providers/Microsoft.Network/virtualNetworks/${var.vnet_spoke_name}/subnets/${var.service_runtime_subnet_id}"
    cidr_ranges                     = var.sc_cidr
  }
  
  timeouts {
      create = "60m"
      delete = "2h"
  }

  depends_on = [azurerm_resource_group.sc_corp_rg]
  tags = var.tags
  
}

### Update Diags setting for Spring Cloud Service

resource "azurerm_monitor_diagnostic_setting" "sc_diag" {
  name                        = "monitoring"
  target_resource_id          = azurerm_spring_cloud_service.sc.id
  log_analytics_workspace_id = "/subscriptions/${var.subscription}/resourceGroups/${var.azurespringcloudvnetrg}/providers/Microsoft.OperationalInsights/workspaces/${var.sc_law_id}"

  log {
    category = "ApplicationConsole"
    enabled  = true

    retention_policy {
      enabled = false
    }
  }

  metric {
    category = "AllMetrics"

    retention_policy {
      enabled = false
    }
  }
}

Terraform プランを適用する

Terraform プランを適用するには、次の手順を実施します。

  1. Standard プランまたは Enterprise プランvariables.tf ファイルをローカルに保存し、エディターで開きます。

  2. ファイルを編集して、次の値を追加します。

    • デプロイ先の Azure アカウントのサブスクリプション ID。

    • リージョン別の利用可能な製品」で示されている、Azure Spring Apps が利用可能なリージョンからのデプロイの場所。 場所名の短い形式が必要です。 この値を取得するには、次のコマンドを使用して Azure の場所の一覧を生成し、選択したリージョンの [名前] の値を検索します。

      az account list-locations --output table
      
  3. ファイルを編集して、次の新しいデプロイ情報を追加します。

    • デプロイ先のリソース グループの名前。
    • Azure Spring Apps のデプロイで選択した名前。
    • Application Insights リソースに対して選択した名前。
    • Azure Spring Apps バックエンド インフラストラクチャをホストするために使用される 3 つの CIDR 範囲 (少なくとも /16)。 CIDR 範囲は、ターゲット サブネット内の既存の CIDR 範囲と重複してはいけません
    • タグをサポートするすべてのリソースにタグとして適用されるキーと値のペア。 詳細については、「タグを使用して Azure リソースと整理階層を整理する」を参照してください
  4. ファイルを編集して、次の既存のインフラストラクチャ情報を追加します。

    • 既存の仮想ネットワークが存在するリソース グループの名前。
    • 既存のスコープ仮想ネットワークの名前。
    • Azure Spring Apps アプリケーション サービスで使用する既存のサブネットの名前。
    • Azure Spring Apps ランタイム サービスで使用する既存のサブネットの名前。
    • Azure Log Analytics ワークスペースの名前。
  5. 次のコマンドを実行して、Terraform モジュールを初期化します。

    terraform init
    
  6. 次のコマンドを実行して、Terraform デプロイ プランを作成します。

    terraform plan -out=springcloud.plan
    
  7. 次のコマンドを実行して、Terraform デプロイ プランを適用します。

    terraform apply springcloud.plan
    

デプロイされているリソースを確認する

Azure portal を使用してデプロイされたリソースを確認するか、Azure CLI または Azure PowerShell スクリプトを使用してデプロイされたリソースを一覧表示することができます。

リソースをクリーンアップする

後続のクイック スタートおよびチュートリアルを引き続き実行する場合は、これらのリソースをそのまま残しておくことができます。 この記事で作成したリソースが不要になったら、次のコマンドを使用して削除してください。

terraform destroy -auto-approve

次のステップ

このクイックスタートでは、Terraform を使用して Azure Spring Apps インスタンスを既存の仮想ネットワークにデプロイし、デプロイを検証しました。 Azure Spring Apps の詳細については、以下のリソースに進んでください。