Share via


APM 統合と CA 証明書を構成する方法

Note

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

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

この記事では、Azure Spring Apps Enterprise プランでアプリケーション パフォーマンス モニター (APM) 統合と証明機関 (CA) 証明書を構成する方法について説明します。

Azure Springs Apps Enterprise プランのインスタンスでは、Tanzu Build Service を有効または無効にできます。 詳細については、「Tanzu Build Service を使用する」のセクション「オンデマンドでサービスを構築する」を参照してください。

前提条件

サポートされているシナリオ - 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 構成を作成して、アプリのビルドとデプロイにバインドできます。

Azure Spring Apps で APM 構成を管理する

APM 統合は、Azure portal または Azure CLI を使用して APM 構成のプロパティまたはシークレットを構成することで管理できます。

Note

APM 構成によってプロパティまたはシークレットを構成する場合は、プレフィックスとして APM 名のないキー名を使用します。 たとえば、Dynatrace に DT_ プレフィックスを使用したり、Application Insights に APPLICATIONINSIGHTS_ プレフィックスを使用したりしないでください。 Tanzu APM ビルドパックによって、キー名はプレフィックス付きの元の環境変数名に変換されます。

アプリ名やアプリ レベルなど、一部のプロパティやシークレットをオーバーライドまたは構成する場合は、プレフィックスとして APM 名が付いた元の環境変数を使用して、アプリにデプロイ時に環境変数を設定する必要があります。

APM 構成は、次の手順を使用して表示、追加、編集、または削除します。

  1. Azure portal を開きます。

  2. ナビゲーション ウィンドウで、[APM] を選択します。

  3. APM 構成を作成するために、[追加] 選択します。 APM 構成をグローバルに有効にするには、[グローバルに有効にする] 選択します。 それ以降のすべてのビルドとデプロイでは、APM 構成が自動的に使用されます。

    [追加] ボタンが強調表示されている APM 構成ページが表示された Azure portal のスクリーンショット。

  4. APM 構成を表示または編集するには、その構成の省略記号 (...) ボタンを選択して、[APM の編集] を選択します。

    [APM の編集] オプションが選択されている APM 構成ページが表示された Azure portal のスクリーンショット。

  5. APM 構成を削除するには、その構成の省略記号 (...) ボタンを選択して、[削除] を選択します。 APM 構成は、ビルドまたはデプロイで使用されていると削除できません。

    [削除] ボタンが強調表示されている APM 構成ページが表示された Azure portal のスクリーンショット。

ビルドにバインドされている APM 構成は、次の手順を使用して表示します。

  1. Azure Spring Apps インスタンスの [ビルド サービス] ページに移動します。

    現在のビルドが一覧に表示されている [サービスのビルド] ページが表示された Azure portal のスクリーンショット。

  2. ナビゲーション ウィンドウの [設定] セクションで、[APM バインディング] を選択します。

  3. [APM バインディング] ページで、ビルドにバインドされている APM 構成を表示します。

    ビルドにバインドされた APM 構成が表示された [APM バインド] ページのスクリーンショット。

デプロイにバインドされている APM 構成は、次の手順を使用して表示します。

  1. 目的のアプリケーションのページに移動します。

  2. ナビゲーション ウィンドウの [設定] セクションで、[APM バインディング] を選択します。

  3. [APM バインディング] ページで、デプロイにバインドされている APM 構成を表示します。

    デプロイにバインドされた APM 構成が表示された [APM バインド] ページのスクリーンショット。

ビルドパックのパラメーター propertiessecrets の詳細については、「サポートされているシナリオ - 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 証明書は、次の手順を使用して表示します。

  1. 目的のビルドのページに移動します。

    現在のビルドが一覧に表示されている [サービスのビルド] ページが表示された Azure portal のスクリーンショット。

  2. ナビゲーション ウィンドウの [設定] セクションで、[証明書のバインディング] を選択します。

  3. [証明書のバインディング] ページで、ビルドにバインドされた CA 証明書を表示します。

    ビルドにバインドされた CA 証明書が表示された [証明書のバインド] ページのスクリーンショット。

