我用AKS和ACR实例创建了一个新的资源组。
-
ACR:与任何vnet 无关
- 网络规则:默认拒绝所有
- 绕过MS可信服务
-
AKS:不与任何vnet 关联
- 具有
SystemAssigned
标识
- 具有
-
AKS和ACR 之间的AcrPull角色分配
我可以在本地访问这两个资源,但AKS实例无法访问ACR。在玩了一段时间的设置后,我发现AKS可以访问ACR,如果:
- ACR网络规则默认设置为允许所有
- ACR网络规则白名单部分
20.53.198.0/24
IP范围
根据本文档,AKS不是可信服务。但是AKS节点的IP不是你可以控制的。
所以,我的问题是,设置ACR网络规则以确保只有的正确方法是什么
- AKS
- 列入白名单的IP
可以访问它吗?
更新
经过一些研究,我发现我必须创建一个专用端点来连接AKS和ACR。
另一篇关于相同主题的帖子,但使用Terraform来实现它
感谢David S的更新。如果其他社区成员遇到同样的要求,请将您的建议作为答案发布,以帮助他们。
您需要一个专用端点来在AKS和ACR之间建立连接
默认情况下,ACR是公共的。此处要禁用其公共FQDN和使其只能使用专用端点(又名PE(进行访问。私有的端点将在子网/VNET中创建一个专用IP地址。这里有关于私人ACR的文档。
专用端点将禁用其主机子网上的NSG。我们不想要这种情况发生在AKS子网中,因此我们可以在AKS中创建另一个子网专用于专用端点的VNET。
建议遵循本教程,将为AKS和ACR设置仅可从Azure虚拟机访问的专用环境提供指导,并在AKS与ACR之间建立连接。
注意:Just Ingore AKS和ACR的VM连接只专注于建立ACR和AKS的连接,如上面第2部分教程和第1点和第3点所述
您也可以参考此文档部署和设置Azure Kubernetes服务和Azure容器注册表之间的私有链接,并禁用公共端点