教學課程:在 Azure App 服務 中設定自定義容器的 Sidecar 容器 (預覽)
在本教學課程中,您會在 Azure App 服務 中,將OpenTelemetry收集器新增為Sidecar容器至Linux自定義容器應用程式。
在 Azure App 服務 中,您可以為每個已啟用側車的自定義容器應用程式新增最多 4 個側車容器。 Sidecar 容器可讓您將額外的服務和功能部署到容器應用程式,而不需要將它們緊密結合到主要應用程式容器。 例如,您可以將監視、記錄、設定和網路服務新增為側車容器。 OpenTelemetry 收集器側車是這類監視範例之一。
如需側車的詳細資訊,請參閱 Sidecar 模式。
注意
在預覽期間,必須在應用程式建立時啟用 Sidecar 支援。 目前無法啟用現有應用程式的側車支援。
如果您沒有 Azure 訂閱,請在開始之前,先建立 Azure 免費帳戶。
1.設定所需的資源
首先,您會建立教學課程使用的資源(如需詳細資訊,請參閱 Cloud Shell 概觀)。 它們用於此特定案例,而且一般不需要側車容器。
在 Azure Cloud Shell 中,執行下列命令:
git clone https://github.com/Azure-Samples/app-service-sidecar-tutorial-prereqs cd app-service-sidecar-tutorial-prereqs azd provision
出現提示時,請提供您想要的環境名稱、訂用帳戶和區域。 例如:
- 環境名稱: my-sidecar-env
- 訂閱:您的訂閱
- 地區: (歐洲)西歐
部署完成時,您應該會看到下列輸出:
APPLICATIONINSIGHTS_CONNECTION_STRING = InstrumentationKey=...;IngestionEndpoint=...;LiveEndpoint=... Open resource group in the portal: https://portal.azure.com/#@/resource/subscriptions/.../resourceGroups/...
在瀏覽器索引標籤開啟資源群組連結。您稍後必須使用 連接字串。
注意
azd provision
會使用包含的範本來建立下列 Azure 資源:- 資源群組
- 部署兩個 映像的容器登錄 :
- 具有 OpenTelemetry 模組的 Nginx 影像。
- OpenTelemetry 收集器映射,設定為匯出至 Azure 監視器。
- Log Analytics 工作區
- Application Insights 元件
2.建立已啟用側車的應用程式
在資源群組的管理頁面中,選取 [ 建立]。
搜尋 Web 應用程式,然後選取 [建立] 上的向下箭號,然後選取 [Web 應用程式]。
設定 [ 基本] 面板,如下所示:
- 名稱:唯一名稱
- 發佈: 容器
- 操作系統: Linux
- 區域:與您選擇的區域相同
azd provision
- Linux 方案:新的 App Service 方案
選取 [容器]。 設定 容器 面板,如下所示:
- Sidecar 支援: 已啟用
- 映射來源: Azure Container Registry
- 登錄:所建立的登錄
azd provision
- 影像: nginx
- 標籤:最新
- 埠:80
注意
這些設定會以不同方式在啟用側車的應用程式中設定。 如需詳細資訊,請參閱 啟用側車的應用程式差異。
選取 [檢閱 + 建立],然後選取 [建立]。
部署完成後,請選取 [移至資源]。
在新的瀏覽器索引標籤中,流覽至
https://<app-name>.azurewebsites.net
並查看預設的 Nginx 頁面。
3.新增側車容器
在本節中,您會將 Sidecar 容器新增至您的自定義容器應用程式。
在應用程式的管理頁面中,從左側功能表中選取 [部署中心]。
部署中心會顯示應用程式中的所有容器。 現在,它只有主要容器。
選取 [新增 ] 並設定新的容器,如下所示:
- 名稱: 收集器
- 映射來源: Azure Container Registry
- 登錄:所建立的登錄
azd provision
- 圖片: 阿萊托收集器
- 標籤:最新
- 埠:4317
埠 4317 是範例容器用來接收 OpenTelemetry 數據的預設埠。 可從應用程式中
localhost:4317
的任何其他容器存取。。 這正是 Nginx 容器將數據傳送至 Sidecar 的方式(請參閱 範例 Nginx 映射的 OpenTelemetry 模組組態)。選取套用。
您現在應該會在部署中心看到兩個容器。 主要容器標示 為Main,側車容器標示 為Sidecar。 每個應用程式都必須有一個主要容器,但可以有多個側車容器。
4.設定環境變數
針對範例案例,anchor-collector sidecar 已設定為將 OpenTelemetry 數據匯出至 Azure 監視器,但它需要 連接字串 作為環境變數(請參閱 data-collector 映射的 OpenTelemetry 組態檔)。
您可以藉由 設定應用程式設定,為容器設定環境變數,例如任何 App Service 應用程式。 應用程式設定可供應用程式中的所有容器存取。
在應用程式的管理頁面中,從左側功能表中選取 [ 設定]。
選取 [新增應用程式] 設定並加以設定,以新增應用程式設定 ,如下所示:
- 名稱: APPLICATIONINSIGHTS_CONNECTION_STRING
- 值:輸出中的 連接字串
azd provision
選取 [ 儲存],然後選取 [ 繼續]。
注意
某些應用程式設定不適用於已啟用側車的應用程式。 如需詳細資訊,請參閱 側車應用程式的差異
5.在 Application Insights 中驗證
收集器側車現在應該將數據導出至 Application Insights。
回到的瀏覽器
https://<app-name>.azurewebsites.net
索引標籤中,重新整理頁面幾次,以產生一些 Web 要求。返回資源群組概觀頁面,選取 Application Insights 資源。 您現在應該會在預設圖表中看到一些數據。
注意
在此非常常見的監視案例中,Application Insights 只是您可以使用的其中一個 OpenTelemetry 目標,例如 Jaeger、Prometheus 和 Zipkin。
清除資源
當您不再需要環境時,可以刪除資源群組、App Service 和所有相關資源。 只要在 Cloud Shell 中,在複製的存放庫中執行此命令:
azd down
啟用側車的應用程式差異
您可以設定已啟用 Sidecar 的應用程式,與未啟用側車的應用程式不同。 具體來說,您不會使用應用程式設定來設定主要容器和側車,而是直接在資源屬性中設定。 這些應用程式設定不適用於已啟用側車的應用程式:
- 登入驗證設定:
DOCKER_REGISTRY_SERVER_URL
、DOCKER_REGISTRY_SERVER_USERNAME
和DOCKER_REGISTRY_SERVER_PASSWORD
。 - 容器埠:
WEBSITES_PORT