У меня есть различные среды (в виде рабочих пространств) в Terraform (dev / staging / prod) в облаке Google. В основном они используют один и тот же код в отношении инфраструктуры. Изменения в настройках размера envs. Все идет нормально. Но когда дело доходит до DNS, все env используют один и тот же код и даже одно и то же состояние, так как есть только одна зона DNS, и я не вижу причин использовать больше зон (возможно, я ошибаюсь).
Это связано с некоторыми проблемами: когда я вношу какие-то изменения в одну среду, мне нужно импортировать их в другие. И когда я хочу разрушить среду, зона DNS также разрушается.
Я думаю, что должен быть лучший способ обработки DNS при настройке нескольких сред.
Мне нужен DNS во всех envs, потому что, когда я добавляю общедоступную службу в любом envs, ее IP-адрес должен быть связан с новой записью в зоне.
редактировать: Сейчас я пытаюсь использовать разные зоны (google_dns_managed_zone
) для ссылки на поддомены для каждой среды. Таким образом, у меня будет только тот ресурс, который нужен в каждой среде. Но теперь проблема в том, что каждая зона автоматически назначается новым NS-серверам. Поэтому мне следует либо обновить список серверов имен регистратора, либо добавить их в основную зону (я пробовал, работают оба способа). Но это становится все сложнее и не так эффективно.
Проще всего создать отдельный поддомен в вашей зоне для каждой среды, т.е. <environment>.example.com
. Тогда ваши службы будут создавать записи вроде <service>.<environment>.example.com
; таким образом, каждая среда не должна конфликтовать с другой, если обе они содержат одну и ту же службу.
Если вам нужно <service>.example.com
record, то вы всегда можете создать запись CNAME, указывающую на ту среду, в которой запущена официальная версия службы, обычно это ваша среда prod (uction).