Cloud Workstations のカスタム ドメインを設定する

ワークステーションにアクセスするには、cloudworkstations.dev ドメインを使用するのではなく、信頼できるカスタム ドメインを指定します。

アーキテクチャ

カスタム ホスト名で Cloud Workstations を使用するには、プライベート クラスタを設定すると、限定公開クラスタの HTTP Ingress 用にPrivate Service Connect(PSC)エンドポイントを設定するの手順を行います。また、プライベート クラスタ用に作成された PSC エンドポイントをターゲットとする PSC バックエンドを持つアプリケーション ロードバランサも作成する必要があります。このアプリケーション ロードバランサは外部または内部のいずれかで、カスタム ドメインの SSL 証明書を管理します。

次の図は、カスタム ドメインが設定されたクラスタを示しています。

図 1. カスタム ドメインが設定されたクラスタ

準備

Cloud Workstations のカスタム ドメインを設定する手順は次のとおりです。

  1. プライベート クラスタを作成し、gcloud CLI または REST API コマンドを使用して信頼できるカスタム ドメインを指定します。

  2. ワークステーション クラスタ プロジェクトで使用した同じプロジェクトに Private Service Connect(PSC)バックエンドを持つアプリケーション ロードバランサを作成します。次の点にご注意ください。

    1. ワークステーションを限定公開(公共のインターネットからアクセスできない)にするには、内部ロードバランサを作成してください。これを行うには、プライベート DNS ゾーンを作成し、ロードバランサが使用する内部 IP アドレスにドメインをマッピングするレコードを追加します。内部ロードバランサの作成方法の詳細については、内部アプリケーション ロードバランサをご覧ください。

    2. ロードバランサで参照する必要があるサービス アタッチメントは、クラスタの作成後にワークステーション クラスタ リソースで取得できます。

    3. 証明書を取得し、ドメインのワイルドカード証明書(*.us-west1-cluster1.example.com など)としてロードバランサに指定します。選択したロードバランサでサポートされている証明書の種類については、証明書と Google Cloud ロードバランサをご覧ください。

    4. PrivateClusterConfig.allowedProjects リストに追加するだけで、別のプロジェクトにロードバランサを作成することもできます。

    5. 組織に複数のワークステーション クラスタがある場合は、別々のバックエンド サービス、証明書、ルーティング ルールで単一のロードバランサを使用できます。

  3. ドメイン ネーム システム(DNS)を設定します。これはユーザーが管理するドメインであるため、指定したドメインのすべてのサブドメインをロードバランサにマッピングして、このドメインの DNS を設定します。たとえば、us-west1-cluster1.example.com の DNS ゾーンを作成し、ロードバランサが使用する外部 IP アドレスに *.us-west1-cluster1.example.com をマッピングするエントリを追加します。

  4. カスタム ドメインを使用してワークステーションにアクセスするには、作成したクラスタを使用してワークステーション構成を作成し、そのワークステーション構成を使用してワークステーションを作成します。

  5. ワークステーションを起動して URL を確認します。カスタム ドメインを指定すると、ワークステーションの URL は次の形式になります。

    https://PORT-WORKSTATION_NAME.DOMAIN
    

    URL の次の部分は構成によって異なります。

    • PORT: ポート番号。デフォルトはポート 80 です。
    • WORKSTATION_NAME: ワークステーション名。
    • DOMAIN: クラスタ固有のドメイン名。

プライベート クラスタを作成する

プライベート エンドポイントを持つ限定公開ワークステーション クラスタを作成します。

gcloud

  1. 始める前に、gcloud init を実行して gcloud CLI を初期化し、デフォルトのプロジェクトを指定していることを確認してください。続く例では、デフォルト プロジェクトが設定されていることを前提としています。

  2. 限定公開ワークステーション クラスタを作成するには、次のコマンドを実行します。

    gcloud workstations clusters create WORKSTATION_CLUSTER \
      --region=REGION \
      --domain=DOMAIN \
      --network=NETWORK \
      --subnetwork=SUBNETWORK \
      --enable-private-endpoint
    

    以下を置き換えます。

    • WORKSTATION_CLUSTER: 作成するワークステーション クラスタの名前。
    • REGION: クラスタのリージョンの名前。
    • DOMAIN: Cloud Workstations が HTTP 上り(内向き)に使用するドメイン名。このクラスタに固有のサブドメイン(us-west1-cluster1.example.com など)を使用します。
    • NETWORK: VPC ネットワークの名前。省略すると、デフォルトの VPC ネットワークが使用されます。
    • SUBNETWORK: VPC ネットワーク内のサブネットワークの名前。ネットワークとサブネットワークの両方を省略すると、デフォルトの VPC ネットワークが使用され、指定された REGION のデフォルトのサブネットワークが使用されます。

