4

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 インスタンスのipsIP を指す必要がありますが、それを行う方法が見つかりません。

それとも、私はこれをすべて間違ってやっていて、これを行うべき別の方法がありますか? 私の目標は、Cloud Run サービスが更新されて新しい IP を受け取った場合に、DNS レコードも自動的に更新されるようにすることです。住所を手動で更新したくありません。

Pulumi は Terraform と多かれ少なかれ同等であるため、Terraform または Pulumi での回答は大歓迎です。

4

2 に答える 2