使用 C# 通过 VNet 创建 Azure 容器实例

Create Azure container instance with VNet using C#

我有以下 powershell 命令创建一个包含 1 个容器实例的 Azure 容器组:

az container create \
-g $(ResourceGroup) \
--name $(ContainerName) \
--image $(DockerImage) \
--cpu 2 --memory 8 \
--restart-policy OnFailure \
--vnet $(VNet) \
--subnet $(VNetSubnet) \
--registry-username $(RepositoryUserName) \
--registry-password $(RepositoryPassword)

我正在尝试使用 .NET 客户端库做同样的事情,基于此 sample code

var containerGroup = _azure.ContainerGroups
          .Define(agentName) 
          .WithRegion(resourceGroup.Region)
          .WithExistingResourceGroup(resourceGroup.Name)
          .WithLinux()
          .WithPrivateImageRegistry("xxx.azurecr.io", "xxx", "xxx")
          .WithoutVolume()
          .DefineContainerInstance(agentName)
              .WithImage(args.DockerImageName)
              .WithExternalTcpPort(80)
              .WithCpuCoreCount(args.CpuCoreCount)
              .WithMemorySizeInGB(args.MemorySizeInGB)
          .Attach()
          .WithTags(tags)
          .WithRestartPolicy(ContainerGroupRestartPolicy.Always)
          .CreateAsync()

但是我找不到设置 vnet 和子网的方法。如何使用 C# 实现?

不确定,但似乎无法通过 C# 执行此操作。可能是因为它只是 Azure Container Instance. You can see all that you can define in The entirety of the Azure Container Instance service container group definition.

的预览版

或者您可以通过 Azure REST 创建它 API。请参阅 Container Groups - Create Or Update,您可以配置 属性 networkProfile 以在 vnet 中创建容器组。

同时支持VNET

添加 WithNetworkProfile

var containerGroup = _azure.ContainerGroups
          .Define(agentName) 
          .WithRegion(resourceGroup.Region)
          .WithExistingResourceGroup(resourceGroup.Name)
          .WithLinux()
          .WithPrivateImageRegistry("xxx.azurecr.io", "xxx", "xxx")
          .WithoutVolume()
          .DefineContainerInstance(agentName)
              .WithImage(args.DockerImageName)
              .WithExternalTcpPort(80)
              .WithCpuCoreCount(args.CpuCoreCount)
              .WithMemorySizeInGB(args.MemorySizeInGB)
          .Attach()
          .WithTags(tags)
          .WithRestartPolicy(ContainerGroupRestartPolicy.Always)
          .WithNetworkProfile(subscriptionId,resourceGroup,"aci-network-profile-vnettest-containersubnet")
          .CreateAsync()

配置文件可以通过例如Azure CLI

az network profile list