DNS ゾーンを作成する

このドキュメントでは、DNS ゾーンを使用して、Google Distributed Cloud(GDC)エアギャップ内の新しいドメインの DNS の解決を構成する方法について説明します。DNS ゾーンを使用して、一連の DNS レコードをグループ化し、これらのレコードが GDC の Virtual Private Cloud(VPC)の外部に表示されるかどうかを制御します。

このドキュメントは、組織の DNS の解決の管理を担当するプラットフォーム管理者とアプリケーション オペレーターを対象としています。

GDC 環境で一般公開またはプライベート DNS ゾーンを作成して、サービスの可視性とアクセス要件に合わせることができます。

  • 外部ネットワークの可視性とアクセスを必要とするサービスの場合: 一般公開 DNS ゾーンを設定して、ネットワーク外のユーザーとシステムがサービスにアクセスできるようにします。ウェブサイト、一般公開 API、または GDC Cloud 環境の外部から到達可能にする必要があるサービスがある場合は、ドメイン名を適切な IP アドレスにマッピングするための一般公開 DNS ゾーンが必要です。
  • 内部システムへの安全で制限されたアクセスを必要とするサービスの場合: プライベート DNS ゾーンを設定して、内部ドメイン名を非表示にし、内部サービスへのアクセスを制限します。安全なプロトコルとプライベート IP アドレスのみを使用して他の内部サービスと通信する必要がある内部アプリケーション、データベース、またはマイクロサービスがある場合は、ドメイン名を適切な IP アドレスにマッピングするためのプライベート DNS ゾーンが必要です。プライベート DNS ゾーンを使用すると、これらのサービスは内部ドメイン名を使用して相互に検出できます。存在や IP アドレスを外部ネットワークに公開することはありません。これにより、セキュリティが強化され、内部ネットワークが簡素化されます。

一般公開 DNS ゾーンとプライベート DNS ゾーンの違いについては、 Cloud DNS のゾーンタイプをご覧ください。

始める前に

GDC で DNS ゾーンを構成してレコードを追加するには、次のものが必要です。

  • 既存のプロジェクト。詳細については、プロジェクトを 作成するをご覧ください。
  • 必要な ID とアクセスロール。プロジェクトの DNS ゾーンを管理するには、プロジェクト IAM 管理者 に Managed DNS プロジェクト管理者 (managed-dns-project-admin)ロールの付与を依頼してください。
  • gdcloud CLI を使用するには、インストールされていることを確認してください。詳細については、 gdcloud CLI をインストールするをご覧ください。
  • kubectl を使用している場合は、グローバル API サーバーの kubeconfig ファイル。このファイルをまだ生成していない場合は、 ログインをご覧ください。 詳細については、 グローバル API サーバーとゾーン API サーバーをご覧ください。

一般公開 DNS ゾーンを作成する

一般公開 DNS ゾーンを作成したら、適切なネームサーバーにリクエストを転送するようにネットワークの DNS リゾルバを構成する必要があります。

ゾーンを作成する

一般公開 DNS ゾーンは、gdcloud CLI または Kubernetes API を使用して作成できます。

gdcloud

一般公開 DNS ゾーンを作成するには、gdcloud dns managed-zones create コマンドを使用します。

gdcloud dns managed-zones create DNS_ZONE_NAME \
    --dns-name=DOMAIN_NAME \
    --visibility=PUBLIC \
    --description="DESCRIPTION" \
    [--project=PROJECT_NAMESPACE] \
    [--async]

次のように置き換えます。

  • DNS_ZONE_NAME: DNS ゾーンの名前。
  • DOMAIN_NAME: 一般公開 DNS ゾーンのドメイン名(example.com など)。
  • DESCRIPTION: DNS ゾーンの説明。 例: Public DNS zone for example.com。このフィールドは省略可能です。
  • PROJECT_NAMESPACE: プロジェクトの Namespace。 gdcloud config set project を使用してデフォルト プロジェクトをグローバルに設定している場合、このフラグは省略可能です。
  • --async: オペレーションの完了を待たずにコマンドをすぐに返す場合は、これを指定します。 describe を使用して、 オペレーションのステータスを確認できます。

API

GDC で Kubernetes API を使用して、一般公開 DNS ゾーンを作成します。

  1. ManagedDNSZone リソースを作成して適用し、GDC の外部からアクセス可能な DNS ゾーンを作成します。

    kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
    apiVersion: networking.global.gdc.goog/v1
    kind: ManagedDNSZone
    metadata:
      name: DNS_ZONE_NAME
      namespace: PROJECT_NAMESPACE
    spec:
      dnsName: DOMAIN_NAME
      description: DESCRIPTION
      visibility: PUBLIC
    EOF
    

    次のように置き換えます。

    • GLOBAL_API_SERVER: グローバル API サーバーの kubeconfig パス。詳細については、グローバル API サーバーとゾーン API サーバーをご覧ください。API サーバーの kubeconfig ファイルをまだ生成していない場合は、 ログインをご覧ください。
    • DNS_ZONE_NAME: DNS ゾーンの名前。
    • PROJECT_NAMESPACE: プロジェクトの Namespace。
    • DOMAIN_NAME: 一般公開 DNS ゾーンのドメイン名(example.com など)。
    • DESCRIPTION: DNS ゾーンの説明。 例: Public DNS zone for example.com。このフィールドは省略可能です。

    visibility は大文字と小文字が区別され、値は PUBLIC である必要があります。

