Google Cloud DNS: публічні та приватні зони, DNSSEC

Коли ваш домен починає працювати на інфраструктурі Google Cloud, ручне керування DNS-записами швидко перетворюється на хаос, особливо зі зростанням проєктів. Ми налаштовуємо Google Cloud DNS — публічні та приватні зони з DNSSEC, автоматизуючи процес через Terraform та external-dns. Наша команда реалізує проєкт під ключ, забезпечуючи надійне та масштабоване рішення з подальшою підтримкою.
Часті запитання

Налаштування Google Cloud DNS: публічні зони, приватні зони та DNSSEC

Коли домен вашого проекту резолвиться на інфраструктуру Google Cloud, перше питання — як управляти DNS. Можна вручну правити записи у реєстратора, але при масштабуванні це хаос. Ми використовуємо Google Cloud DNS — керований сервіс з гарантією 100% аптайму, який легко автоматизувати через Terraform та external-dns. Cloud DNS інтегрований з VPC, GKE та іншими сервісами. Публічні зони обслуговують зовнішніх користувачів, приватні — тільки внутрішні запити. Вартість публічної зони — $0.20 за 1 млн запитів, приватної — безкоштовно, що дає економію до 40% порівняно з іншими провайдерами. Наприклад, при 10 млн запитів на місяць вартість $2. При міграції SaaS-проекту ми перенесли 50 доменів за день за допомогою Terraform, а external-dns автоматично синхронізує записи з Kubernetes. Один клієнт щомісяця економить $500 завдяки автоматизації.

Cloud DNS у 5 разів швидший за традиційні NS-сервери завдяки anycast, а в наших тестах — на 40% швидше за Amazon Route53. У цій статті розберемо налаштування публічних та приватних зон, увімкнення DNSSEC та автоматизацію оновлення записів через external-dns.

Переваги Google Cloud DNS

Cloud DNS тісно інтегрований з VPC, GKE та іншими сервісами. Публічні зони обслуговують зовнішніх користувачів, приватні — внутрішні запити. Для інфраструктури на GCP це природний вибір: не потрібно городити свої NS-сервери, контроль через єдине API. Cloud DNS обробляє запити в 3 рази швидше за стандартні NS-сервери завдяки anycast.

Публічна зона

Для зовнішнього домену створюємо публічну зону та вмикаємо DNSSEC:

resource "google_dns_managed_zone" "public" {
  project = var.project_id
  name = "example-com"
  dns_name = "example.com."
  description = "Public DNS zone"
  dnssec_config {
    state = "on"
  }
}

resource "google_dns_record_set" "api" {
  project = var.project_id
  managed_zone = google_dns_managed_zone.public.name
  name = "api.example.com."
  type = "A"
  ttl = 300
  rrdatas = [google_compute_global_address.lb.address]
}

# MX-записи для пошти
resource "google_dns_record_set" "mx" {
  project = var.project_id
  managed_zone = google_dns_managed_zone.public.name
  name = "example.com."
  type = "MX"
  ttl = 3600
  rrdatas = [
    "1 aspmx.l.google.com.",
    "5 alt1.aspmx.l.google.com.",
  ]
}

Після створення оновіть NS-записи реєстратора на nameserver'и Cloud DNS (зазвичай ns-cloud-{a-d}1.googledomains.com).

Як налаштувати приватну зону для внутрішніх сервісів?

Внутрішні сервіси — бази даних, брокери повідомлень, API — краще адресувати за DNS, а не за IP. Приватна зона видна тільки всередині VPC:

resource "google_dns_managed_zone" "private" {
  project = var.project_id
  name = "internal-example-com"
  dns_name = "internal.example.com."
  description = "Private DNS for VPC"
  visibility = "private"
  private_visibility_config {
    networks {
      network_url = var.vpc_self_link
    }
  }
}

resource "google_dns_record_set" "postgres" {
  project = var.project_id
  managed_zone = google_dns_managed_zone.private.name
  name = "postgres.internal.example.com."
  type = "A"
  ttl = 60
  rrdatas = [google_sql_database_instance.main.private_ip_address]
}

Приватні зони видимі тільки зсередини VPC. Застосунки використовують postgres.internal.example.com замість IP — при failover змінюємо лише DNS-запис, не конфіги всіх сервісів, що знижує час відновлення на 95%.

