Я использую Google Cloud Run с Pulumi (аналог Terraform). Моя настройка для сопоставления доменов Cloud Run:
new gcp.cloudrun.DomainMapping(
`${prefix}-domain-mapping`,
{
location,
name: 'xxx',
metadata: {
namespace: projectId,
},
spec: {
routeName: appService.name,
},
},
{
dependsOn: [appService],
},
)
Где appService
указывает на экземпляр службы Cloud Run. Это успешно создает сопоставление домена со службой Cloud Run.
Далее я настраиваю зону DNS с записями:
const zone = new gcp.dns.ManagedZone(`${prefix}-zone`, {
name: `${prefix}-zone`,
dnsName: 'xxx.',
visibility: 'public',
})
const ips = ['xxx', 'xxx', 'xxx', 'xxx']
new gcp.dns.RecordSet(
`${prefix}-a-records`,
{
name: 'xxx.',
managedZone: zone.name,
type: 'A',
ttl: 3600,
rrdatas: ips,
},
{
dependsOn: [zone],
deleteBeforeReplace: true,
},
)
Приведенный выше код работает. У меня есть зона DNS с четырьмя записями A, указывающими на 4 разных IP-адреса, которые указывают на сервис Cloud Run. Моя проблема заключается в следующем: как мне автоматизировать IP-адреса, которые я жестко запрограммировал выше? Я хочу, чтобы IP-адреса Cloud Run были динамически установлены для записей A. Переменная ips
должна указывать на IP-адреса экземпляра Cloud Run, но я не могу найти способ сделать это.
Или, возможно, я делаю все это неправильно, и есть другой способ, которым это должно быть сделано ? Моя цель - чтобы служба Cloud Run обновлялась и получала новые IP-адреса, а также автоматически обновлялись записи DNS. Я не хочу обновлять адреса вручную.
Поскольку Pulumi более или менее эквивалентен Terraform, ответы в Terraform или Pulumi очень ценятся!