【问题标题】:How to implement in terraform azure for redis with private endpoint?如何在 terraform azure 中实现带有私有端点的 redis?
【发布时间】:2022-10-06 23:02:04
【问题描述】:

我需要 terraform 方面的帮助。我需要使用私有端点为 redis 缓存部署 azure。我的代码:

 resource \"azurerm_redis_cache\" \"redis_cache_example\" {
  name                          = \"redis-cache-ex\"
  location                      = var.location
  resource_group_name           = var.resource_group_name
  capacity                      = var.redis_plan_capacity
  family                        = var.redis_plan_family
  sku_name                      = var.redis_plan_sku_name
  enable_non_ssl_port           = false
  minimum_tls_version           = \"1.2\"
  public_network_access_enabled = false
}

resource \"azurerm_private_dns_zone\" \"private_dns_zone_example\" {
  name                = \"example.redis-ex.azure.com\"
  resource_group_name = var.resource_group_name
}

resource \"azurerm_private_dns_zone_virtual_network_link\" \"virtual_network_link_example\" {
  name                  = \"exampleVnet.com\"
  private_dns_zone_name = azurerm_private_dns_zone.private_dns_zone_example.name
  virtual_network_id    = var.vnet_id
  resource_group_name   = var.resource_group_name
}

resource \"azurerm_private_endpoint\" \"redis_pe_example\" {
  name                = \"redis-private-endpoint-ex\"
  location            = var.location
  resource_group_name = var.resource_group_name
  subnet_id           = var.subnet_id

   private_dns_zone_group {
    name                 = \"privatednsrediszonegroup\"
    private_dns_zone_ids = [azurerm_private_dns_zone.private_dns_zone_example.id]
  }

  private_service_connection {
    name                           = \"peconnection-example\"
    private_connection_resource_id = azurerm_redis_cache.redis_cache_example.id
    is_manual_connection           = false
    subresource_names              = [\"redisCache\"]
  }
}

部署我的 redis 后,在 vnet 中没有 ping。我的 terraform 出了什么问题?

  • 通过添加一个资源 azurerm_private_dns_zone_virtual_network_link 解决了这个问题:resource \"azurerm_private_dns_zone_virtual_network_link\" \"vn_link_example\" { name = \"vn_link_redis_example\" private_dns_zone_name = azurerm_private_dns_zone.virtual_network_link_example virtual_network_id = var.vnet_id resource_group_name = var.resource_group_name tags = var.tags }

标签: azure redis terraform


【解决方案1】:

您还可以添加一个azurerm_private_endpoint 资源并将其链接到azurerm_redis_cache(或者我猜其他资源也是如此)。


resource "azurerm_redis_cache" "default" {
...
}

resource "azurerm_private_endpoint" "default" {
  count               = 1
  name                = format("%s-redis%d", var.env, count.index + 1)
  resource_group_name = data.azurerm_resource_group.default.name
  location            = data.azurerm_resource_group.default.location
  subnet_id           = data.azurerm_subnet.default.id

  private_service_connection {
    name                           = format("%s-redis%d-pe", var.env, count.index + 1)
    private_connection_resource_id = azurerm_redis_cache.default[count.index].id
    is_manual_connection           = false
    subresource_names              = ["redisCache"]
  }
}

您可以在AZ docs 上找到其他私人资源的列表。

【讨论】:

    猜你喜欢
    • 2020-10-03
    • 2021-10-30
    • 2021-08-28
    • 1970-01-01
    • 2019-10-13
    • 1970-01-01
    • 1970-01-01
    • 2018-08-13
    • 2021-12-26
    相关资源
    最近更新 更多