ビルダーのバインディングによって CA 証明書をバインドする (非推奨)

CA 証明書は、ca-certificates ビルドパックを使用して、ビルド時と実行時にシステム信頼ストアへの CA 証明書の提供をサポートします。

Azure Spring Apps Enterprise プランでは、次のスクリーンショットに示すように、CA 証明書は、Azure portal の [TLS/SSL 設定] ページの [公開キー証明書] タブを使用します。

TLS/SSL 設定ページの [公開キー証明書] セクションが表示された Azure portal のスクリーンショット。

CA 証明書は、[バインドの編集] ページで構成できます。 succeeded 証明書は、[CA 証明書] リストに表示されます。

[CA 証明書のバインドの編集] パネルが開いている [既定のビルダーのバインドの編集] ページが表示された Azure portal のスクリーンショット。

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 でビルドパックのバインドを管理できます。

ビルドパックのバインディングは、次の手順を使用して表示します。

  1. Azure portal で、目的の Azure Spring Apps Enterprise サービス インスタンスに移動します。

  2. ナビゲーション ウィンドウで、[ビルド サービス] を選択します。

  3. [バインド] 列の下にある [編集] を選択して、ビルダーに構成されているバインディングを表示します。

    選択されたビルダーの [バインドの編集] リンクが強調表示された [サービスのビルド] ページが表示された Azure portal のスクリーンショット。

  4. [既定のビルダーのバインディングの編集] ページで、バインディングを確認します。

    バインドの種類とそれぞれの状態が一覧表示されている [既定のビルダーのバインドの編集] ページが表示された Azure portal のスクリーンショット。

ビルドパックのバインドを作成する

ビルドパック バインドを作成するには、[バインドの編集] ページの [バインドの解除] を選択し、バインドのプロパティを指定して [保存] を選択します。

ビルドパックのバインドを解除する

ビルドパック バインドは、[バインドのバインド解除] コマンドを使用するか、バインドのプロパティを編集することで、バインド解除できます。

[バインドのバインド解除] コマンドを使うには、[バインド済み] ハイパーリンクを選び、[バインドのバインド解除] を選びます。

選択されたバインドの種類の [バインド解除] オプションが強調表示された、Azure portal の [既定のビルダーのバインドの編集] ページのスクリーンショット。

バインドのプロパティを編集してビルドパックのバインドをバインド解除するには、[バインドの編集] を選び、[バインド解除] を選びます。

[バインド解除] ボタンが強調表示された [バインドの編集] ページが表示された Azure portal のスクリーンショット。

バインドをバインド解除すると、バインドの状態は "バインド済み" から "バインドなし" に変わります。

ビルダーのバインディングから APM と CA 証明書を移行する

ビルダーのバインディング機能は非推奨になっていて、今後削除される予定です。 ビルダーのバインドは移行するようにお勧めします。

APM と CA 証明書をバインディングで構成して、次のセクションを使用するとそれらを移行できます。

バインディングで構成した APM を移行する

ほとんどのユース ケースでは、既定のビルダーのバインディングで構成された APM は 1 つのみです。 バインディングで同じ構成の新しい APM 構成を作成して、この APM 構成をグローバルに有効にできます。 それ以降のすべてのビルドとデプロイでは、この構成が自動的に使用されます。 移行には、次の手順を使用します。

  1. 次のコマンドを使用して、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
    
  2. 次のコマンドを使用して、APM 構成をグローバルに有効にします。

    az spring apm enable-globally \
        --resource-group <resource-group-name> \
        --service <Azure-Spring-Apps-instance-name> \
        --name <your-APM-name> \
    
  3. 次のコマンドを使用して、新しいグローバルに有効な 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>
    
  4. すべてのアプリケーションで新しい 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 証明書は、次の手順を使用して移行します。

  1. バインディングで構成した CA 証明書が実行時に使用される場合は、その証明書をアプリケーションに読み込むことができます。 詳細については、「Azure Spring Apps のアプリケーションで TLS/SSL 証明書を使用する」のセクション「証明書を読み込む」を参照してください。

  2. 次のコマンドを使用して、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>
    
  3. 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>
    

次のステップ