見出し画像

GCP - Cloud DNS

Cloud DNS - 手を動かして概要を理解

ネットワーク周りはインフラ屋さんが設定することが多く触る機会が限られているので自分で触ってみた。

GCPを使ってWEBサービスを公開するまで

Compute Engine(GCE)やK8s Engine(GKE)はインスタンスが立ち上がっている間は料金が発生しまうため最小構成でも$10-$15の料金はかかってしまうため個人利用ではなかなか手が出せません。
Cloud Run
はフルマネージドのサーバーレスコンテナサービスです。
毎月200万アクセスの無料枠があるため無料枠内で収まる場合はぜひ利用したいサービスです。

https://cloud.google.com/run?hl=ja

WEBサービスの構成例

アーキテクチャ図
  1. ユーザーはCloud Domainsを使ってドメインを取得するところから始めます。

  2. ドメインを取得したらCloud DNSまたはGoogle Domainsを使ってドメインレジストラへ登録します。

  3. 新規にVPCネットワークを作成するかデフォルトネットワークに外部IPアドレスを追加します。

    1. GCEを利用する場合はGCE作成時にVPCネットワークを選択するとIPアドレスが割当られます(GKEは執筆時点で未検証)。

    2. Cloud Run を利用する場合はドメインマッピング(プレビュー版機能)からドメインのマッピングを行います。

      1. Cloud Load Balancingを利用する方法もありますが別料金が発生するためCloud Runのドメインマッピングを選択(下記は公式ドキュメント)。

        1. https://cloud.google.com/run/docs/mapping-custom-domains?hl=ja

  4. ファイアウォール(allow-httpルール)でIPアドレスとポートを指定します。

Cloud DNSとは

Google Cloud(GCP)上で構築されたネットワークアドレスにドメイン名を割り当てるマネージドサービス。
8.8.8.8はGoogleが提供しているパブリックDNDサービスの一つ。

Cloud DNS関連用語

1. ドメインを取得

Cloud Domainsからドメインを取得

利用可能なドメインを検索
minaraiで検索した結果から今回はminarai.clubが覚えやすいため利用してみようと思います。

% gcloud domains registrations search-domains minarai.com
DOMAIN           AVAILABILITY  YEARLY_PRICE  NOTICES
minarai.com      UNSUPPORTED
minarai.net      UNAVAILABLE
minarai.app      AVAILABLE     14.00 USD     HSTS_PRELOADED
minarai.dev      AVAILABLE     12.00 USD     HSTS_PRELOADED
minarai.info     AVAILABLE     12.00 USD
minarai.online   AVAILABLE     30.00 USD
minarai.xyz      AVAILABLE     12.00 USD
minarai.store    AVAILABLE     50.00 USD
minarai.one      AVAILABLE     12.00 USD
minarai.me       AVAILABLE     20.00 USD
minarai.cloud    AVAILABLE     20.00 USD
minarai.club     AVAILABLE     13.00 USD
minarai.live     AVAILABLE     20.00 USD
minarai.ink      AVAILABLE     28.00 USD
minarai.page     AVAILABLE     10.00 USD     HSTS_PRELOADED
minarai.website  AVAILABLE     20.00 USD
minarai.wiki     AVAILABLE     28.00 USD
minarai.icu      AVAILABLE     12.00 USD
minarai.buzz     AVAILABLE     40.00 USD
minarai.win      AVAILABLE     30.00 USD
minarai.beauty   UNSUPPORTED
minarai.mom      UNSUPPORTED
minarai.fans     AVAILABLE     12.00 USD
minarai.quest    UNSUPPORTED
minarai.monster  UNSUPPORTED

詳細情報を取得します

% gcloud domains registrations get-register-parameters minarai.club
availability: AVAILABLE
domainName: minarai.club
supportedPrivacy:
- PRIVATE_CONTACT_DATA
- PUBLIC_CONTACT_DATA
yearlyPrice:
  currencyCode: USD
  units: '13'