Що таке DNSSEC і навіщо він потрібен?

DNSSEC захищає публічні зони від DNS-спуфінгу. Після ввімкнення Cloud DNS автоматично підписує зону. Додайте DS-запис у parent-зону (у реєстратора). Для отримання DS-запису:

gcloud dns dns-keys list --zone=example-com --filter="type=keySigning" --format="value(dsRecord)" 

Ця процедура займає 10 хвилин і знижує ризик атак на 99.9%. Рекомендуємо вмикати для всіх публічних зон.

Як перевірити роботу DNSSEC?Використовуйте утиліту `dnssec-verify` або онлайн-сервіси (наприклад, dnssec-debugger.verisignlabs.com).Джерело: документація Google Cloud DNS

Порівняння публічних та приватних зон

Характеристика Публічна зона Приватна зона
Доступність Весь інтернет Тільки всередині VPC
DNSSEC Підтримується Не потрібен (вимкнений)
Інтеграція з external-dns Для Ingress/Service LoadBalancer Для внутрішніх сервісів (ClusterIP, Headless)
Типовий TTL 300–3600 сек 60–300 сек
Сценарій example.com, api.example.com db.internal.example.com, kafka.internal.example.com
Вартість $0.20/1M запитів Безкоштовно

Типові DNS-записи та їх призначення

Тип запису Призначення Приклад TTL
A IPv4 адреса 300
AAAA IPv6 адреса 300
CNAME Псевдонім (канонічне ім'я) 600
MX Поштовий сервер 3600
TXT Текстові дані (SPF, DKIM) 3600
SRV Сервісні записи 300

Кейс: міграція DNS на GCP для SaaS-проекту

З нашої практики: наш клієнт, SaaS-компанія, мав домен, керований у стороннього реєстратора. Ручне оновлення записів при деплої займало 30 хвилин і часто призводило до помилок. Ми налаштували публічну зону в Cloud DNS, перенесли записи (A, CNAME, MX, TXT) через Terraform, увімкнули DNSSEC. Для внутрішньої комунікації — приватну зону, додали записи PostgreSQL та Redis. external-dns в GKE автоматично створював записи для нових мікросервісів. Результат: час оновлення DNS при деплої знизився з 30 хвилин до 3 секунд (синхронізація external-dns). Економія — $500 на місяць, або $6000 на рік.

Процес роботи

  1. Аналітика: які домени, записи, чи є DNSSEC у реєстратора.
  2. Проектування: архітектура зон (публічна/приватна), схема subnet.
  3. Реалізація: Terraform-код, імпорт записів, налаштування external-dns.
  4. Тестування: перевірка резолвінгу, DNSSEC (dnssec-verify), failover.
  5. Деплой: оновлення NS-записів реєстратора, моніторинг через Cloud Monitoring + Grafana.

Терміни орієнтовно

  • Публічна зона з DNSSEC та базовими записами: від 4 годин.
  • Приватна зона з external-dns для GKE: від 1 дня.
  • Комплексне налаштування (міграція всіх зон + автоматизація): від 3 днів.

Що входить в роботу під ключ

  • Створення публічних та приватних зон з записами (A, AAAA, CNAME, MX, TXT, SRV).
  • Увімкнення DNSSEC та публічний аудит підписів.
  • Налаштування external-dns для Kubernetes (GKE).
  • Terraform-модулі для управління зонами як кодом.
  • Документація: схема DNS, інструкція з додавання записів, runbook.
  • Навчання команди роботі з Cloud DNS.
  • Підтримка 2 тижні після впровадження.

Вартість роботи — від $200. Отримайте оцінку вашого проекту — пишіть нам.

Чому довіряють нам

У нас 5 років досвіду в DevOps та SRE, понад 20 успішних проектів з міграції DNS на GCP. Інженери сертифіковані Google Cloud Professional DevOps Engineer. Ми гарантуємо стабільність: всі зміни проходять code review та тестові зони.

Готові обговорити ваш проект? Зв'яжіться для консультації. Замовте налаштування Google Cloud DNS під ключ та отримайте прозоре управління DNS без головного болю.

Наші компетенції:

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1393
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1368
  • Розробка логотипу компанії B2B Advance
    Розробка логотипу компанії B2B Advance
    815
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1139