如何为GCP Cloud SQL Private IP生成DNS

时间:2019-10-04 04:40:30

标签: google-cloud-platform terraform

我一直在尝试使用Google Cloud SQL建立Kubernetes集群,并通过私有IP连接与Google Cloud中的Terraform脚本进行通信。这些terraform脚本工作得很好。然后,我将使用该数据库私有IP的部署,服务和Pod汇总Kubernetes配置。 Terraform脚本每次创建时都会使用随机的私有IP创建数据库的问题。因此在Kubernetes配置中手动设置IP非常不方便。有什么方法可以为此私有IP生成私有DNS并在Kubernetes配置中使用它?

我试图创建一个私有DNS区域并分配一条指向Cloud SQL私有IP的记录。但这由于某些原因无法正常工作。

2 个答案:

答案 0 :(得分:0)

在GCP中有什么合适的方法吗?

适用于我的更新解决方案

DNS区域和记录集是通过以下命令创建的

gcloud beta dns --project=project-name managed-zones create private-db-zone --description= --dns-name=db.test.com. --visibility=private --networks project-network-dev

gcloud dns --project=project-name record-sets transaction start --zone=private-db-zone

gcloud dns --project=project-name record-sets transaction add 10.116.0.3 --name=private.db.test.com. --ttl=300 --type=A --zone=private-db-zone

gcloud dns --project=project-name record-sets transaction execute --zone=private-db-zone

答案 1 :(得分:0)

这在Terraform中对我有用。只需将internal.example.org替换为您想使用的任何域。另外,请确保您具有管理Cloud DNS的权限。

resource "google_dns_managed_zone" "private_zone" {
  name        = "private-zone"
  dns_name    = "internal.*example*.org."
  description = "Internal DNS zone"

  visibility = "private"

  private_visibility_config {
    networks {
      network_url = module.vpc.network_self_link
    }
  }
}

resource "google_dns_record_set" "db_dns" {
  depends_on = [google_dns_managed_zone.private_zone]
  managed_zone = google_dns_managed_zone.private_zone.name
  name = "db.${google_dns_managed_zone.private_zone.dns_name}"
  rrdatas = [google_sql_database_instance.instance.private_ip_address]
  ttl = 300
  type = "A"
}