Cloud DNS プロバイダーのパブリックゾーンを作成

CLOUD_DNS_ZONE_NAME=asia-northeast1-c
DOMAIN_NAME=minarai.club

gcloud dns managed-zones create $CLOUD_DNS_ZONE_NAME \
    --description="for minarai.club" \
    --dns-name=$DOMAIN_NAME

ドメインを登録

gcloud domains registrations register $DOMAIN_NAME

ドメイン名、プロバイダー、ゾーン名と登録者の情報を入力し最後に登録者情報の公開・非公開設定を選択すると登録オペレーションが終了します

Waiting for 'operation-1682431285325-5fa298f1eef81-5cc80ac4-2c0ef563' to complete...done.                                                                                           
Created registration [minarai.club] Note:
The domain is not yet registered.
Wait until the registration resource changes state to ACTIVE.

連絡先情報を確認する
ドメインを登録すると、ドメインの連絡先情報で指定したアドレスに Cloud Domains から確認メールが送信されます。この電子メールの件名には、要対応: 電子メール アドレスを確認してくださいという内容が含まれています。
15 日以内に連絡先情報を確認しないと、ドメインが無効になります。

クラウドドメインについては「https://cloud.google.com/domains/docs/overview」を参照

2. Cloud DNS を使用してドメイン名の DNS レコードを設定

Google Domainsメール転送サービスを利用する場合の注意点
レジトラサービスにCloud DNSを利用する場合はのMXレコードを追加します。値はGoogle Domainsに登録されているMXレコードと同じです。
Google Domainsを利用する場合はAレコードを追加して外部IPアドレスを登録します。

一般公開マネージド ゾーンを作成

コマンド、もしくはCloud DNSコンソールから作成します

https://cloud.google.com/dns/docs/zones#gcloud
gcloud dns managed-zones create $CLOUD_DNS_ZONE_NAME \
    --description="for minarai.club" \
    --dns-name=$DOMAIN_NAME

ドメインが外部 IP アドレスを指すようにレコードを作成

レコードを追加する場合、同じ DNS 名のレコード セットに 2 つの値または文字列を追加できます。レコード セットを追加するときは、最初の値と 2 番目の値の間にスペースを追加する必要があります。

https://cloud.google.com/dns/docs/records#gcloud
  1. ゾーンを選択します

  2. 「標準を追加」または「ルーティングポリシー付きで追加」を選択します

    1. ルーティングポリシー付きで追加はラウンドロビンの設定をしつつレコードを作成します

  3. リソースのレコードタイプで「A」(IPv4)を選択します

    1. IPv6の場合は「AAAA」を選択します

  4. IPアドレスを入力します

    1. IPアドレスはVPCネットワーク(GCPコンソール)またはGCEインスタンスを作成時に作成できます。

  5.  作成をクリックします。

サブドメインを作成

  1. ゾーンを選択します

  2. 「標準を追加」または「ルーティングポリシー付きで追加」を選択します

    1. ルーティングポリシー付きで追加はラウンドロビンの設定をしつつレコードを作成します

  3. DNS名にサブドメイン名を入力します

  4. リソースのレコードタイプで「CNAME」を選択します

  5. Canonical nameには、ドメイン名を入力し、その後にピリオドを入力します (例: example.com.)。

  6. 作成をクリックします。

3. Cloud Domainsの設定を更新

Cloud DNS のNSの設定をドメインレジストラに登録します

3-1. Cloud Domainsを利用する場合

Google Domainsのメール転送サービスを利用する場合はCloud DNSの該当のゾーンにMXレコードを追加します

https://support.google.com/domains/answer/3251241#zippy=
  1. Cloud Domains」ページへ移動

  2. DNS の詳細を編集」をクリック

  3. Cloud DNSを使用する(推奨)」を選択

  4. 保存」をクリック

