【问题标题】:Create Azure container instance with VNet using C#使用 C# 使用 VNet 创建 Azure 容器实例
【发布时间】:2019-08-23 19:51:57
【问题描述】:

我有以下 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# 怎么做?

【问题讨论】:

  • 我仍然不明白如何使用 fluent API 设置网络配置文件,我觉得当前版本无法做到这一点 - 但无论如何感谢@4c74356b41。
  • 是的,我没有使用 c# sdk,所以真的帮不上忙
  • 还有两年 - 仍然不可能 (c) Microsoft
  • @cortisol 仅供参考,我们停止使用 ACI,我们将所有容器移至 AKS。

标签: c# azure docker azure-container-registry azure-container-instances


【解决方案1】:

同时支持 VNET

添加网络配置文件

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

【讨论】:

    【解决方案2】:

    不确定,但您似乎无法通过 C# 做到这一点。可能是因为它只是Azure Container Instance 的预览版。您可以在The entirety of the Azure Container Instance service container group definition 中看到您可以定义的所有内容。

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

    【讨论】:

    • 谢谢@charles-xu,看来我除了使用 Azure REST API 没有别的选择。
    • 在接受任何答案之前,我仍在探索其他可能性,但无论如何感谢您的解释
    猜你喜欢
    • 1970-01-01
    • 2020-08-06
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-23
    • 1970-01-01
    相关资源
    最近更新 更多