次の方法で共有


チュートリアル: カスタム コンテナー アプリのサイドカー コンテナーを構成する

このチュートリアルでは、OpenTelemetry コレクターをサイドカー コンテナーとして Azure App Service の Linux カスタム コンテナー アプリに追加する方法について説明します。

App Service のサイドカー コンテナーを使用すると、組み込みまたはカスタムのメイン コンテナーに緊密に結合することなく、追加のサービスと機能を Linux アプリにデプロイできます。 サイドカー コンテナーは、同じ App Service プランのメイン アプリケーション コンテナーと共に実行されます。

App Service の Linux アプリごとに、最大 9 つのサイドカー コンテナーを追加できます。 たとえば、監視、ログ、構成、ネットワーク サービスをサイドカー コンテナーとして追加できます。 OpenTelemetry コレクターのサイドカーは、監視のための一例です。

独自のコードを使用する Linux アプリについては、「チュートリアル: Azure App Service で Linux アプリのサイドカー コンテナーを構成する」を参照してください。

[前提条件]

  • Azure アカウントをお持ちでない場合は、開始する前に無料アカウントを作成してください。

  • このチュートリアルのコマンドは、ブラウザーを使用して Azure サービスを操作するために使用する対話型シェルである Azure Cloud Shell を使用して実行できます。 Cloud Shell を使用するには:

    1. 次の [Cloud Shell の起動 ] ボタンを選択するか、 https://shell.azure.com に移動してブラウザーで Cloud Shell を開きます。

    2. 必要に応じて Azure にサインインし、Cloud Shell の Bash 環境にいることを確認します。

    3. 任意のコード ブロックで [コピー] を選択し、コードを Cloud Shell に貼り付けて実行します。

      このチュートリアルの azd コマンドでは、 Azure Developer CLI を使用します。これは、Azure でのアプリ リソースのプロビジョニングとデプロイを高速化するオープンソース ツールです。

1. チュートリアル リソースを設定する

サンプル リポジトリを複製し、このチュートリアルのリソースを作成するには、Cloud Shell で次のコマンドを実行します。 メッセージが表示されたら、使用する Azure サブスクリプションと Azure リージョンを選択します。

git clone https://github.com/Azure-Samples/app-service-sidecar-tutorial-prereqs
cd app-service-sidecar-tutorial-prereqs
azd env new my-sidecar-env
azd provision

azd provision コマンドは、付属のテンプレートを使用して、次の Azure リソースを含む my-sidecar-env_group という Azure リソース グループを作成します。

  • 次のイメージを持つ 2 つのリポジトリを持つ コンテナー レジストリ
    • OpenTelemetry モジュールを含む nginx イメージ。
    • Azure Monitor にエクスポートするように構成された otel-collector OpenTelemetry コレクター イメージ。
  • Log Analytics ワークスペース。
  • Application Insights コンポーネント。
  • マネージド IDにはユーザーが割り当てたid-my-sidecar-env_groupという名前があります。

デプロイが完了すると、次の例のような出力が表示されます。

Success!

APPLICATIONINSIGHTS_CONNECTION_STRING = InstrumentationKey=aaaaaaaa-0b0b-1c1c-2d2d-333333333333;IngestionEndpoint=https://eastus2-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus2.livediagnostics.monitor.azure.com/;ApplicationId=00001111-aaaa-2222-bbbb-3333cccc4444
Azure container registry name = acro2lc774l6vjgg
Managed identity resource ID = /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/my-sidecar-env_group/providers/Microsoft.ManagedIdentity/userAssignedIdentities/id-my-sidecar-env_group
Managed identity client ID = 00aa00aa-bb11-cc22-dd33-44ee44ee44ee

Open resource group in the portal: https://portal.azure.com/#@/resource/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/my-sidecar-env_group

このチュートリアルの後半で使用する APPLICATIONINSIGHTS_CONNECTION_STRING の値をコピーして保存します。

Open resource group in the portalのリンクを選択して、プロビジョニングされたリソース グループを Azure portal で開きます。

2. サイドカー対応アプリを作成する