3-2. Google Domainsを利用する場合

  1. Cloud Domains」ページへ移動

  2. Google Domains で表示」をクリック

    1. もしくは「Google Domains」ページへ移動

    2. マイドメイン」から紐づけるドメインを選択

    3. メニュー「DNS」をクリック

  3. デフォルトのネームサーバー」を選択

  4. カスタムレコード」を追加します

    1. Aタイプレコードを選択しデータに外部IPアドレスを入力し「保存」をクリック

4. その他(メールアドレスを作成)

まだドメイン取得が完了していないため、メールアドレスは利用できません。個人利用で概念理解だけであればメール転送をする方法でメール作成で十分だと思います、

Google Domains のメール オプション
1. Google Workspace のカスタムメール: すべての Google Workspace サブスクリプションには、安全なカスタムメール、ビデオ会議、カレンダー、ドキュメント、スライド、スプレッドシートなどのコラボレーション ツールが含まれています。Google Workspace のカスタムメールの詳細
2. メール転送オプション: 最大 100 個のメールアドレスを追加料金なしで作成して、個人用のメールに転送できます。 詳しくは、メールを転送する方法をご覧ください。 詳しくは、メールを転送する方法をご覧ください。

https://support.google.com/domains/answer/6328630?hl=ja

4-1. Gmailを利用したメール送信設定

メールを転送する方法から事前にメールエイリアスの設定を済ませているものとします。

Google アカウントのアプリ パスワードを生成

1. パソコンで Google アカウントにアクセスします。
2. 左側の [セキュリティ] をクリックします。
3. [Google へのログイン] の [アプリ パスワード] をクリックし、必要に応じてログインします。
3-1. [アプリ パスワード] が見つからない場合は、[2 段階認証プロセス] をクリックし、アカウントの 2 段階認証の手順に従います。再ログインが必要になる場合があります。
4. [アプリ パスワード] で、[アプリを選択] [メール] の順にクリックします。
5. [デバイスを選択] [その他] の順にクリックします。
6. 自分のドメイン名を入力して [生成] をクリックします。
7. アプリ パスワードのボックスから、生成された 16 文字のパスワードをコピーします。新しい送信元アカウント(転送先アカウント)を追加するときに、このアドレスが必要になります。

https://support.google.com/domains/answer/9437157

メール エイリアスを追加

1. パソコンで Gmail にアクセスします。
2. 右上にある歯車アイコンをクリックし [すべての設定を表示] をクリック。
3. [アカウントとインポート] タブまたは [アカウント] タブをクリックします。
4. [名前] 欄の [他のメールアドレスを追加] をクリックします。
5. 開かれたウィンドウで、受信者に対して表示する名前を入力します。
5-1. 例:info
6. メール転送用に設定したメールアドレス エイリアスを入力します。
6-1. 例: info@minarai.club
7. [エイリアスとして扱います] チェックボックスがオンになっていることを確認し、[次のステップ] をクリックします。
8. [SMTP サーバー] フィールドに「smtp.gmail.com」と入力します。
9. [ポート] メニュー [587] を選択します。
10. [ユーザー名] フィールドにログイン用のユーザー名を入力します。
10-1. googleアカウント名
11. [パスワード] フィールドに16 文字のアプリ パスワードを入力します。
12. [TLS を使用したセキュリティで保護された接続] ボックスがオンになっていることを確認します。
13. [アカウントを追加] をクリックします。

https://support.google.com/domains/answer/9437157

5. 最後に

Google CloudではCloud Domains(Google Domains),Cloud DNS, VPC ネットワークなどでフルマネージドサービスで完結するので予算も含めて管理がしやすいのかなと思いました。 

ところで、ヘッダー画像は冬の清水寺です。
前日は雪が降っていたのですがこの日は快晴で京都観光名所巡りをしてきました。機会があればまた訪れたいと思います。

この記事が気に入ったらサポートをしてみませんか?