我正在使用带有 Pulumi 的 Google Cloud Run(类似于 Terraform)。我对 Cloud Run 的域映射的设置是:
new gcp.cloudrun.DomainMapping(
`${prefix}-domain-mapping`,
{
location,
name: 'xxx',
metadata: {
namespace: projectId,
},
spec: {
routeName: appService.name,
},
},
{
dependsOn: [appService],
},
)
WhereappService
指向 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 地址,这些 IP 地址指向 Cloud Run 服务。我的问题是:如何自动化上面硬编码的 IP?我希望为 A 记录动态设置 Cloud Run 的 IP 地址。该ips
变量必须指向 Cloud Run 实例的 IP,但我找不到这样做的方法。
或者也许我做错了,还有另一种方法应该这样做?我的目标是,如果 Cloud Run 服务更新并接收到新 IP,DNS 记录也应该自动更新。我不想手动更新地址。
由于 Pulumi 或多或少等同于 Terraform,因此非常感谢 Terraform 或 Pulumi 中的答案!