如何将Azure Container App加入VNET?求正确YAML配置示例
Azure Container App(GA正式版)VNET集成YAML配置示例
首先明确:VNET集成是Azure Container App Environment的全局属性,同一环境下的所有容器应用共享该VNET配置,无法单独为单个容器应用绑定VNET。你之前更新单个应用配置不生效,大概率是没有先对所属的Container App Environment完成VNET配置。
完整配置示例
1. 带VNET配置的Container App Environment YAML(核心配置)
apiVersion: Microsoft.App/2022-03-01 kind: managedEnvironments name: 你的容器应用环境名称 location: 区域名称(例如chinaeast2) properties: appLogsConfiguration: destination: log-analytics logAnalyticsConfiguration: customerId: 你的Log Analytics工作区ID sharedKey: 你的Log Analytics工作区密钥 # 核心VNET配置段 vnetConfiguration: # 提前创建完成、已委托给Microsoft.App/environments的子网资源ID infrastructureSubnetId: /subscriptions/你的订阅ID/resourceGroups/你的资源组名称/providers/Microsoft.Network/virtualNetworks/你的VNET名称/subnets/你的子网名称 # true=应用可公网访问同时接入VNET;false=仅VNET内部可访问应用 external: false # 可选配置:自定义环境内部使用的网段,不能与现有VNET网段冲突 dockerBridgeCidr: 10.2.0.1/16 platformReservedCidr: 10.1.0.0/16 platformReservedDnsIP: 10.1.0.2 zoneRedundant: false
2. 绑定到上述VNET环境的Container App YAML示例
apiVersion: Microsoft.App/2022-03-01 kind: containerApps name: 你的容器应用名称 location: 区域名称(需与环境区域一致) properties: # 必须指定已完成VNET配置的环境资源ID managedEnvironmentId: /subscriptions/你的订阅ID/resourceGroups/你的资源组名称/providers/Microsoft.App/managedEnvironments/你的容器应用环境名称 configuration: activeRevisionsMode: Single ingress: external: false targetPort: 80 transport: auto allowInsecure: false template: containers: - image: mcr.microsoft.com/azure-app-service/samples/aspnetcore-hello-world:latest name: hello-world resources: cpu: 0.25 memory: 0.5Gi scale: minReplicas: 0 maxReplicas: 5
配置不生效排查要点
- 子网必须提前完成委托:在VNET子网配置中,将目标子网委托给
Microsoft.App/environments资源类型,且子网掩码最小为/23(至少保留512个可用IP) - 已创建的未绑定VNET的Container App Environment无法直接更新添加VNET配置,必须重新创建带VNET配置的新环境,再将容器应用迁移到新环境
- 执行更新命令时需确认YAML层级正确,
vnetConfiguration必须放在managedEnvironments资源的properties下,不要放在单个containerApp的配置段中
正确部署命令
先部署VNET环境配置:
az deployment group create --resource-group 你的资源组名称 --template-file env.yaml
再部署容器应用:
az containerapp update --yaml app.yaml --name 你的容器应用名称 --resource-group 你的资源组名称
内容的提问来源于stack exchange,提问作者Garry Taylor
相关产品推荐
相关产品推荐