この gcloud CLI コマンドの詳細については、gcloud workstations clusters create のリファレンス ドキュメントをご覧ください。

curl

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"  -d '{"domain_config": {"domain": "DOMAIN"}, "private_cluster_config": {"enable_private_endpoint":true}, "network": "NETWORK", "subnetwork": "SUBNETWORK"}'  https://workstations.googleapis.com/v1/projects/PROJECT_NAME/locations/REGION/workstationClusters?workstation_cluster_id=WORKSTATION_CLUSTER

以下を置き換えます。

  • DOMAIN: Cloud Workstations が HTTP 上り(内向き)に使用するドメイン名。これは、このクラスタに固有のサブドメイン(例: us-west1-cluster1.example.com)にする必要があります。
  • NETWORK: VPC ネットワークの名前。省略すると、デフォルトの VPC ネットワークが使用されます。
  • SUBNETWORK: VPC ネットワーク内のサブネットワークの名前。ネットワークとサブネットワークの両方を省略すると、デフォルトの VPC ネットワークが使用され、指定された REGION のデフォルトのサブネットワークが使用されます。
  • PROJECT_NAME: プロジェクトの名前。
  • REGION: クラスタのリージョンの名前。
  • WORKSTATION_CLUSTER: 作成するワークステーション クラスタの名前。

この API メソッドの詳細については、workstationClusters.create リファレンス ドキュメントをご覧ください。

REST

POST https://workstations.googleapis.com/v1/projects/PROJECT_NAME/locations/REGION/workstationClusters?workstationClusterId=WORKSTATION_CLUSTER
{
  "domainConfig": {
    "domain": "DOMAIN"
  },
  "privateClusterConfig": {
    "enablePrivateEndpoint": true
  },
  "network": "NETWORK",
  "subnetwork": "SUBNETWORK"
}

以下を置き換えます。

  • PROJECT_NAME: プロジェクトの名前。
  • REGION: クラスタのリージョンの名前。
  • WORKSTATION_CLUSTER: 作成するワークステーション クラスタの名前。
  • DOMAIN: Cloud Workstations が HTTP 上り(内向き)に使用するドメイン名。これは、このクラスタに固有のサブドメイン(例: us-west1-cluster1.example.com)にする必要があります。
  • NETWORK: VPC ネットワークの名前。省略すると、デフォルトの VPC ネットワークが使用されます。
  • SUBNETWORK: VPC ネットワーク内のサブネットワークの名前。ネットワークとサブネットワークの両方を省略すると、デフォルトの VPC ネットワークが使用され、指定された REGION のデフォルトのサブネットワークが使用されます。

この API メソッドの詳細については、workstationClusters.create リファレンス ドキュメントをご覧ください。

PSC バックエンドを持つアプリケーション ロードバランサを作成する

以下の gcloud CLI と REST API の手順に沿って、PSC バックエンドを持つアプリケーション ロードバランサを作成します。

  1. 公開サービスに接続するための NEG を作成する
  2. グローバル外部アプリケーション ロードバランサにバックエンドを追加する
  3. 受信リクエストをバックエンド サービスに転送するための URL マップを作成する
  4. ターゲット HTTPS プロキシを作成する
  5. グローバル アドレスの作成
  6. 転送ルールの作成
  7. 省略可: リージョンまたは内部アプリケーション ロードバランサを構成する

公開サービスに接続するための NEG を作成する

公開サービスを参照する NEG を作成する場合は、そのサービスのサービス アタッチメント URI が必要です。このサービス アタッチメントの形式は projects/SERVICE_PROJECT/regions/REGION/serviceAttachments/SERVICE_NAME のようになります。URI は、ワークステーション クラスタ リソースで確認できます。