DNS リゾルバを構成する

一般公開 DNS ゾーンの場合は、その DNS ゾーンの DNS リクエストを、その DNS ゾーンをホストする GDC のネームサーバーに転送するように、ネットワーク内の DNS リゾルバを構成する必要があります。

  1. 作成した ManagedDNSZone のネームサーバーを取得します。この手順では kubectl を使用する必要があります。

    kubectl --kubeconfig GLOBAL_API_SERVER get manageddnszones DNS_ZONE_NAME -n PROJECT_NAMESPACE -oyaml
    

    次のように置き換えます。

    • GLOBAL_API_SERVER: グローバル API サーバーの kubeconfig パス。詳細については、グローバル API サーバーとゾーン API サーバーをご覧ください。API サーバーの kubeconfig ファイルをまだ生成していない場合は、 ログインをご覧ください。
    • DNS_ZONE_NAME: DNS ゾーンの名前。
    • PROJECT_NAMESPACE: プロジェクトの Namespace。 gdcloud config set project を使用してデフォルト プロジェクトをグローバルに設定している場合、このフラグは省略可能です。

    ネームサーバーはステータス出力に表示されます。

      apiVersion: networking.global.gdc.goog/v1
      kind: ManagedDNSZone
      metadata:
        name: DNS_ZONE_NAME
        namespace: PROJECT_NAMESPACE
      spec:
        dnsName: example.com
        description: "Public DNS zone for example.com"
        visibility: PUBLIC
      status:
      …
      nameServers:
        - ns.managed-dns-public.gdc1.staging.gpcdemolabs.com
    
  2. 新しいゾーンの DNS リクエストを転送するように、ネットワーク内の DNS リゾルバを更新します。 この例では、example.com のリクエストを ns.managed-dns-public.gdc1.staging.gpcdemolabs.com に転送するように DNS リゾルバを更新する必要があります。この構成では、リゾルバに GDC のインフラストラクチャ DNS ゾーン gdc1.staging.gpcdemolabs.com の DNS リクエストを適切に転送するために必要な構成がすでに存在していることを前提としています。

プライベート DNS ゾーンを作成する

プライベート DNS ゾーンは、gdcloud CLI または Kubernetes API を使用して作成できます。

gdcloud

プライベート DNS ゾーンを作成するには、 gdcloud dns managed-zones create コマンドを使用します。

gdcloud dns managed-zones create DNS_ZONE_NAME \
    --dns-name=DOMAIN_NAME \
    --visibility=PRIVATE \
    --description="DESCRIPTION" \
    [--project=PROJECT_NAMESPACE] \
    [--async]

次のように置き換えます。

  • DNS_ZONE_NAME: DNS ゾーンの名前。
  • DOMAIN_NAME: 限定公開 DNS ゾーンのドメイン名(example.com など)。
  • DESCRIPTION: DNS ゾーンの説明。 例: Private DNS zone for example.com。このフィールドは省略可能です。
  • PROJECT_NAMESPACE: プロジェクトの Namespace。 gdcloud config set project を使用してデフォルト プロジェクトをグローバルに設定している場合、このフラグは省略可能です。
  • --async: オペレーションの完了を待たずにコマンドをすぐに返す場合は、これを指定します。 describe を使用して、 オペレーションのステータスを確認できます。

API

Kubernetes API を使用して、プライベート DNS ゾーンを作成します。

  • ManagedDNSZone リソースを作成して適用し、デフォルトの顧客 VPC 内からのみアクセス可能な DNS ゾーンを作成します。

    kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
    apiVersion: networking.global.gdc.goog/v1
    kind: ManagedDNSZone
    metadata:
      name: DNS_ZONE_NAME
      namespace: PROJECT_NAMESPACE
    spec:
      dnsName: DOMAIN_NAME
      description: DESCRIPTION
      visibility: PRIVATE
    EOF
    

    次のように置き換えます。

    • GLOBAL_API_SERVER: グローバル API サーバーの kubeconfig パス。詳細については、グローバル API サーバーとゾーン API サーバーをご覧ください。API サーバーの kubeconfig ファイルをまだ生成していない場合は、 ログインをご覧ください。
    • DNS_ZONE_NAME: DNS ゾーンの名前。
    • PROJECT_NAMESPACE: プロジェクトの Namespace。
    • DOMAIN_NAME: 限定公開 DNS ゾーンのドメイン名(example.com など)。
    • DESCRIPTION: DNS ゾーンの説明。 例: Private DNS zone for example.com。このフィールドは省略可能です。

    visibility は大文字と小文字が区別され、値は PRIVATE である必要があります。

次のステップ