分享方式:


教學課程:在 Azure App Service 中設定自訂容器的側車容器 (預覽)

在本教學課程中,您會在 Azure App Service 中將 OpenTelemetry 收集器當作 Sidecar 容器新增至 Linux 自訂容器應用程式。

在 Azure App Service 中,您可以為每個已啟用 Sidecar 的自訂容器應用程式新增最多 4 個 Sidecar 容器。 Sidecar 容器可讓您將額外的服務和功能部署到容器應用程式,而不需將它們與主要應用程式容器緊密結合。 例如,您可以將監視、記錄、設定和網路服務新增為 Sidecar 容器。 OpenTelemetry 收集器 Sidecar 是這類監視範例之一。

如需 Sidecar 的詳細資訊,請參閱 Sidecar 模式

注意

在預覽期間,必須在應用程式建立時啟用 Sidecar 支援。 目前無法啟用現有應用程式的 Sidecar 支援。

如果您沒有 Azure 訂閱,請在開始之前,先建立 Azure 免費帳戶

1.設定所需的資源

首先,您會建立教學課程所使用的資源 (如需詳細資訊,請參閱 Cloud Shell 概觀)。 它們用於此特定案例,而一般來說 Sidecar 容器不需要。

  1. Azure Cloud Shell 中,執行下列命令:

    git clone https://github.com/Azure-Samples/app-service-sidecar-tutorial-prereqs
    cd app-service-sidecar-tutorial-prereqs
    azd provision
    
  2. 出現提示時,請提供您想要的環境名稱、訂用帳戶和區域。 例如:

    • 環境名稱:my-sidecar-env
    • 訂閱:您的訂閱
    • 區域:(歐洲) 西歐

    當部署完成時,您應該會看到下列輸出:

     APPLICATIONINSIGHTS_CONNECTION_STRING = InstrumentationKey=...;IngestionEndpoint=...;LiveEndpoint=...
    
     Open resource group in the portal: https://portal.azure.com/#@/resource/subscriptions/.../resourceGroups/...
     
  3. 在瀏覽器索引標籤中開啟資源群組連結。您稍後必須使用連接字串。

    注意

    azd provision 使用包含的範本來建立下列 Azure 資源:

2.建立已啟用 Sidecar 的應用程式

  1. 在資源群組的管理頁面中,選取 [建立]

  2. 搜尋 Web 應用程式,然後選取 [建立] 上的向下箭號,然後選取 [Web 應用程式]

    顯示 Azure Marketplace 頁面的螢幕擷取畫面,其中顯示正在搜尋 Web 應用程式且按一下建立 Web 應用程式按鈕。

  3. 如下所示,設定 [基本資料] 面板:

    • 名稱︰唯一的名稱。
    • 發佈容器
    • 作業系統Linux
    • 區域:與您使用 azd provision 選擇的區域相同
    • Linux 方案:新的 App Service 方案

    顯示已醒目提示 Linux 自訂容器應用程式的 Web 應用程式建立精靈和設定的螢幕擷取畫面。

  4. 選取 [容器]。 如下所示,設定 [容器] 面板:

    • Sidecar 支援已啟用
    • 映像來源Azure Container Registry
    • 登錄azd provision 所建立的登錄
    • 映像nginx
    • 標籤最新
    • 連接埠80

    此螢幕擷取畫面顯示容器映像的 Web 應用程式建立精靈和設定,並已醒目提示 Sidecar 支援。

    注意

    這些設定會以不同方式在啟用 Sidecar 的應用程式中設定。 如需詳細資訊,請參閱已啟用 Sidecar 的應用程式差異

  5. 選取 [檢閱 + 建立],然後選取 [建立]

  6. 部署完成後,請選取 [前往資源]

  7. 在新的瀏覽器索引標籤中,瀏覽至 https://<app-name>.azurewebsites.net 並查看預設 Nginx 頁面。

3.新增 Sidecar 容器

在本節中,您會將 Sidecar 容器新增至自訂容器應用程式。

  1. 在應用程式的管理頁面中,從左側功能表選取 [部署中心]

    部署中心會顯示應用程式中的所有容器。 現在,它只有主要容器。

  2. 選取 [新增],然後設定新的容器,如下所示:

    • 名稱otel-collector
    • 映像來源Azure Container Registry
    • 登錄azd provision 所建立的登錄
    • 映像otel-collector
    • 標籤最新
    • 連接埠4317

    連接埠 4317 是範例容器用於接收 OpenTelemetry 資料的預設埠。 您可從位於 localhost:4317 的應用程式中的任何其他容器存取。 這正是 Nginx 容器將資料傳送至 Sidecar 的方式 (請參閱範例 Nginx 映像的 OpenTelemetry 模組設定)。

  3. 選取套用

    此螢幕擷取畫面顯示如何在 Web 應用程式的部署中心設定 Sidecar 容器。

    您現在應會在部署中心看到兩個容器。 主要容器會標示為 [主要],而 Sidecar 容器會標示為 [Sidecar]。 每個應用程式都必須有一個主要容器,但可有多個 Sidecar 容器。

4.設定環境變數

針對範例案例,otel-collector Sidecar 會設定為將 OpenTelemetry 資料匯出至 Azure 監視器,但是需要連接字元串作為環境變數 (請參閱 otel-collector 映像的 OpenTelemetry 組態檔)。

您可藉由設定應用程式設定,為容器 (像是任何 App Service 應用程式) 設定環境變數。 應用程式設定可供應用程式中的所有容器存取。

  1. 在應用程式的管理頁面中,從左側功能表選取 [設定]

  2. 選取 [新增應用程式設定] 並加以設定,以新增應用程式設定,如下所示:

    • 名稱APPLICATIONINSIGHTS_CONNECTION_STRING
    • azd provision 輸出中的連接字串
  3. 選取 [儲存],然後選取 [繼續]

    顯示 Web 應用程式的 [組態] 頁面的螢幕擷取畫面,其中新增了兩項應用程式設定。

注意

某些應用程式設定不適用於已啟用 Sidecar 的應用程式。 如需詳細資訊,請參閱已啟用 Sidecar 的應用程式差異

5.在 Application Insights 中確認

otel-collector Sidecar 現在應該將資料匯出至 Application Insights。

  1. 回到 https://<app-name>.azurewebsites.net 的瀏覽器索引標籤,重新整理頁面數次以產生一些 Web 要求。

  2. 返回資源群組概觀頁面,選取 Application Insights 資源。 您現在應該會在預設圖表中看到一些資料。

    Application Insights 頁面的螢幕擷取畫面,其中顯示預設圖表中的資料。

注意

在此非常常見的監視案例中,Application Insights 就是您可使用的其中一個 OpenTelemetry 目標,例如 Jaeger、Prometheus 和 Zipkin。

清除資源

若不再需要此環境,您可以刪除資源群組、App Service 及所有相關資源。 只要在 Cloud Shell 中複製的存放庫中執行此命令:

azd down

已啟用 Sidecar 的應用程式差異

您會以不同的方式設定已啟用 Sidecar 的應用程式與未啟用 Sidecar 的應用程式。 具體來說,您不會使用應用程式設定來設定主要容器和 Sidecar,而是直接在資源屬性中設定。 下列應用程式設定不適用於已啟用 Sidecar 的應用程式:

  • 登錄驗證設定:DOCKER_REGISTRY_SERVER_URLDOCKER_REGISTRY_SERVER_USERNAMEDOCKER_REGISTRY_SERVER_PASSWORD
  • 容器連接埠:WEBSITES_PORT

更多資源