gcloud

gcloud compute network-endpoint-groups create NEG_NAME \
  --network-endpoint-type=private-service-connect \
  --psc-target-service=TARGET_SERVICE \
  --region=REGION \
  --network=NETWORK \
  --subnet=SUBNET

以下を置き換えます。

  • NEG_NAME: ネットワーク エンドポイント グループの名前。
  • TARGET_SERVICE: サービス アタッチメントの URI。
  • REGION: ネットワーク エンドポイント グループを作成するリージョン。リージョンは、ターゲット サービスと同じリージョンにする必要があります。
  • NETWORK: ネットワーク エンドポイント グループを作成する VPC ネットワーク。省略すると、デフォルト ネットワークが使用されます。
  • SUBNET: ネットワーク エンドポイント グループを作成するサブネット。サブネットは、ターゲット サービスと同じリージョンに存在する必要があります。ネットワークを指定する場合は、サブネットを指定する必要があります。ネットワークとサブネットの両方を省略すると、デフォルト ネットワークが使用され、指定された REGION のデフォルトのサブネットが使用されます。

この gcloud CLI コマンドの詳細については、gcloud compute network-endpoint-groups create のリファレンス ドキュメントをご覧ください。

REST

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/regions/REGION/networkEndpointGroups
{
  "pscTargetService": "TARGET_SERVICE",
  "networkEndpointType": "PRIVATE_SERVICE_CONNECT",
  "name": "NEG_NAME",
  "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_NAME/global/networks/NETWORK",
  "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_NAME/regions/REGION/subnetworks/SUBNET"
}

以下を置き換えます。

  • PROJECT_NAME: プロジェクトの名前。
  • REGION: ネットワーク エンドポイント グループを作成するリージョン。リージョンは、ターゲット サービスと同じリージョンにする必要があります。
  • TARGET_SERVICE: サービス アタッチメントの URI。
  • NEG_NAME: ネットワーク エンドポイント グループの名前。
  • NETWORK: ネットワーク エンドポイント グループを作成する VPC ネットワーク。省略すると、デフォルト ネットワークが使用されます。
  • SUBNET: ネットワーク エンドポイント グループを作成するサブネット。サブネットは、ターゲット サービスと同じリージョンに存在する必要があります。ネットワークを指定する場合は、サブネットを指定する必要があります。ネットワークとサブネットの両方を省略すると、デフォルト ネットワークが使用され、指定された REGION のデフォルトのサブネットが使用されます。

グローバル外部アプリケーション ロードバランサにバックエンドを追加する

gcloud

  1. ターゲット サービスのバックエンド サービスを作成します。

    gcloud compute backend-services create BACKEND_SERVICE_NAME \
    --load-balancing-scheme=EXTERNAL_MANAGED \
    --protocol=HTTPS \
    --global
    

    BACKEND_SERVICE_NAME は、バックエンド サービスの名前に置き換えます。

  2. ターゲット サービスを指す Private Service Connect NEG を追加します。

    gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
    --network-endpoint-group=NEG_NAME \
    --network-endpoint-group-region=NEG_REGION \
    --global
    

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

    • BACKEND_SERVICE_NAME: バックエンド サービスの名前。
    • NEG_NAME: ネットワーク エンドポイント グループの名前。
    • NEG_REGION: ネットワーク エンドポイント グループのリージョン。

この gcloud CLI コマンドの詳細については、gcloud compute backend-services create と gcloud compute backend-services add-backend のリファレンス ドキュメントをご覧ください。

REST

  1. ターゲット サービスのバックエンド サービスを作成します。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/global/backendServices
    {
      "protocol": "HTTPS",
      "loadBalancingScheme": "EXTERNAL_MANAGED",
      "name": "BACKEND_SERVICE_NAME"
    }
    

    BACKEND_SERVICE_NAME は、バックエンド サービスの名前に置き換えます。

  2. ターゲット サービスを指す Private Service Connect NEG を追加します。

    PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/global/backendServices/BACKEND_SERVICE_NAME
    {
      "backends": [
        {
          "group": "https://www.googleapis.com/compute/v1/projects/PROJECT_NAME/regions/NEG_REGION/networkEndpointGroups/NEG_NAME "
        }
      ]
    }
    

    以下を置き換えます。

    • PROJECT_NAME: プロジェクトの名前。
    • BACKEND_SERVICE_NAME: バックエンド サービスの名前。
    • NEG_REGION: ネットワーク エンドポイント グループのリージョン。
    • NEG_NAME: ネットワーク エンドポイント グループの名前。

