LoginSignup
8
2

More than 1 year has passed since last update.

【GCP】Terraform で Cloud Run にカスタムドメインをマッピング

Last updated at Posted at 2021-07-02

Terraform で Cloud Run にカスタムドメインをマッピングしました。
全て手動で実施する場合は、公式ドキュメントに手順が記載されています。

全体の流れ

全体的に手動での対応が多くなりますが、DNS設定は仕方ない。

  • ドメインの認証(手動)
  • ドメインの所有者を追加(手動)
  • ドメインマッピング(Terraform)
  • DNSレコード追加(手動)

ドメインの認証

Cloud Run のカスタムドメインの設定画面より、マッピングを追加。
マッピング自体は Terraform より実施するため、ここではドメイン検証のみ実施。
Cloud Run.png

マッピングしたい Cloud Run のサービス名を選択し、新規ドメインの検証を行う。
マッピングしたいドメインがサブドメイン (api.example.com) を持つ場合は、親ドメイン (example.com) で検証する。
(ドキュメントに明記はされていないが、example.com*.example.comの証明書を取得しているっぽい)

7ylyT061TET.png

ウェブマスターセントラルで確認。
7yLygoetSVE2-.png

ドメイン名プロバイダを選択し、出力された文字列を、DNS の TXTレコードに追加。
追加が完了したら、確認ボタンを押す。
image.png

正常に完了すると次のような画面が表示される。
次のステップのために、<ドメイン名>に所有者を追加をクリック。
PastedGraphic6.png

ドメインの所有者を追加

GitHub Actions などで CICD を組んでいるなら、ドメイン認証を行ったユーザとは別に専用のサービスアカウントを持つケースがある。この場合は、サイト所有者を追加しなければ次のように、ドメイン未検証のエラーが返される。

Error: Error waiting to create DomainMapping: resource is in failed state "Ready:False", message: Caller is not authorized to administer the domain 'XXX.XXX.jp'. If you own 'XXX.XXX.jp', you can obtain authorization by verifying ownership of the domain, or any of its parent domains, via the Webmaster Central portal: https://www.google.com/webmasters/verification/verification?domain=XXX.XXX.jp. We recommend verifying ownership of the largest scope you wish to use with subdomains (eg. verify 'example.com' if you wish to map 'subdomain.example.com').

ドキュメントにもバッチリ書いてありますが、気付くまでに時間がかかった。

ユーザーがドメインを検証すると、そのユーザーのアカウントに対してのみドメインの検証が行われます。つまり、ドメイン マッピングを追加できるのは、そのドメインを使用しているユーザーだけです。他のユーザーがドメインを使用するマッピングを追加できるようにするには、ユーザーを確認済みのオーナーとして追加する必要があります。
https://cloud.google.com/run/docs/mapping-custom-domains#adding_verified_domain_owners_to_other_users_or_service_accounts

サイト所有者にCICD用のサービスアカウントのメールアドレスを追加する。
HERBAW+OIPA.png

ドメインマッピング

公式ドキュメントを元にTerraform でリソースを追加。

main.tf
resource "google_cloud_run_domain_mapping" "domain-mapping" {
  location = "asia-northeast1"
  name     = var.custom_domain ## 検証済みのドメイン名

  metadata {
    namespace = var.project_id ## GCP のプロジェクト ID
  }

  spec {
    route_name = google_cloud_run_service.cloudrun.name ## マッピングさせたい Cloud Run
  }
}

完了するとドメインマッピングの画面に新しいドメインが表示される。
Cloud Run.png

DNSレコード追加

ドメインマッピングの操作ボタンから DNS レコードを表示する。
DNS VZ-5.png

DNS にレコードを登録し、しばらくすると緑色のチェックボタンが表示される。
Cloud Run.png

これでマッピングしたドメインから Cloud Run のサービスにアクセスが可能となる。

8
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
2