Compartilhar via

快速入门:使用命令行部署现有容器映像

通过Azure Container Apps服务,可以在无服务器平台上运行微服务和容器化应用程序。 使用容器应用,你可以享受运行容器的好处,同时无需手动配置云基础结构和复杂容器业务流程协调程序。

本文演示如何将现有容器部署到Azure Container Apps。

注意事项

通过注册表用户名和密码支持专用注册表授权。

先决条件

安装

若要从 CLI 登录到Azure,请运行以下命令,并按照提示完成身份验证过程。

az cloud set -n AzureChinaCloud
az login
# az cloud set -n AzureCloud   //means return to Public Azure.

为了确保运行最新版本的 CLI,请运行升级命令。

az upgrade

接下来,安装或更新 CLI 的 Azure Container Apps 扩展。

如果在 PowerShell 中的 az containerapp 模块中运行 Azure CLI 或 cmdlet 中的 Az.App 命令时收到有关缺少参数的错误,请确保安装了最新版本的 Azure Container Apps 扩展。

az extension add --name containerapp --upgrade

注意事项

从 2024 年 5 月开始,Azure CLI扩展默认不再启用预览功能。 若要访问容器应用程序的预览功能,请使用 --allow-preview true 安装容器应用程序扩展。

az extension add --name containerapp --upgrade --allow-preview true

现在已安装当前扩展或模块,接下来请注册 Microsoft.AppMicrosoft.OperationalInsights 命名空间。

az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights

设置环境变量。

设置以下环境变量。 将 <placeholders> 替换为你自己的值。

RESOURCE_GROUP="<new-resource-group>"
LOCATION="<location>"
CONTAINERAPPS_ENVIRONMENT="<containerapps-environment>"

创建Azure资源组

创建一个资源组来组织与你的容器应用部署相关的服务。

az group create \
  --name $RESOURCE_GROUP \
  --location $LOCATION

创建环境

Azure Container Apps中的环境围绕一组容器应用创建安全边界。 部署到同一环境的容器应用部署在同一容器网络中,并将日志写入同一日志分析工作区。

若要创建环境,请运行以下命令:

az containerapp env create \
  --name $CONTAINERAPPS_ENVIRONMENT \
  --resource-group $RESOURCE_GROUP \
  --location "$LOCATION"

创建容器应用

创建环境后,可以部署第一个容器应用。

  1. 设置环境变量。

    <PLACEHOLDERS> 替换为你自己的值。 你的用户主体名称通常采用电子邮件地址格式(例如 username@domain.com)。

    CONTAINER_APP_NAME=my-container-app
    KEY_VAULT_NAME=my-key-vault
    USER_PRINCIPAL_NAME=<USER_PRINCIPAL_NAME>
    SECRET_NAME=my-secret-name
    CONTAINER_IMAGE_NAME=<CONTAINER_IMAGE_NAME>
    REGISTRY_SERVER=<REGISTRY_SERVER>
    REGISTRY_USERNAME=<REGISTRY_USERNAME>
    
  2. 创建密钥库。

    使用 Azure Key Vault 等服务来存储容器注册表密码可始终确保这些值的安全。 本节中的步骤演示如何创建key vault、将容器注册表密码存储在Key Vault中,然后检索代码中使用的密码。

    az keyvault create --name $KEY_VAULT_NAME --resource-group $RESOURCE_GROUP
    
  3. 授予用户帐户管理密钥库中机密的权限。

    KEY_VAULT_ID=$(az keyvault show --name $KEY_VAULT_NAME --query id --output tsv)
    az role assignment create --role "Key Vault Secrets Officer" --assignee "$USER_PRINCIPAL_NAME" --scope "$KEY_VAULT_ID"
    
  4. 将容器注册表密码存储在key vault中。

    <REGISTRY_PASSWORD> 替换为自己的值。

    az keyvault secret set --vault-name $KEY_VAULT_NAME --name $SECRET_NAME --value "<REGISTRY_PASSWORD>"
    
  5. 从key vault检索容器注册表密码。

    REGISTRY_PASSWORD=$(az keyvault secret show --name $SECRET_NAME --vault-name $KEY_VAULT_NAME --query value --output tsv)
    
  6. 将容器映像部署到Azure Container Apps。

    az containerapp create \
      --name $CONTAINER_APP_NAME \
      --location $LOCATION \
      --resource-group $RESOURCE_GROUP \
      --image $CONTAINER_IMAGE_NAME \
      --environment $CONTAINERAPPS_ENVIRONMENT \
      --registry-server $REGISTRY_SERVER \
      --registry-username $REGISTRY_USERNAME \
      --registry-password $REGISTRY_PASSWORD
    

    如果已在容器应用上启用了入口,可以将 --query properties.configuration.ingress.fqdn 添加到 create 命令以返回应用程序的公共 URL。

  1. 设置环境变量。

    CONTAINER_APP_NAME=my-container-app
    CONTAINER_IMAGE_NAME=mcr.microsoft.com/k8se/quickstart:latest
    
  2. 将容器映像部署到Azure Container Apps。

    az containerapp create \
      --image $CONTAINER_IMAGE_NAME \
      --name $CONTAINER_APP_NAME \
      --resource-group $RESOURCE_GROUP \
      --environment $CONTAINERAPPS_ENVIRONMENT
    

    如果已在容器应用上启用了入口,可以将 --query properties.configuration.ingress.fqdn 添加到 create 命令以返回应用程序的公共 URL。


验证部署

若要验证部署是否成功,可以查询 Log Analytics 工作区。 在部署后,分析结果第一次到达可能需要等待几分钟,然后你才能查询日志。 这取决于容器应用中实现的控制台日志记录。

使用以下命令查看控制台日志消息。

LOG_ANALYTICS_WORKSPACE_CLIENT_ID=`az containerapp env show --name $CONTAINERAPPS_ENVIRONMENT --resource-group $RESOURCE_GROUP --query properties.appLogsConfiguration.logAnalyticsConfiguration.customerId --out tsv`

az monitor log-analytics query \
  --workspace $LOG_ANALYTICS_WORKSPACE_CLIENT_ID \
  --analytics-query "ContainerAppConsoleLogs_CL | where ContainerAppName_s == $CONTAINER_APP_NAME | project ContainerAppName_s, Log_s, TimeGenerated" \
  --out table

清理资源

如果你不打算继续使用此应用程序,请运行以下命令以删除资源组以及本快速入门中创建的所有资源。

注意

以下命令删除指定的资源组及其包含的所有资源。 如果指定的资源组中存在本快速入门范围外的资源,这些资源也会被删除。

az group delete --name $RESOURCE_GROUP

提示

遇到问题? 请通过在 Azure Container Apps 存储库中创建议题,让我们在 GitHub 上知晓。

后续步骤