受信リクエストをバックエンド サービスに転送するための URL マップを作成する

gcloud

gcloud compute url-maps create URL_MAP_NAME \
  --default-service=BACKEND_SERVICE_NAME \
  --global

以下を置き換えます。

  • URL_MAP_NAME: 作成する URL マップの名前。
  • BACKEND_SERVICE_NAME: この URL マップにマッピングがない場合にリクエストに使用するバックエンド サービスの名前。

この gcloud CLI コマンドの詳細については、gcloud compute url-maps create のリファレンス ドキュメントをご覧ください。

REST

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/global/urlMaps
{
  "name": "URL_MAP_NAME",
  "defaultService": "https://www.googleapis.com/compute/v1/projects/PROJECT_NAME/global/backendServices/BACKEND_SERVICE_NAME "
}

以下を置き換えます。

  • PROJECT_NAME: プロジェクトの名前。
  • URL_MAP_NAME: 作成する URL マップの名前。
  • BACKEND_SERVICE_NAME: この URL マップにマッピングがない場合にリクエストに使用するバックエンド サービスの名前。

ターゲット HTTPS プロキシを作成する

URL マップにリクエストの経路を指定するターゲット HTTPS プロキシを作成します。プロキシはロードバランサの一部であり、HTTPS ロードバランシング用の SSL 証明書を保持するため、この手順で証明書も読み込みます。

gcloud

gcloud compute target-https-proxies create TARGET_HTTPS_PROXY_NAME \
  --ssl-certificates=SSL_CERTIFICATE_NAME \
  --url-map=URL_MAP_NAME \
  --global

以下を置き換えます。

  • TARGET_HTTPS_PROXY_NAME: 作成するターゲット HTTPS プロキシの名前。
  • SSL_CERTIFICATE_NAME: ロードバランサに関連付けられた SSL 証明書。
  • URL_MAP_NAME: URL マップリソース。

この gcloud CLI コマンドの詳細については、gcloud compute target-https-proxies create のリファレンス ドキュメントをご覧ください。

REST

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/global/targetHttpsProxies
{
  "sslCertificates": [
    "https://www.googleapis.com/compute/v1/projects/PROJECT_NAME/global/sslCertificates/SSL_CERTIFICATE_NAME"
  ],
  "urlMap": "https://www.googleapis.com/compute/v1/projects/PROJECT_NAME/global/urlMaps/URL_MAP_NAME",
  "name": "TARGET_HTTPS_PROXY_NAME"
}

以下を置き換えます。

  • PROJECT_NAME: プロジェクトの名前。
  • SSL_CERTIFICATE_NAME: ロードバランサに関連付けられた SSL 証明書。
  • URL_MAP_NAME: URL マップリソース。
  • TARGET_HTTPS_PROXY_NAME: 作成するターゲット HTTPS プロキシの名前。

グローバル アドレスの作成

ロードバランサで使用する静的 IP アドレスを予約します。

gcloud

gcloud compute addresses create LB_IP_ADDRESS_NAME \
  --global

以下を置き換えます。

  • LB_IP_ADDRESS_NAME: ロードバランサの予約済みの静的外部 IP アドレスまたは内部 IP アドレスの名前。

この gcloud CLI コマンドの詳細については、gcloud compute addresses create のリファレンス ドキュメントをご覧ください。

REST

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/global/addresses
{
  "name": "LB_IP_ADDRESS_NAME"
}

以下を置き換えます。

  • PROJECT_NAME: プロジェクトの名前。
  • LB_IP_ADDRESS_NAME: ロードバランサの予約済みの静的外部 IP アドレスまたは内部 IP アドレスの名前。

転送ルールの作成

受信リクエストをプロキシに転送する転送ルールを作成します。

