借助 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 的信息。
后续步骤
微服务之间的通信