APM 統合と CA 証明書を構成する方法
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
この記事では、Azure Spring Apps Enterprise プランでアプリケーション パフォーマンス モニター (APM) 統合と証明機関 (CA) 証明書を構成する方法について説明します。
Azure Springs Apps Enterprise プランのインスタンスでは、Tanzu Build Service を有効または無効にできます。 詳細については、「Tanzu Build Service を使用する」のセクション「オンデマンドでサービスを構築する」を参照してください。
前提条件
- Azure Spring Apps Enterprise プランのインスタンスが既にプロビジョニングされている。 詳細については、「クイック スタート: Enterprise プランを使用してアプリをビルドし Azure Spring Apps にデプロイする」をご覧ください。
- Azure CLI バージョン 2.49.0 以降。 コマンド
az extension add --name spring
を使用して、Azure Spring Apps をインストールします。
サポートされているシナリオ - APM および CA 証明書の統合
Tanzu Build Service では、Tanzu Partner Buildpacks と、その他のクラウド ネイティブ ビルドパック (GitHub の ca-certificates ビルドパックなど) を統合するためにビルドパックのバインディングを使用します。
現在、Azure Spring Apps がサポートしている APM の種類は次のとおりです。
- ApplicationInsights
- Dynatrace
- AppDynamics
- New Relic
- Elastic APM
Azure Spring Apps は、すべての言語ファミリのビルドパックに対する CA 証明書をサポートしていますが、サポートされている APM のすべてではありません。 次の表は、Tanzu 言語ファミリ ビルドパックでサポートされるバインディングの種類を示しています。
ビルドパック | ApplicationInsights | New Relic | AppDynamics | Dynatrace | Elastic APM |
---|---|---|---|---|---|
Java | ✔ | ✔ | ✔ | ✔ | ✔ |
.NET | ✔ | ✔ | |||
Go | ✔ | ||||
Python | |||||
NodeJS | ✔ | ✔ | ✔ | ✔ | |
Web サーバー | ✔ | ||||
Java ネイティブ イメージ | |||||
PHP | ✔ | ✔ | ✔ |
Web サーバーの使用については、「Web 静的ファイルをデプロイする」を参照してください。
Tanzu Build Service は、Azure Spring Apps Enterprise では既定で有効化されています。 ビルド サービスを無効にすると、アプリケーションのデプロイはできますが、カスタム コンテナー イメージの使用が必要になります。 このセクションでは、ビルド サービスが有効なシナリオと無効なシナリオに関するガイダンスを示します。
サポートされる APM の種類
このセクションでは、統合に使用できる APM でサポートされている言語と必要な環境変数のリストを示します。
Application Insights
サポートされている言語:
- Java
ビルドパックのバインディングに必要な環境変数:
connection-string
その他のサポートされている環境変数については、「Application Insights の概要」を参照してください。
DynaTrace
サポートされている言語:
- Java
- .NET
- Go
- Node.js
- Web サーバー
- PHP
ビルドパックのバインディングに必要な環境変数:
api-url
またはenvironment-id
(ビルド ステップで使用)api-token
(ビルド ステップで使用)TENANT
TENANTTOKEN
CONNECTION_POINT
その他のサポートされている環境変数については、「Dynatrace」を参照してください
New Relic
サポートされている言語:
- Java
- .NET
- Node.js
- PHP
ビルドパックのバインディングに必要な環境変数:
license_key
app_name
その他のサポートされている環境変数については、「New Relic」を参照してください
Elastic
サポートされている言語:
- Java
- Node.js
- PHP
ビルドパックのバインディングに必要な環境変数:
service_name
application_packages
server_url
その他のサポートされている環境変数については、「Elastic」を参照してください
AppDynamics
サポートされている言語:
- Java
- Node.js
ビルドパックのバインディングに必要な環境変数:
agent_application_name
agent_tier_name
agent_node_name
agent_account_name
agent_account_access_key
controller_host_name
controller_ssl_enabled
controller_port
その他のサポートされている環境変数については、「AppDynamics」を参照してください
ビルダーのバインディングは非推奨です
Note
以前は、ビルダーのバインディングによって APM 統合と CA 証明書を管理していました。 ビルダー機能のバインディングは非推奨になっていて、今後削除される予定です。 バインディングで構成した APM を移行するようにお勧めします。 詳細については、「バインディングで構成した APM を移行する」のセクションを参照してください。
ビルド サービスに独自のコンテナー レジストリを使用している場合や、ビルド サービスを無効にしている場合は、ビルダーのバインディング機能は使用できません。
ビルド サービスにマネージド Azure Container Registry を使用している場合、レジストリは下位互換性のために引き続き使用できますが、そのレジストリは今後削除される予定です。
Azure CLI を使用してサービス インスタンスを作成すると、エラー メッセージ Buildpack bindings feature is deprecated, it's not available when your own container registry is used for build service or build service is disabled
が表示されることがあります。 このメッセージは、古いバージョンの Azure CLI を使用していることを示しています。 この問題の解決のために、Azure CLI をアップグレードしてください。 詳細については、「Azure CLI を更新する方法」を参照してください。
アプリのビルドとデプロイ用に APM 統合を構成する
Azure Spring Apps では、次の 2 つの方法で APM を構成できます。
サービス インスタンス レベルで APM の構成を管理し、その構成を参照してアプリのビルドとデプロイにバインドします。 この方法は、APM を構成する際に推奨される方法です。
ビルダーのバインディングによって APM の構成を管理し、そのビルダーを参照してアプリのビルドとデプロイにバインドします。
Note
この方法は、APM を構成する際の古い方法で、現在は非推奨になっています。 バインディングで構成した APM を移行するようにお勧めします。 詳細については、「バインディングで構成した APM を移行する」のセクションを参照してください。
サービス インスタンス レベルで APM の構成を管理し、その構成を参照してアプリのビルドとデプロイにバインドすることで、Azure Spring Apps で APM を構成できるようになりました。 この方法は、APM を構成する際に推奨される方法です。
次のセクションでは、これらの両方の方法に関するガイダンスを示します。
サービス インスタンス レベルで APM を構成する (推奨)
次のセクションで説明するように、APM 構成を作成して、アプリのビルドとデプロイにバインドできます。
Azure Spring Apps で APM 構成を管理する
APM 統合は、Azure portal または Azure CLI を使用して APM 構成のプロパティまたはシークレットを構成することで管理できます。
Note
APM 構成によってプロパティまたはシークレットを構成する場合は、プレフィックスとして APM 名のないキー名を使用します。 たとえば、Dynatrace に DT_
プレフィックスを使用したり、Application Insights に APPLICATIONINSIGHTS_
プレフィックスを使用したりしないでください。 Tanzu APM ビルドパックによって、キー名はプレフィックス付きの元の環境変数名に変換されます。
アプリ名やアプリ レベルなど、一部のプロパティやシークレットをオーバーライドまたは構成する場合は、プレフィックスとして APM 名が付いた元の環境変数を使用して、アプリにデプロイ時に環境変数を設定する必要があります。
APM 構成は、次の手順を使用して表示、追加、編集、または削除します。
Azure portal を開きます。
ナビゲーション ウィンドウで、[APM] を選択します。
APM 構成を作成するために、[追加] 選択します。 APM 構成をグローバルに有効にするには、[グローバルに有効にする] 選択します。 それ以降のすべてのビルドとデプロイでは、APM 構成が自動的に使用されます。
APM 構成を表示または編集するには、その構成の省略記号 (...) ボタンを選択して、[APM の編集] を選択します。
APM 構成を削除するには、その構成の省略記号 (...) ボタンを選択して、[削除] を選択します。 APM 構成は、ビルドまたはデプロイで使用されていると削除できません。
ビルドにバインドされている APM 構成は、次の手順を使用して表示します。
Azure Spring Apps インスタンスの [ビルド サービス] ページに移動します。
ナビゲーション ウィンドウの [設定] セクションで、[APM バインディング] を選択します。
[APM バインディング] ページで、ビルドにバインドされている APM 構成を表示します。
デプロイにバインドされている APM 構成は、次の手順を使用して表示します。
ビルドパックのパラメーター properties
と secrets
の詳細については、「サポートされているシナリオ - APM と CA 証明書の統合」のセクションを参照してください。
アプリのビルドとデプロイにバインドする
マネージド Azure Container Registry を使用するビルド サービスの場合は、次のコマンドを使用してデプロイに APM を統合します。
az spring app deploy \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name <app-name> \
--builder <builder-name> \
--apms <APM-name> \
--artifact-path <path-to-your-JAR-file>
グローバルに APM 構成を有効にすると、それ以降のすべてのビルドとデプロイで、その構成が自動的に使用され、--apms
パラメーターの指定が不要になります。 グローバルに有効な APM 構成をデプロイの際にオーバーライドする場合は、--apms
パラメーターを使用して APM 構成を指定します。
独自のコンテナー レジストリを使用するビルド サービスの場合は、アプリケーションをコンテナー イメージにビルドして、現行または別の Azure Spring Apps Enterprise サービス インスタンスに、そのイメージをデプロイします。
独自のコンテナー レジストリを用意することで、ビルドとデプロイが分離されます。 build コマンドは、ビルダーでビルドを作成または更新する場合に使用できます。その後で、deploy コマンドを使用すると、コンテナー イメージをサービスにデプロイできます。
次のコマンドを使用して、イメージをビルドし、AMP を構成します。
az spring build-service build <create|update> \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name <app-name> \
--builder <builder-name> \
--apms <APM-name> \
--artifact-path <path-to-your-JAR-file>
グローバルに APM 構成を有効にすると、それ以降のすべてのビルドとデプロイで、その構成が自動的に使用され、--apms
パラメーターの指定が不要になります。 グローバルに有効な APM 構成をビルドの際にオーバーライドする場合は、--apms
パラメーターを使用して APM 構成を指定します。
次のコマンドを使用して、以前にビルドしたコンテナー イメージでアプリケーションをデプロイし、APM を構成します。 グローバルに有効な APM 構成を使用することも、--apms
パラメーターを使用して APM 構成を指定することもできます。
az spring app deploy \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name <app-name> \
--container-image <your-container-image> \
--container-registry <your-container-registry> \
--registry-password <your-password> \
--registry-username <your-username> \
--apms <your-APM>
ビルド サービスを無効にすると、アプリケーションはコンテナー イメージによってのみデプロイできるようになります。 詳細については、「カスタム コンテナー イメージを使用してアプリケーションをデプロイする」を参照してください。
Azure Spring Apps Enterprise の複数のインスタンスを使用して、一部のインスタンスではイメージをビルドしてデプロイし、その他のインスタンスではイメージのみをデプロイできます。 以下のシナリオについて考えてみます。
インスタンスが 1 つの場合は、ユーザー コンテナー レジストリでビルド サービスを有効にできます。 その後で、APM または CA 証明書を使用して成果物ファイルまたはソース コードからコンテナー イメージにビルドします。 そうすることで、現在の Azure Spring Apps インスタンスまたはその他のサービス インスタンスにデプロイできます。 詳細については、「Azure Spring Apps Enterprise で多言語アプリをデプロイする方法」のセクション「ポリグロット アプリケーションをビルドしてデプロイする」を参照してください。
ビルド サービスが無効になっている別の例では、レジストリのコンテナー イメージでアプリケーションをデプロイし、APM も利用します。
このシナリオでは、次の例に示すように、APM 構成を指定するために、グローバルに有効な APM 構成を使用することも、--apms
パラメーターを使用することもできます。
az spring app deploy \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name <app-name> \
--container-image <your-container-image> \
--container-registry <your-container-registry> \
--registry-password <your-password> \
--registry-username <your-username> \
--apms <your-APM>
ビルダーのバインディングによって APM を管理する (非推奨)
ビルド サービスで Azure Spring Apps マネージド コンテナー レジストリを使用する場合は、アプリケーションをイメージにビルドしてからデプロイできますが、それは現在の Azure Spring Apps サービス インスタンス内でのみ可能です。
ビルダーのバインディングによって APM 構成を管理する
APM 構成は、ビルダーのバインディングによって管理できます。 詳細については、「Azure Spring Apps でビルダーのバインディングを管理する (非推奨)」のセクションを参照してください。
アプリのビルドとデプロイにバインドする
次のコマンドを使用して、デプロイに APM を統合します。 APM は、ビルダーのバインディングによって構成されます。
az spring app deploy \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name <app-name> \
--builder <builder-name> \
--artifact-path <path-to-your-JAR-file>
サービス インスタンスの作成時に Application Insights を有効にする
サービス インスタンスの作成時に Application Insights を有効にする場合は、次の条件が適用されます。
- ビルド サービスにマネージド Azure Container Registry を使用する場合、Application Insights は既定のビルダーのバインディングにバインドされます。
- ビルド サービスに独自のコンテナー レジストリを使用する場合や、ビルド サービスを無効にしている場合は、Application Insights の既定の APM 構成が作成されます。 既定の APM はグローバルに有効になっていて、それ以降のすべてのビルドとデプロイで自動的に使用されます。
アプリのビルドとデプロイ用に CA 証明書を構成する
Azure Spring Apps では、次の 2 つの方法で CA 証明書を構成できます。
- TLS/SSL 設定でパブリック証明書を管理して、その証明書を参照することでアプリのビルドとデプロイにバインドできます。 この方法は、CA 証明書を構成する際に推奨される方法です。
- TLS/SSL 設定でパブリック証明書を管理して、ビルダーのバインディングによって CA 証明書をバインドできます。 詳細については、「Azure Spring Apps でビルダーのバインディングを管理する (非推奨)」のセクションを参照してください。
Note
この方法は、CA 証明書を構成するための古い方法で、非推奨になっています。 バインディングで構成した CA 証明書を移行するようにお勧めします。 詳細については、「バインディングで構成した CA 証明書を移行する」のセクションを参照してください。
TLS/SSL 設定でパブリック証明書を管理して、その証明書を参照することでアプリのビルドとデプロイにバインドできるようになりました。 この方法は、CA 証明書を構成する際に推奨される方法です。
サービス インスタンス レベルでパブリック証明書を管理する場合は、「Azure Spring Apps のアプリケーションで TLS/SSL 証明書を使用する」のセクション「証明書をインポートする」を参照してください。 その後で、次のセクションで説明するいずれかの方法に従って、アプリのビルドとデプロイに CA 証明書をバインドします。
CA 証明書をアプリのビルドとデプロイにバインドする
CA 証明書をデプロイにバインドする方法の詳細は、「Azure Spring Apps のアプリケーションで TLS/SSL 証明書を使用する」のセクション「証明書を読み込む」を参照してください。 その後で、次の手順を使用してアプリのビルドにバインドします。
ビルド サービスを有効にしてマネージド Azure Container Registry を使用する場合は、次のコマンドを使用して、デプロイに CA 証明書を統合します。
az spring app deploy \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name <app-name> \
--builder <builder-name> \
--build-certificates <CA certificate-name> \
--artifact-path <path-to-your-JAR-file>
ビルド サービスに独自のコンテナー レジストリを使用する場合や、ビルド サービスを無効にする場合は、次のコマンドを使用してビルドに CA 証明書を統合します。
az spring build-service build <create|update> \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name <app-name> \
--builder <builder-name> \
--certificates <CA certificate-name> \
--artifact-path <path-to-your-JAR-file>
アプリのビルドにバインドされた CA 証明書を表示する
ビルドにバインドされた CA 証明書は、次の手順を使用して表示します。
目的のビルドのページに移動します。
ナビゲーション ウィンドウの [設定] セクションで、[証明書のバインディング] を選択します。
[証明書のバインディング] ページで、ビルドにバインドされた CA 証明書を表示します。
ビルダーのバインディングによって CA 証明書をバインドする (非推奨)
CA 証明書は、ca-certificates ビルドパックを使用して、ビルド時と実行時にシステム信頼ストアへの CA 証明書の提供をサポートします。
Azure Spring Apps Enterprise プランでは、次のスクリーンショットに示すように、CA 証明書は、Azure portal の [TLS/SSL 設定] ページの [公開キー証明書] タブを使用します。
CA 証明書は、[バインドの編集] ページで構成できます。 succeeded
証明書は、[CA 証明書] リストに表示されます。
Azure Spring Apps でビルダーのバインディングを管理する (非推奨)
このセクションは、ビルド サービスが有効な Azure Spring Apps Enterprise サービス インスタンスにのみ適用されます。 ビルド サービスを有効にすると、1 つのビルドパックのバインディングは、1 つの APM の種類に対する資格情報の構成か、CA 証明書の種類に対する CA 証明書の構成を意味します。 APM 統合の場合は、前述の手順に従って、APM に必要な環境変数またはシークレットを構成します。
Note
APM バインドの環境変数を構成する場合は、プレフィックスなしのキー名を使います。 たとえば、Dynatrace バインディングに DT_
プレフィックス、Application Insights に APPLICATIONINSIGHTS_
プレフィックスを使用しないでください。 Tanzu APM ビルドパックによって、キー名はプレフィックス付きの元の環境変数名に変換されます。
Azure portal または Azure CLI でビルドパックのバインドを管理できます。
ビルドパックのバインディングは、次の手順を使用して表示します。
Azure portal で、目的の Azure Spring Apps Enterprise サービス インスタンスに移動します。
ナビゲーション ウィンドウで、[ビルド サービス] を選択します。
[バインド] 列の下にある [編集] を選択して、ビルダーに構成されているバインディングを表示します。
[既定のビルダーのバインディングの編集] ページで、バインディングを確認します。
ビルドパックのバインドを作成する
ビルドパック バインドを作成するには、[バインドの編集] ページの [バインドの解除] を選択し、バインドのプロパティを指定して [保存] を選択します。
ビルドパックのバインドを解除する
ビルドパック バインドは、[バインドのバインド解除] コマンドを使用するか、バインドのプロパティを編集することで、バインド解除できます。
[バインドのバインド解除] コマンドを使うには、[バインド済み] ハイパーリンクを選び、[バインドのバインド解除] を選びます。
バインドのプロパティを編集してビルドパックのバインドをバインド解除するには、[バインドの編集] を選び、[バインド解除] を選びます。
バインドをバインド解除すると、バインドの状態は "バインド済み" から "バインドなし" に変わります。
ビルダーのバインディングから APM と CA 証明書を移行する
ビルダーのバインディング機能は非推奨になっていて、今後削除される予定です。 ビルダーのバインドは移行するようにお勧めします。
APM と CA 証明書をバインディングで構成して、次のセクションを使用するとそれらを移行できます。
バインディングで構成した APM を移行する
ほとんどのユース ケースでは、既定のビルダーのバインディングで構成された APM は 1 つのみです。 バインディングで同じ構成の新しい APM 構成を作成して、この APM 構成をグローバルに有効にできます。 それ以降のすべてのビルドとデプロイでは、この構成が自動的に使用されます。 移行には、次の手順を使用します。
次のコマンドを使用して、APM 構成を作成します。
az spring apm create \ --resource-group <resource-group-name> \ --service <Azure-Spring-Apps-instance-name> \ --name <your-APM-name> \ --type <your-APM-type> \ --properties a=b c=d \ --secrets e=f g=h
次のコマンドを使用して、APM 構成をグローバルに有効にします。
az spring apm enable-globally \ --resource-group <resource-group-name> \ --service <Azure-Spring-Apps-instance-name> \ --name <your-APM-name> \
次のコマンドを使用して、新しいグローバルに有効な APM 構成を使用するように、すべてのアプリケーションを再デプロイします。
az spring app deploy \ --resource-group <resource-group-name> \ --service <Azure-Spring-Apps-instance-name> \ --name <app-name> \ --builder <builder-name> \ --artifact-path <path-to-your-JAR-file>
すべてのアプリケーションで新しい APM 構成が機能することを確認します。 すべてが順調に機能している場合は、次のコマンドを使用して、ビルダーの APM バインディングを削除します。
az spring build-service builder buildpack-binding delete \ --resource-group <resource-group-name> \ --service <Azure-Spring-Apps-instance-name> \ --name <your-APM-buildpack-binding-name> \ --builder-name <your-builder-name>
バインディングに複数の APM が構成されている場合は、バインディングで同じ構成の複数の APM 構成を作成して、それが適切な場合は、その APM 構成をグローバルに有効にすることができます。 次のコマンドに示すように、--apms
パラメーターはグローバルに有効な APM をオーバーライドするときに、デプロイメントに APM 構成を指定するために使用します。
az spring app deploy \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name <app-name> \
--builder <builder-name> \
--apms <APM-name> \
--artifact-path <path-to-your-JAR-file>
移行プロセス中に、APM はバインディングと APM 構成の両方で構成されます。 この場合は、APM 構成が有効になり、バインディングは無視されます。
バインディングで構成した CA 証明書を移行する
CA 証明書は、次の手順を使用して移行します。
バインディングで構成した CA 証明書が実行時に使用される場合は、その証明書をアプリケーションに読み込むことができます。 詳細については、「Azure Spring Apps のアプリケーションで TLS/SSL 証明書を使用する」のセクション「証明書を読み込む」を参照してください。
次のコマンドを使用して、CA 証明書を使用するすべてのアプリケーションを再デプロイします。 ビルド時に証明書を使用する場合は、
--build-certificates
パラメーターを使用して、デプロイのビルド時に使用する CA 証明書を指定します。az spring app deploy \ --resource-group <resource-group-name> \ --service <Azure-Spring-Apps-instance-name> \ --name <app-name> \ --builder <builder-name> \ --build-certificates <CA certificate-name> \ --artifact-path <path-to-your-JAR-file>
CA 証明書が、それを使用するすべてのアプリケーションで機能するかどうかを確認します。 すべてが順調に機能している場合は、次のコマンドを使用して、ビルダーの CA 証明書バインディングを削除します。
az spring build-service builder buildpack-binding delete \ --resource-group <resource-group-name> \ --service <Azure-Spring-Apps-instance-name> \ --name <your-CA-certificate-buildpack-binding-name> \ --builder-name <your-builder-name>