教程 - 部署第一个容器应用

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

在本教程中,你将创建一个安全的容器应用环境并部署你的第一个容器应用。

注意

你还可以按照快速入门:使用 containerapp up 部署第一个容器应用程序一文中的说明,使用 az containerapp up 部署此应用程序。

az containerapp up 命令是使用单个命令生成应用并将其部署到 Azure 容器应用的快速便捷的方法。 但是,它不会为容器应用提供相同级别的自定义。

先决条件

具有活动订阅的 Azure 帐户。

如果没有帐户,可以免费创建一个帐户。

安装 Azure CLI。

设置

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

Bash

PowerShell

az cloud set -n AzureChinaCloud

az login

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

Connect-AzAccount -Environment AzureChinaCloud

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

Bash

PowerShell

az upgrade

Install-Module -Name Az -Scope CurrentUser -Repository PSGallery -Force

忽略有关当前正在使用的模块的任何警告。

接下来,安装或更新适用于 CLI 的 Azure 容器应用扩展。

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

Bash

PowerShell

az extension add --name containerapp --upgrade

注意

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

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

Install-Module -Name Az.App

请确保将 Az.App 模块更新到最新版本。

Update-Module -Name Az.App

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

Bash

PowerShell

az provider register --namespace Microsoft.App

az provider register --namespace Microsoft.OperationalInsights

Register-AzResourceProvider -ProviderNamespace Microsoft.App

Register-AzResourceProvider -ProviderNamespace Microsoft.OperationalInsights

设置环境变量。

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

Bash

PowerShell

RESOURCE_GROUP=""

LOCATION=""

CONTAINERAPPS_ENVIRONMENT=""

$ResourceGroupName = ''

$Location = ''

$ContainerAppsEnvironment = ''

创建 Azure 资源组

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

Bash

PowerShell

az group create \

--name $RESOURCE_GROUP \

--location "$LOCATION"

New-AzResourceGroup -Location $Location -Name $ResourceGroupName

创建环境

Azure 容器应用中的环境围绕一组容器应用创建安全边界。 部署到相同环境的容器应用部署在同一虚拟网络中,并将日志写入同一个 Log Analytics 工作区。

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

Bash

PowerShell

az containerapp env create \

--name $CONTAINERAPPS_ENVIRONMENT \

--resource-group $RESOURCE_GROUP \

--location "$LOCATION"

容器应用环境需要 Log Analytics 工作区。 以下命令创建 Log Analytics 工作区,并将工作区 ID 和主共享密钥保存到环境变量中。

$WorkspaceArgs = @{

Name = 'myworkspace'

ResourceGroupName = $ResourceGroupName

Location = $Location

PublicNetworkAccessForIngestion = 'Enabled'

PublicNetworkAccessForQuery = 'Enabled'

}

New-AzOperationalInsightsWorkspace @WorkspaceArgs

$WorkspaceId = (Get-AzOperationalInsightsWorkspace -ResourceGroupName $ResourceGroupName -Name $WorkspaceArgs.Name).CustomerId

$WorkspaceSharedKey = (Get-AzOperationalInsightsWorkspaceSharedKey -ResourceGroupName $ResourceGroupName -Name $WorkspaceArgs.Name).PrimarySharedKey

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

$EnvArgs = @{

EnvName = $ContainerAppsEnvironment

ResourceGroupName = $ResourceGroupName

Location = $Location

AppLogConfigurationDestination = 'log-analytics'

LogAnalyticConfigurationCustomerId = $WorkspaceId

LogAnalyticConfigurationSharedKey = $WorkspaceSharedKey

}

New-AzContainerAppManagedEnv @EnvArgs

创建容器应用

创建环境后,可以部署第一个容器应用。 使用 containerapp create 命令,将容器映像部署到 Azure 容器应用。

Bash

PowerShell

az containerapp create \

--name my-container-app \

--resource-group $RESOURCE_GROUP \

--environment $CONTAINERAPPS_ENVIRONMENT \

--image mcr.microsoft.com/k8se/quickstart:latest \

--target-port 80 \

--ingress external \

--query properties.configuration.ingress.fqdn

注意

请确保 --image 参数的值小写。

将 --ingress 设置为 external,使容器应用可供公共请求使用。

$ImageParams = @{

Name = 'my-container-app'

Image = 'mcr.microsoft.com/k8se/quickstart:latest'

}

$TemplateObj = New-AzContainerAppTemplateObject @ImageParams

$EnvId = (Get-AzContainerAppManagedEnv -EnvName $ContainerAppsEnvironment -ResourceGroupName $ResourceGroupName).Id

$AppArgs = @{

Name = 'my-container-app'

Location = $Location

ResourceGroupName = $ResourceGroupName

ManagedEnvironmentId = $EnvId

IdentityType = 'SystemAssigned'

TemplateContainer = $TemplateObj

IngressTargetPort = 80

IngressExternal = $true

}

New-AzContainerApp @AppArgs

注意

请确保 Image 参数的值小写。

将 IngressExternal 设置为 $true,使容器应用可供公共请求使用。

验证部署

Bash

PowerShell

create 命令返回容器应用的完全限定域名。 将此位置复制到 Web 浏览器。

获取容器应用的完全限定域名。

(Get-AzContainerApp -Name $AppArgs.Name -ResourceGroupName $ResourceGroupName).IngressFqdn

将此位置复制到 Web 浏览器。

部署容器应用时,将显示以下消息:

清理资源

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

注意

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

Bash

PowerShell

az group delete --name $RESOURCE_GROUP

Remove-AzResourceGroup -Name $ResourceGroupName -Force

提示

遇到问题? 在 Azure 容器应用存储库中提交问题,告知我们有关 GitHub 的信息。

后续步骤

微服务之间的通信