如何使用Azure SDK在Java中将私有vnet或子网与容器实例连接在一起?

时间:2019-05-09 09:15:03

标签: java azure-container-instances azure-sdk private-subnet

创建Azure容器实例时附加子网和vnet配置的挑战。

我正在尝试使用Azure SDK-Java / .Net创建Azure容器实例。此容器需要与不同VM之间的组件进行通信。我可以使用带有vnet和子网配置的Azure CLI命令来实现此目的。但是无法通过SDK复制相同内容。

Java中的代码段

ContainerGroup containerGroup = azure.containerGroups().define(aciName).withRegion(Region.EUROPE_NORTH)
                    .withExistingResourceGroup(rgName).withLinux()
                    .withPrivateImageRegistry(registryServer, registryServerName, registryServerKey)
                    .defineVolume(volumeMountName).withExistingReadOnlyAzureFileShare(fileShareName)
                    .withStorageAccountName(storageAccountName).withStorageAccountKey(storageAccountKey).attach()
                    .defineContainerInstance(aciName).withImage(containerImageName).withExternalTcpPort(80)
                    .withVolumeMountSetting(volumeMountName, volumeMountPath).withCpuCoreCount(1)
                    .withMemorySizeInGB(1.5).withEnvironmentVariable("APP_PATH", volumeMountPath)
                    .withStartingCommandLine(commandLineArgs.toString()).attach().withDnsPrefix(aciName)
                    .withRestartPolicy(ContainerGroupRestartPolicy.NEVER).create();

Azure CLI

  

az容器create --resource-group --name --image    --cpu 1-内存1.5 --registry-login-server   --registry用户名--registry密码--azure文件容量共享名   --azure文件卷帐户名称> --azure文件卷帐户密钥--azure文件卷安装路径--restart-policy从不--e --subnet --subnet-地址前缀--vnet --vnet名称--subscription    -命令行“”

在创建Azure容器实例时无法附加vnet和子网配置。

1 个答案:

答案 0 :(得分:0)

不幸的是,Java当前似乎不支持在Vnet中部署ACI。您可以在Github中查看issue

如果您看一下可以实现此功能的CLI命令,那么您会发现该命令实际上是使用Azure REST API来完成的。

enter image description here

在请求中,它使用子网网络配置文件设置了容器组属性networkProfile。因此,如果您真的想在Vnet中部署ACI,则可以使用Azure REST API for Container Instance在Java代码中实现它。