ワークステーションにアクセスするには、cloudworkstations.dev
ドメインを使用するのではなく、信頼できるカスタム ドメインを指定します。
アーキテクチャ
カスタムホスト名で Cloud Workstations を使用するには、限定公開クラスタの HTTP Ingress 用に限定公開クラスタを設定するおよびPrivate Service Connect(PSC)エンドポイントを設定するの手順を行います。また、限定公開クラスタ用に作成された PSC エンドポイントをターゲットとする PSC バックエンドを持つアプリケーション ロードバランサも作成する必要があります。このアプリケーション ロードバランサは外部または内部のいずれかであり、カスタム ドメインの SSL 証明書を管理します。
次の図は、カスタム ドメインが設定されたクラスタを示しています。
準備
Cloud Workstations のカスタム ドメインを設定するには、次の操作を行います。
限定公開クラスタを作成し、
gcloud
CLI または REST API コマンドを使用して信頼できるカスタム ドメインを指定します。ワークステーション クラスタ プロジェクトで使用した同じプロジェクトに Private Service Connect(PSC)バックエンドを持つグローバル外部アプリケーション ロードバランサを作成します。次の点にご注意ください。
ワークステーションを限定公開(公共のインターネットからアクセスできない)にするには、内部ロードバランサを作成してください。これを行うには、プライベート DNS ゾーンを作成し、ロードバランサが使用する内部 IP アドレスにドメインをマッピングするレコードを追加します。内部ロードバランサの作成方法について詳しくは、Virtual Private Cloud(VPC)をご覧ください。
ロードバランサで参照する必要があるサービス アタッチメントは、クラスタを作成した後にワークステーション クラスタ リソースで取得できます。
証明書を取得し、ドメインのワイルドカード証明書としてロードバランサに指定します(例:
*.us-west1-cluster1.example.com
)。選択したロードバランサでサポートされている証明書の種類については、証明書と Google Cloud ロードバランサをご覧ください。PrivateClusterConfig.allowedProjects
リストに追加するだけで、別のプロジェクトにロードバランサを作成することもできます。組織に複数のワークステーション クラスタがある場合は、別々のバックエンド サービス、証明書、ルーティング ルールで単一のロードバランサを使用できます。
ドメイン ネーム システム(DNS)を設定します。これはユーザーが管理するドメインであるため、指定したドメインのすべてのサブドメインをロードバランサにマッピングして、このドメインの DNS を設定します。たとえば、
us-west1-cluster1.example.com
の DNS ゾーンを作成し、ロードバランサで使用される外部 IP アドレスに*.us-west1-cluster1.example.com
をマッピングするエントリを追加します。カスタム ドメインを使用してワークステーションにアクセスするには、作成したクラスタを使用してワークステーション構成を作成し、そのワークステーション構成を使用してワークステーションを作成します。
ワークステーションを起動して URL を確認します。カスタム ドメインを指定すると、ワークステーション URL の形式は次のようになります。
https://PORT-WORKSTATION_NAME.DOMAIN
URL の次の部分は、構成によって異なります。
PORT
: ポート番号(デフォルトはポート80
)。WORKSTATION_NAME
: ワークステーション名。DOMAIN
: クラスタ固有のドメイン名。
限定公開クラスタを作成する
プライベート エンドポイントを持つ限定公開ワークステーション クラスタを作成します。
gcloud
始める前に、
gcloud init
を実行してgcloud
CLI を初期化し、デフォルト プロジェクトを指定していることを確認します。続く例では、デフォルト プロジェクトが設定されていることを前提としています。限定公開ワークステーション クラスタを作成するには、次のコマンドを実行します。
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 が使用されます。SUBNETOWRK
: VPC ネットワークのサブネットワークの名前。ネットワークとサブネットワークの両方を省略すると、デフォルトの VPC が使用され、指定されたリージョンのデフォルトのサブネットワークが使用されます。
この 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 が使用されます。SUBNETOWRK
: VPC ネットワークのサブネットワークの名前。ネットワークとサブネットワークの両方を省略すると、デフォルトの VPC が使用され、指定されたリージョンのデフォルトのサブネットワークが使用されます。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 が使用されます。SUBNETOWRK
: VPC ネットワークのサブネットワークの名前。ネットワークとサブネットワークの両方を省略すると、デフォルトの VPC が使用され、指定されたリージョンのデフォルトのサブネットワークが使用されます。
この API メソッドの詳細については、workstationClusters.create
リファレンス ドキュメントをご覧ください。
PSC バックエンドを持つグローバル外部アプリケーション ロードバランサを作成する
以下の gcloud
CLI と REST API の手順に沿って、PSC バックエンドを持つグローバル外部アプリケーション ロードバランサを作成します。
- 公開サービスに接続するための NEG を作成する
- グローバル外部アプリケーション ロードバランサにバックエンドを追加する
- 受信リクエストをバックエンド サービスに転送するための URL マップを作成する
- ターゲット HTTPS プロキシを作成する
- グローバル アドレスの作成
- 転送ルールの作成
公開サービスに接続するための 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
: ネットワーク エンドポイント グループを作成するネットワーク。省略すると、デフォルト ネットワークが使用されます。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" }
以下を置き換えます。
PROJECT_NAME
: プロジェクトの名前。REGION
: ネットワーク エンドポイント グループを作成するリージョン。リージョンは、ターゲット サービスと同じリージョンにする必要があります。NEG_NAME
: ネットワーク エンドポイント グループの名前。TARGET_SERVICE
: サービス アタッチメントの URI。
グローバル外部アプリケーション ロードバランサにバックエンドを追加する
gcloud
ターゲット サービスのバックエンド サービスを作成します。
gcloud compute backend-services create BACKEND_SERVICE_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --protocol=HTTPS \ --global
BACKEND_SERVICE_NAME
は、バックエンド サービスの名前に置き換えます。ターゲット サービスを指す 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
ターゲット サービスのバックエンド サービスを作成します。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/global/backendServices { "protocol": "HTTPS", "loadBalancingScheme": "EXTERNAL_MANAGED", "name": "BACKEND_SERVICE_NAME" }
BACKEND_SERVICE_NAME
は、バックエンド サービスの名前に置き換えます。ターゲット サービスを指す 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
: 作成する転送ルールの名前。
DNS を設定する
DNS を設定し、*.DOMAIN
(*.example.com
など)を前の手順で予約した IP アドレスにマッピングするレコードを追加します。Cloud DNS を使用してドメインの DNS を管理している場合は、DNS レコードを追加するをご覧ください。
ワークステーション構成とワークステーションを作成する
カスタム ドメインを使用してワークステーションにアクセスするには、次のようにします。
カスタム ドメインを含むクラスタを使用して、ワークステーション構成を作成します。
カスタム ドメインを含むワークステーション構成を使用して、ワークステーションを作成します。
次のステップ
カスタム ドメインと限定公開クラスタの設定の詳細については、以下をご覧ください。