Azure portal のリソース グループで、サイドカーをサポートする Linux カスタム コンテナー アプリを作成し、メイン コンテナーを構成します。

  1. Azure portal のリソース グループのページで、[ 作成] を選択します。

  2. [Marketplace] ページで Web アプリを検索し、[Web アプリで作成] タイルの横にある下矢印を選択し、[Web アプリ] を選択します。

    Web アプリが検索され、[Web アプリの作成] ボタンが強調表示されている Azure Marketplace ページを示すスクリーンショット。

  3. [Web アプリの作成] ページの [基本] タブで、次の情報を指定します。

    • 名前: Web アプリの一意の名前を入力します。
    • 発行: [コンテナー] を選択します。
    • オペレーティング システム: Linux を選択 します
    • リージョン: azd provisionに選択したのと同じリージョンを選択します。
    • Linux プラン: 指定された (新規) App Service プランを選択します。

    Linux カスタム コンテナー Web アプリの基本設定を示すスクリーンショット。

  4. 残りの設定はそのままにして、ページの上部にある [コンテナー ] タブを選択します。

  5. [ コンテナー ] タブで、次の情報を指定します。

    • サイドカーのサポート: サイドカーのサポートがオンになっている拡張構成に設定します
    • イメージ ソース: Azure Container Registry を選択します。
    • 名前: メイン が表示されていることを確認します。
    • レジストリ: azd provisionによって作成されたレジストリを選択します。
    • 認証: [マネージド ID] を選択します
    • ID: azd provisionによって作成されたマネージド ID を選択します。
    • 画像: 「nginx」を入力してください。
    • タグ: 最新の情報を入力します。
    • ポート: まだ設定されていない場合 は「80 」と入力します。

    Linux カスタム コンテナー Web アプリのコンテナー設定を示すスクリーンショット。

    これらの設定は、サイドカー対応アプリでは、サイドカーに対して有効になっていないアプリとは異なる方法で構成されます。 詳細については、「 サイドカー対応カスタム コンテナーの相違点」を参照してください。

  6. [確認および作成] を選択し、検証に成功したら [作成] を選択します。

  7. デプロイが完了したら、[リソースに移動] を選択します。

  8. アプリのページで、[ 既定のドメイン] https://<app-name>.azurewebsites.netの横にある URL を新しいブラウザー タブで開き、既定の nginx ページを表示します。

3. サイドカー コンテナーをアプリに追加する

サイドカー コンテナーを Linux カスタム コンテナー アプリに追加します。

  1. Azure ポータルのアプリのページで、左側のナビゲーション メニューで [デプロイメント] の下にある デプロイメント センター を選択します。 [Deployment Center] ページには、アプリ内のすべてのコンテナーが表示され、現在はメイン コンテナーのみが表示されます。

  2. 追加>カスタムコンテナを選択します。

  3. [ コンテナーの追加 ] ウィンドウで、次の情報を入力します。

    • 名前: 「otel-collector」と入力します
    • イメージ ソース: Azure Container Registry を選択します
    • レジストリ: azd provisionによって作成されたレジストリを選択します。
    • 認証: [マネージド ID] を選択します
    • ID: [ ユーザー割り当て済み] で、 azd provisionによって作成されたマネージド ID を選択します。
    • 画像: otel-collector を入力します。
    • 画像タグ: 最新の情報を入力します。
    • ポート: 「4317」と入力します
  4. [ 適用] を選択します。

    Web アプリのデプロイ センターでサイドカー コンテナーを構成する方法を示すスクリーンショット。

デプロイ センターには、 MainSidecar というラベルが付いた 2 つのコンテナーが存在するようになりました。 アプリには 1 つのメイン コンテナーが必要であり、複数のサイドカー コンテナーを持つことができます。

4. 環境変数を構成する

サンプル シナリオでは、接続文字列を環境変数として使用して OpenTelemetry データを Azure Monitor にエクスポートするように、 otel-collector サイドカーが構成されています。 詳細については、 otel-collector イメージの OpenTelemetry 構成ファイルを参照してください。

アプリの アプリ設定 を構成して、コンテナーの環境変数を構成します。 アプリ設定は、アプリ内のすべてのコンテナーからアクセスできます。

  1. Azure portal のアプリのページで、左側のナビゲーション メニューの [設定][環境変数] を選択します。

  2. [環境変数] ページの [アプリ設定] タブで、[追加] を選択します。

  3. [アプリケーション設定の 追加/編集] ウィンドウで、次の値を入力します。

    • 名前: APPLICATIONINSIGHTS_CONNECTION_STRING
    • : azd provisionの出力からのAPPLICATIONINSIGHTS_CONNECTION_STRINGの値。 この値は、リソース グループの Application Insight リソースの [概要] ページでも接続文字列として見つけることができます。
  4. [ 適用] を選択し、もう一度 [適用 ] を選択して、[ 確認] を選択します。 APPLICATIONINSIGHTS_CONNECTION_STRINGアプリ設定が [アプリ設定] タブに表示されるようになりました。

    2 つのアプリ設定が追加された Web アプリの [構成] ページを示すスクリーンショット。

一部のアプリ設定は、サイドカー対応アプリには適用されません。 詳細については、「 サイドカー対応カスタム コンテナーの相違点」を参照してください。

5. Application Insights で検証する

otel-collectorサイドカーは、Application Insights にデータをエクスポートする必要があります。

  1. 新しいブラウザー タブでアプリに移動し、ページを数回更新して、いくつかの Web 要求を生成します。

  2. Azure portal のリソース グループ ページで、 Application Insights リソースを選択します。 Application Insights の [概要 ] ページの既定のグラフにデータがいくつか表示されます。

    既定のグラフのデータを示す [Application Insights] ページのスクリーンショット。

この一般的な監視シナリオでは、Application Insights は、Jaeger、Prometheus、Zipkin など、使用できる OpenTelemetry ターゲットの 1 つに過ぎません。

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

このチュートリアル用に作成した環境が不要になったら、リソース グループを削除すると、アプリ サービスとすべての関連リソースが削除されます。 Cloud Shell の複製されたリポジトリで次のコマンドを実行します。

azd down