在這個教學中,你會將容器應用程式部署到已連接 Container Apps 的 Azure Arc Kubernetes 叢集上。 接著你要驗證配置、DNS、入口、應用程式回應和日誌。
- 透過名稱檢索特定已連接環境。
- 建立一個帶有外部入口的容器應用程式。
- 請確認應用程式的修訂版本及完全合格的網域名稱。
- 向應用程式傳送請求。
- 在 Log Analytics 中查看應用程式日誌(若已設定)。
- 刪除教學應用程式。
必要條件
在開始之前,請確認以下要求:
- 完成 Enable Azure 容器應用程式 on Azure Arc-enabled Kubernetes 後所建立的已連線環境。
- Azure CLI 存取包含已連線環境的訂閱。
- 具備 Azure 權限,可在目標資源群組和已連接的環境中建立容器應用程式。
- 連結環境的資源群組與名稱。
- 從你的工作站到連接環境的入口位址,提供網路和 DNS 存取。
- 可選擇性權限查詢安裝擴充套件時設定的 Log Analytics 工作區。
部署生產環境應用程式前,請先檢視 Azure Arc 上的 Azure 容器應用程式。若應用程式無法配置或無法被存取,請參閱「故障排除 Azure 容器應用程式 on Azure Arc-enabled Kubernetes」。
新增 Azure CLI 擴充功能
在 Azure Cloud Shell 中啟動 Bash 環境。
接著,新增必要的 Azure CLI 擴充功能。
az extension add --name containerapp --upgrade --yes
為應用程式建立資源群組
容器應用程式可以使用與已連接環境不同的資源群組。 設定應用程式資源群組及用於儲存其資源元資料的 Azure 區域。 應用程式容器運行於與連接環境相關的 Kubernetes 叢集中。
APP_RESOURCE_GROUP="my-container-apps-resource-group"
AZURE_LOCATION="eastus"
az group create --name $APP_RESOURCE_GROUP --location $AZURE_LOCATION
打造互聯環境
設定連接環境的資源群組與名稱:
CONNECTED_ENVIRONMENT_RESOURCE_GROUP="<CONNECTED_ENVIRONMENT_RESOURCE_GROUP>"
CONNECTED_ENVIRONMENT_NAME="<CONNECTED_ENVIRONMENT_NAME>"
擷取該特定連接環境並確認其已準備好:
CONNECTED_ENVIRONMENT_ID=$(az containerapp connected-env show \
--resource-group $CONNECTED_ENVIRONMENT_RESOURCE_GROUP \
--name $CONNECTED_ENVIRONMENT_NAME \
--query id \
--output tsv)
az containerapp connected-env show \
--resource-group $CONNECTED_ENVIRONMENT_RESOURCE_GROUP \
--name $CONNECTED_ENVIRONMENT_NAME \
--query "{Id:id,State:properties.provisioningState,Domain:properties.defaultDomain}" \
--output yaml
僅在 State 為 Succeeded 時,才繼續。
建立並驗證應用程式
建立範例應用程式:
CONTAINER_APP_NAME="my-container-app"
az containerapp create \
--resource-group $APP_RESOURCE_GROUP \
--name $CONTAINER_APP_NAME \
--environment $CONNECTED_ENVIRONMENT_ID \
--environment-type connected \
--image mcr.microsoft.com/k8se/quickstart:latest \
--target-port 80 \
--ingress external
等待佈建成功:
CONTAINER_APP_ID=$(az containerapp show \
--resource-group $APP_RESOURCE_GROUP \
--name $CONTAINER_APP_NAME \
--query id \
--output tsv)
az resource wait --ids $CONTAINER_APP_ID --created --timeout 600
az containerapp show \
--resource-group $APP_RESOURCE_GROUP \
--name $CONTAINER_APP_NAME \
--query "{State:properties.provisioningState,Revision:properties.latestReadyRevisionName,FQDN:properties.configuration.ingress.fqdn}" \
--output yaml
APP_FQDN=$(az containerapp show \
--resource-group $APP_RESOURCE_GROUP \
--name $CONTAINER_APP_NAME \
--query properties.configuration.ingress.fqdn \
--output tsv)
只有當 State 是 Succeeded, Revision 且 不是空且 FQDN 包含 connected-environment 域時,才繼續。 測試 DNS 及可達連接環境入口位址的網路應用程式回應:
nslookup $APP_FQDN
curl --fail --show-error "https://$APP_FQDN"
你也可以在瀏覽器中開啟應用程式:
az containerapp browse \
--resource-group $APP_RESOURCE_GROUP \
--name $CONTAINER_APP_NAME
如果 DNS 無法解析、請求逾時,或回應未成功,請看應用程式 入口無法到達。
使用 Log Analytics 取得診斷記錄
注意
此節僅適用於在安裝容器應用程式擴充功能時設定 Log Analytics 時。 如果你沒設定 Log Analytics,請跳過這部分。
打開為容器應用程式擴充功能設定的 Log Analytics 工作區,並選擇日誌。 執行以下查詢以顯示過去 72 小時的紀錄。 初次攝取時間約為10至15分鐘。
let StartTime = ago(72h);
let EndTime = now();
ContainerAppConsoleLogs_CL
| where TimeGenerated between (StartTime .. EndTime)
| where ContainerAppName_s =~ "my-container-app"
Kubernetes 叢集中裝載之所有應用程式的應用程式記錄都會記錄於名為 ContainerAppConsoleLogs_CL 的自訂記錄資料表中的 Log Analytics 工作區。
-
Log_s包含應用程式日誌訊息及容器生命週期訊息。 -
ContainerAppName_s識別容器應用程式。 此欄位用於前一查詢。
您可以在開始使用 Kusto 中深入了解記錄查詢。
整理教學應用程式
刪除範例容器應用程式:
az containerapp delete \
--resource-group $APP_RESOURCE_GROUP \
--name $CONTAINER_APP_NAME \
--yes
如果你只為這個教學建立了應用程式資源群組,且沒有其他資源,請刪除它。
az group delete --name $APP_RESOURCE_GROUP --yes --no-wait
不要刪除已連接的環境、自訂位置、擴充功能或已連接的叢集,因為其他應用程式可能會共享這些資源。