gcloud

gcloud compute forwarding-rules create HTTPS_FORWARDING_RULE_NAME \
  --load-balancing-scheme=EXTERNAL_MANAGED \
  --network-tier=PREMIUM \
  --address=LB_IP_ADDRESS_NAME  \
  --target-https-proxy=TARGET_HTTPS_PROXY_NAME  \
  --global \
  --ports=443

以下を置き換えます。

  • HTTPS_FORWARDING_RULE_NAME: 作成する転送ルールの名前。
  • LB_IP_ADDRESS_NAME: ロードバランサの予約済みの静的外部 IP アドレスまたは内部 IP アドレスの名前。
  • TARGET_HTTPS_PROXY_NAME: トラフィックを受信するターゲット HTTPS プロキシ。

この gcloud CLI コマンドの詳細については、gcloud compute forwarding-rules create のリファレンス ドキュメントをご覧ください。

REST

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/global/forwardingRules
{
  "loadBalancingScheme": "EXTERNAL_MANAGED",
  "networkTier": "PREMIUM",
  "IPAddress": "https://www.googleapis.com/compute/v1/projects/PROJECT_NAME/global/addresses/LB_IP_ADDRESS_NAME",
  "target": "https://www.googleapis.com/compute/v1/projects/PROJECT_NAME/global/targetHttpsProxies/TARGET_HTTPS_PROXY_NAME",
  "name": "HTTPS_FORWARDING_RULE_NAME",
  "portRange": "443-443"
}

以下を置き換えます。

  • PROJECT_NAME: プロジェクトの名前。
  • LB_IP_ADDRESS_NAME: ロードバランサの予約済みの静的外部 IP アドレスまたは内部 IP アドレスの名前。
  • TARGET_HTTPS_PROXY_NAME: トラフィックを受信するターゲット HTTPS プロキシ。
  • HTTPS_FORWARDING_RULE_NAME: 作成する転送ルールの名前。

リージョンまたは内部アプリケーション ロードバランサを構成する

