クイックスタート: Terraform を使用して Azure Spring Apps をプロビジョニングする
Note
Basic、Standard、および 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/16、172.30.0.0/16、172.31.0.0/16、192.0.2.0/24 を使用することはできません。 また、クラスターは、クラスターの仮想ネットワーク アドレス範囲に含まれる IP 範囲を使用することもできません。
- 仮想ネットワークに付与されたサービスのアクセス許可。 Azure Spring Apps リソース プロバイダーには、さらなるデプロイとメンテナンスを目的として仮想ネットワーク上に専用かつ動的なサービス プリンシパルを許可するために、仮想ネットワークに対する
User Access Administrator
およびNetwork Contributor
アクセス許可が必要です。 手順と詳細については、「仮想ネットワークに Azure Spring Apps をデプロイする」の「仮想ネットワークにサービス アクセス許可を付与する」セクションを参照してください。 - Azure Firewall またはネットワーク仮想アプライアンス (NVA) を使用している場合は、次の前提条件も満たす必要があります。
- ネットワークと完全修飾ドメイン名 (FQDN) の規則。 詳細については、「仮想ネットワークの要件」を参照してください。
- 各サービス ランタイムと Spring アプリケーション サブネットに適用される一意のユーザー定義ルート (UDR)。 UDR の詳細については、「仮想ネットワーク トラフィックのルーティング」を参照してください。 Azure Spring Apps クラスターをデプロイする前に、UDR に NVA を宛先とする 0.0.0.0/0 のルートを構成しておく必要があります。 詳細については、「仮想ネットワークに Azure Spring Apps をデプロイする」の「独自のルート テーブルを使用する」セクションを参照してください。
- ターゲット サブスクリプションで初めて 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 プランを適用するには、次の手順を実施します。
Standard プランまたは Enterprise プランの variables.tf ファイルをローカルに保存し、エディターで開きます。
ファイルを編集して、次の値を追加します。
デプロイ先の Azure アカウントのサブスクリプション ID。
「リージョン別の利用可能な製品」で示されている、Azure Spring Apps が利用可能なリージョンからのデプロイの場所。 場所名の短い形式が必要です。 この値を取得するには、次のコマンドを使用して Azure の場所の一覧を生成し、選択したリージョンの [名前] の値を検索します。
az account list-locations --output table
ファイルを編集して、次の新しいデプロイ情報を追加します。
- デプロイ先のリソース グループの名前。
- Azure Spring Apps のデプロイで選択した名前。
- Application Insights リソースに対して選択した名前。
- Azure Spring Apps バックエンド インフラストラクチャをホストするために使用される 3 つの CIDR 範囲 (少なくとも /16)。 CIDR 範囲は、ターゲット サブネット内の既存の CIDR 範囲と重複してはいけません
- タグをサポートするすべてのリソースにタグとして適用されるキーと値のペア。 詳細については、「タグを使用して Azure リソースと整理階層を整理する」を参照してください
ファイルを編集して、次の既存のインフラストラクチャ情報を追加します。
- 既存の仮想ネットワークが存在するリソース グループの名前。
- 既存のスコープ仮想ネットワークの名前。
- Azure Spring Apps アプリケーション サービスで使用する既存のサブネットの名前。
- Azure Spring Apps ランタイム サービスで使用する既存のサブネットの名前。
- Azure Log Analytics ワークスペースの名前。
次のコマンドを実行して、Terraform モジュールを初期化します。
terraform init
次のコマンドを実行して、Terraform デプロイ プランを作成します。
terraform plan -out=springcloud.plan
次のコマンドを実行して、Terraform デプロイ プランを適用します。
terraform apply springcloud.plan
デプロイされているリソースを確認する
Azure portal を使用してデプロイされたリソースを確認するか、Azure CLI または Azure PowerShell スクリプトを使用してデプロイされたリソースを一覧表示することができます。
リソースをクリーンアップする
後続のクイック スタートおよびチュートリアルを引き続き実行する場合は、これらのリソースをそのまま残しておくことができます。 この記事で作成したリソースが不要になったら、次のコマンドを使用して削除してください。
terraform destroy -auto-approve
次のステップ
このクイックスタートでは、Terraform を使用して Azure Spring Apps インスタンスを既存の仮想ネットワークにデプロイし、デプロイを検証しました。 Azure Spring Apps の詳細については、以下のリソースに進んでください。
- 次のサンプル アプリケーションの 1 つを、次の場所からデプロイします。
- Azure Spring Apps でカスタム ドメインを使用する。
- Azure Application Gateway を使用して Azure Spring Apps でアプリケーションをインターネットに公開します。 詳細については、「仮想ネットワーク内のエンドツーエンド TLS を使用してアプリケーションを公開する」を参照してください。
- Microsoft Azure Well-Architected Framework に基づいた、セキュリティで保護されたエンドツーエンドの Azure Spring Apps の参照アーキテクチャを参照してください。