【问题标题】:Azure Kubernetes Service, AKS with terraform, private dns linkAzure Kubernetes 服务、带有 terraform 的 AKS、私有 dns 链接
【发布时间】:2021-08-28 04:35:24
【问题描述】:

我正在部署具有中心辐射型网络拓扑的专用 AKS 群集。 我还想用 terraform 代码指定“private_dns_link”。 我想将 AKS 子网链接到我的中心网络。

我将此资源添加到我的 .tf 文件中。

resource "azurerm_private_dns_zone_virtual_network_link" "link_to_hub_vnet" {
name = "link_to_hub_vnet"
private_dns_zone_name = join(".", slice(split(".", 
azurerm_kubernetes_cluster.dev.private_fqdn), 1, length(split(".", 
azurerm_kubernetes_cluster.dev.private_fqdn))))
resource_group_name   = azurerm_resource_group.k8srg.name
virtual_network_id    = azurerm_virtual_network.hubVnetAddress.id

depends_on = [azurerm_kubernetes_cluster.dev]
}

但是什么时候“terraform apply”它给了我下面的错误。

错误:创建/更新虚拟网络链接“link_to_hub_vnet”(私有 DNS 区域“5ed135c0-266f-4350-b537-872c095f3696.privatelink.northeurope.azmk8s.io”/资源组“k8srg”):privatedns.VirtualNetworkLinksClient#CreateOrUpdate :发送请求失败:StatusCode = 0 - 原始错误:代码 =“ParentResourceNotFound”消息 =“无法对嵌套资源执行请求的操作。父资源'5ed135c0-266f-4350-b537-872c095f3696.privatelink.northeurope.azmk8s.io '未找到。”

据我所知,它找不到 dns 名称,但是当我在 Azure 门户中检查私有 dns 区域时,我发现它在那里。

有人可能体验过吗?

【问题讨论】:

    标签: azure kubernetes dns terraform cloud


    【解决方案1】:

    如果您通读 for hub andspoke 模型,它会说

    默认情况下,配置私有集群时,会在集群管理的资源组中创建一个私有端点 (1) 和一个私有 DNS 区域 (2)。集群使用私有区域中的 A 记录来解析私有端点的 IP,以便与 API 服务器通信。

    https://docs.microsoft.com/en-us/azure/aks/private-clusters#hub-and-spoke-with-custom-dns

    所以我怀疑你是否可以将外部私有 dns 链接到集群

    但如果您希望将集群私有 dns 链接到 vnet,那么您可以创建一个 null_resource 并调用下面链接中的 shell 脚本。

    resource "null_resource" "dns_zone_link" {
        
     provisionor "local-exec" { 
       interpreter = ["bash"]
       command = "./dns-zone-link.sh"
    
       environment {
          VNET = ""
       } 
     } 
    }
    

    https://github.com/Azure/terraform/blob/master/quickstart/301-aks-private-cluster/dns-zone-link.sh

    【讨论】:

    • 嗨,沙希,感谢您的回复。是的,我会试试这个。但是想用 terraform 本身来做。谢谢。
    • @shashi,一旦创建了集群,如何使用 terraform 部署 kubernetes 资源?我们使用哪个端点?
    【解决方案2】:

    问题是“resource_group_name = azurerm_resource_group.k8srg.name”

    在 Azure 中部署 AKS 群集时,它会为 NODE_POOL 及其其他服务创建单独的资源组。所以“私人区域”也在那个单独的组中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-25
      • 2021-09-20
      • 2020-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-15
      相关资源
      最近更新 更多