リージョン外部アプリケーション ロードバランサ(データ所在地要件など)または内部アプリケーション ロードバランサを構成する場合は、次の要件に注意してください。リージョン ロードバランサ リソースを構成する前に、公開サービスに接続する NEG を作成するの説明に従って、ワークステーション クラスタを参照する Private Service Connect NEG を作成していることを確認します。

  1. プロキシ専用サブネットを構成する: リージョン Envoy ベースのロードバランサには、ロードバランサが配置されているリージョンと VPC ネットワークにプロキシ専用サブネットが必要です。転送ルールを作成する前に、プロキシ専用サブネットを作成する必要があります。

    gcloud

    gcloud compute networks subnets create PROXY_ONLY_SUBNET \
      --purpose=REGIONAL_MANAGED_PROXY \
      --role=ACTIVE \
      --region=REGION \
      --network=NETWORK \
      --range=PROXY_ONLY_RANGE
    

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

    • PROXY_ONLY_SUBNET: プロキシ専用サブネットの名前。
    • REGION: ワークステーション クラスタとロードバランサが配置されているリージョン。
    • NETWORK: ワークステーション クラスタとロードバランサが配置されている VPC ネットワーク。
    • PROXY_ONLY_RANGE: VPC ネットワーク内の未使用の CIDR ブロック(10.0.0.0/24 など)。最小サイズは /26(64 アドレス)です。

    詳細については、Envoy ベースのロードバランサのプロキシ専用サブネットと gcloud compute networks subnets create リファレンス ドキュメントをご覧ください。

    REST

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/regions/REGION/subnetworks
    {
      "name": "PROXY_ONLY_SUBNET",
      "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_NAME/global/networks/NETWORK",
      "ipCidrRange": "PROXY_ONLY_RANGE",
      "purpose": "REGIONAL_MANAGED_PROXY",
      "role": "ACTIVE"
    }
    

    以下を置き換えます。

    • PROJECT_NAME: プロジェクトの名前。
    • REGION: ワークステーション クラスタとロードバランサが配置されているリージョン。
    • PROXY_ONLY_SUBNET: プロキシ専用サブネットの名前。
    • NETWORK: ワークステーション クラスタとロードバランサが配置されている VPC ネットワーク。
    • PROXY_ONLY_RANGE: VPC ネットワーク内の未使用の CIDR ブロック(10.0.0.0/24 など)。最小サイズは /26(64 アドレス)です。
  2. リージョン ロードバランサ リソースを作成する: バックエンド サービスを作成し、Private Service Connect NEG バックエンドを追加して、URL マップを作成し、ターゲット HTTPS プロキシを作成して、ワークステーション クラスタと同じリージョンに静的 IP アドレスを予約します。

    gcloud

    1. リージョン バックエンド サービスを作成します。リージョン外部アプリケーション ロードバランサの場合は --load-balancing-scheme を EXTERNAL_MANAGED に設定し、内部アプリケーション ロードバランサの場合は INTERNAL_MANAGED に設定します。

      gcloud compute backend-services create BACKEND_SERVICE_NAME \
        --load-balancing-scheme=SCHEME \
        --protocol=HTTPS \
        --region=REGION
      

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

      • BACKEND_SERVICE_NAME: バックエンド サービスの名前。
      • SCHEME: ロード バランシング スキーム(リージョン外部アプリケーション ロードバランサの場合は EXTERNAL_MANAGED、内部アプリケーション ロードバランサの場合は INTERNAL_MANAGED)。
      • REGION: ワークステーション クラスタとロードバランサが配置されているリージョン。
    2. ワークステーション クラスタを指す Private Service Connect NEG をバックエンド サービスに追加します。

      gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
        --network-endpoint-group=NEG_NAME \
        --network-endpoint-group-region=REGION \
        --region=REGION
      

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

      • BACKEND_SERVICE_NAME: バックエンド サービスの名前。
      • NEG_NAME: ネットワーク エンドポイント グループの名前。
      • REGION: ネットワーク エンドポイント グループとバックエンド サービスのリージョン。
    3. 受信リクエストをバックエンド サービスに転送するためのリージョン URL マップを作成します。

      gcloud compute url-maps create URL_MAP_NAME \
        --default-service=BACKEND_SERVICE_NAME \
        --region=REGION
      

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

      • URL_MAP_NAME: URL マップの名前。
      • BACKEND_SERVICE_NAME: バックエンド サービスの名前。
      • REGION: URL マップのリージョン。
    4. リージョン ターゲット HTTPS プロキシを作成します。

      gcloud compute target-https-proxies create TARGET_HTTPS_PROXY_NAME \
        --ssl-certificates=SSL_CERTIFICATE_NAME \
        --url-map=URL_MAP_NAME \
        --url-map-region=REGION \
        --region=REGION
      

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

      • TARGET_HTTPS_PROXY_NAME: ターゲット HTTPS プロキシの名前。
      • SSL_CERTIFICATE_NAME: ロードバランサに関連付けられたリージョン SSL 証明書。
      • URL_MAP_NAME: URL マップの名前。
      • REGION: ターゲット HTTPS プロキシと URL マップのリージョン。
    5. ロードバランサに静的 IP アドレスを予約します。

      リージョン外部ロードバランサの場合:

      gcloud compute addresses create LB_IP_ADDRESS_NAME \
        --region=REGION
      

      内部ロードバランサの場合:

      gcloud compute addresses create LB_IP_ADDRESS_NAME \
        --region=REGION \
        --subnet=SUBNET
      

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

      • LB_IP_ADDRESS_NAME: 予約済みの静的 IP アドレスの名前。
      • REGION: IP アドレスのリージョン。
      • SUBNET: 内部ロードバランサの場合、内部 IP アドレスを予約する VPC サブネット。

    REST

    1. リージョン バックエンド サービスを作成します。

      POST https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/regions/REGION/backendServices
      {
        "name": "BACKEND_SERVICE_NAME",
        "loadBalancingScheme": "SCHEME",
        "protocol": "HTTPS"
      }
      

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

      • PROJECT_NAME: プロジェクトの名前。
      • REGION: バックエンド サービスのリージョン。
      • BACKEND_SERVICE_NAME: バックエンド サービスの名前。
      • SCHEME: ロード バランシング スキーム(リージョン外部アプリケーション ロードバランサの場合は EXTERNAL_MANAGED、内部アプリケーション ロードバランサの場合は INTERNAL_MANAGED)。
    2. ワークステーション クラスタを指す Private Service Connect NEG をバックエンド サービスに追加します。

      PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/regions/REGION/backendServices/BACKEND_SERVICE_NAME
      {
        "backends": [
          {
            "group": "https://www.googleapis.com/compute/v1/projects/PROJECT_NAME/regions/REGION/networkEndpointGroups/NEG_NAME"
          }
        ]
      }
      

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

      • PROJECT_NAME: プロジェクトの名前。
      • REGION: バックエンド サービスと NEG のリージョン。
      • BACKEND_SERVICE_NAME: バックエンド サービスの名前。
      • NEG_NAME: ネットワーク エンドポイント グループの名前。
    3. 受信リクエストをバックエンド サービスに転送するためのリージョン URL マップを作成します。

      POST https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/regions/REGION/urlMaps
      {
        "name": "URL_MAP_NAME",
        "defaultService": "https://www.googleapis.com/compute/v1/projects/PROJECT_NAME/regions/REGION/backendServices/BACKEND_SERVICE_NAME"
      }
      

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

      • PROJECT_NAME: プロジェクトの名前。
      • REGION: URL マップのリージョン。
      • URL_MAP_NAME: URL マップの名前。
      • BACKEND_SERVICE_NAME: バックエンド サービスの名前。
    4. リージョン ターゲット HTTPS プロキシを作成します。

      POST https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/regions/REGION/targetHttpsProxies
      {
        "name": "TARGET_HTTPS_PROXY_NAME",
        "sslCertificates": [
          "https://www.googleapis.com/compute/v1/projects/PROJECT_NAME/regions/REGION/sslCertificates/SSL_CERTIFICATE_NAME"
        ],
        "urlMap": "https://www.googleapis.com/compute/v1/projects/PROJECT_NAME/regions/REGION/urlMaps/URL_MAP_NAME"
      }
      

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

      • PROJECT_NAME: プロジェクトの名前。
      • REGION: ターゲット HTTPS プロキシのリージョン。
      • TARGET_HTTPS_PROXY_NAME: ターゲット HTTPS プロキシの名前。
      • SSL_CERTIFICATE_NAME: リージョン SSL 証明書。
      • URL_MAP_NAME: URL マップリソース。
    5. ロードバランサに静的 IP アドレスを予約します。

      リージョン外部ロードバランサの場合:

      POST https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/regions/REGION/addresses
      {
        "name": "LB_IP_ADDRESS_NAME"
      }
      

      内部ロードバランサの場合:

      POST https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/regions/REGION/addresses
      {
        "name": "LB_IP_ADDRESS_NAME",
        "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_NAME/regions/REGION/subnetworks/SUBNET",
        "addressType": "INTERNAL"
      }
      

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

      • PROJECT_NAME: プロジェクトの名前。
      • REGION: IP アドレスのリージョン。
      • LB_IP_ADDRESS_NAME: 予約済みの静的 IP アドレスの名前。
      • SUBNET: 内部ロードバランサの場合、内部 IP アドレスを予約する VPC サブネット。
  3. 転送ルールでネットワークを指定する: 転送ルールを作成するときに、--network フラグ(内部ロードバランサの場合は --subnet フラグ)を指定します。

    gcloud

    リージョン外部ロードバランサの場合:

    gcloud compute forwarding-rules create HTTPS_FORWARDING_RULE_NAME \
      --load-balancing-scheme=EXTERNAL_MANAGED \
      --network-tier=PREMIUM \
      --network=NETWORK \
      --address=LB_IP_ADDRESS_NAME \
      --ports=443 \
      --region=REGION \
      --target-https-proxy=TARGET_HTTPS_PROXY_NAME \
      --target-https-proxy-region=REGION
    

    内部ロードバランサの場合:

    gcloud compute forwarding-rules create HTTPS_FORWARDING_RULE_NAME \
      --load-balancing-scheme=INTERNAL_MANAGED \
      --network=NETWORK \
      --subnet=SUBNET \
      --address=LB_IP_ADDRESS_NAME \
      --ports=443 \
      --region=REGION \
      --target-https-proxy=TARGET_HTTPS_PROXY_NAME \
      --target-https-proxy-region=REGION
    

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

    • HTTPS_FORWARDING_RULE_NAME: 作成する転送ルールの名前。
    • NETWORK: ロードバランサとワークステーション クラスタが配置されている VPC ネットワーク。
    • SUBNET: 内部ロードバランサの場合、予約済みの内部 IP アドレスが配置されている VPC サブネット。
    • LB_IP_ADDRESS_NAME: ロードバランサの予約済みの静的外部 IP アドレスまたは内部 IP アドレスの名前。
    • REGION: 転送ルールとターゲット HTTPS プロキシのリージョン。
    • TARGET_HTTPS_PROXY_NAME: トラフィックを受信するターゲット HTTPS プロキシ。

    REST

    リージョン外部ロードバランサの場合:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/regions/REGION/forwardingRules
    {
      "loadBalancingScheme": "EXTERNAL_MANAGED",
      "networkTier": "PREMIUM",
      "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_NAME/global/networks/NETWORK",
      "IPAddress": "https://www.googleapis.com/compute/v1/projects/PROJECT_NAME/regions/REGION/addresses/LB_IP_ADDRESS_NAME",
      "target": "https://www.googleapis.com/compute/v1/projects/PROJECT_NAME/regions/REGION/targetHttpsProxies/TARGET_HTTPS_PROXY_NAME",
      "name": "HTTPS_FORWARDING_RULE_NAME",
      "portRange": "443-443"
    }
    

    内部ロードバランサの場合:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/regions/REGION/forwardingRules
    {
      "loadBalancingScheme": "INTERNAL_MANAGED",
      "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_NAME/global/networks/NETWORK",
      "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_NAME/regions/REGION/subnetworks/SUBNET",
      "IPAddress": "https://www.googleapis.com/compute/v1/projects/PROJECT_NAME/regions/REGION/addresses/LB_IP_ADDRESS_NAME",
      "target": "https://www.googleapis.com/compute/v1/projects/PROJECT_NAME/regions/REGION/targetHttpsProxies/TARGET_HTTPS_PROXY_NAME",
      "name": "HTTPS_FORWARDING_RULE_NAME",
      "portRange": "443-443"
    }
    

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

    • PROJECT_NAME: プロジェクトの名前。
    • REGION: 転送ルールとターゲット HTTPS プロキシのリージョン。
    • NETWORK: ロードバランサとワークステーション クラスタが配置されている VPC ネットワーク。
    • LB_IP_ADDRESS_NAME: ロードバランサの予約済みの静的外部 IP アドレスまたは内部 IP アドレスの名前。
    • TARGET_HTTPS_PROXY_NAME: トラフィックを受信するターゲット HTTPS プロキシ。
    • HTTPS_FORWARDING_RULE_NAME: 作成する転送ルールの名前。
    • SUBNET: 内部ロードバランサの場合、予約済みの内部 IP アドレスが配置されている VPC サブネット。

DNS を構成する

DNS を構成し、*.DOMAIN(*.example.com など)を前の手順で予約した IP アドレスにマッピングするレコードを追加します。

  • 外部アプリケーション ロードバランサ: *.DOMAIN をパブリック DNS ゾーンの予約済みの静的外部 IP アドレスにマッピングする DNS レコードを追加します。Cloud DNS を使用してドメインの DNS を管理している場合は、DNS レコードを追加するをご覧ください。

  • 内部アプリケーション ロードバランサ: VPC ネットワークで承認された限定公開 DNS ゾーンの予約済み静的内部 IP アドレスに *.DOMAIN をマッピングする DNS レコードを追加します。Cloud DNS を使用している場合は、限定公開ゾーンを作成すると DNS レコードを追加するをご覧ください。

ワークステーション構成とワークステーションを作成する

カスタム ドメインを使用してワークステーションにアクセスするには、次のようにします。

  1. カスタム ドメインを持つクラスタを使用して、ワークステーション構成を作成します。

  2. カスタム ドメインを含むワークステーション構成を使用して、ワークステーションを作成します。

次のステップ

カスタム ドメインとプライベート クラスタの設定の詳細については、以下をご覧ください。