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],
},
)
ここ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,
},
)
上記のコードは機能します。Cloud Run サービスを指す 4 つの異なる IP アドレスを指す 4 つの A レコードを持つ DNS ゾーンがあります。私の問題は次のとおりです。上記でハードコーディングした IP を自動化するにはどうすればよいですか? Cloud Run の IP アドレスを A レコードに動的に設定したい。変数は Cloud Run インスタンスのips
IP を指す必要がありますが、それを行う方法が見つかりません。
それとも、私はこれをすべて間違ってやっていて、これを行うべき別の方法がありますか? 私の目標は、Cloud Run サービスが更新されて新しい IP を受け取った場合に、DNS レコードも自動的に更新されるようにすることです。住所を手動で更新したくありません。
Pulumi は Terraform と多かれ少なかれ同等であるため、Terraform または Pulumi での回答は大歓迎です。