如要存取工作站,您可以指定信任的自訂網域,而非使用 cloudworkstations.dev 網域。
架構
如要使用自訂主機名稱搭配 Cloud Workstations,請設定私人叢集,並為私人叢集的 HTTP 進入流量設定 Private Service Connect (PSC) 端點。您也必須建立採用 PSC 後端的應用程式負載平衡器,以私人叢集建立的 PSC 端點為目標。這個應用程式負載平衡器可以是外部或內部,並管理自訂網域的 SSL 憑證。
下圖說明具有自訂網域的叢集:
事前準備
如要設定 Cloud Workstations 自訂網域,請按照下列步驟操作:
- 建立私人叢集,並使用 - gcloudCLI 或 REST API 指令指定信任的自訂網域。
- 在工作站叢集專案中,建立具有 Private Service Connect (PSC) 後端的全域外部應用程式負載平衡器。注意事項: - 如要將工作站設為私人工作站 (無法透過公開網際網路存取),請務必建立內部負載平衡器。如要這麼做,請建立私人 DNS 區域,並新增一筆記錄,將網域對應至負載平衡器使用的內部 IP 位址。如要進一步瞭解如何建立內部負載平衡器,請參閱虛擬私有雲 (VPC)。 
- 建立叢集後,您可以在工作站叢集資源中取得負載平衡器需要參照的服務附件。 
- 請務必取得憑證,並在負載平衡器上將其指定為網域的萬用字元憑證,例如 - *.us-west1-cluster1.example.com。如要瞭解所選負載平衡器支援的憑證類型,請參閱「憑證和負載平衡器」。 Google Cloud
- 只要將負載平衡器新增至 - PrivateClusterConfig.allowedProjects清單,您也可以在其他專案中建立負載平衡器。
- 如果貴機構有多個工作站叢集,可以使用單一負載平衡器,搭配不同的後端服務、憑證和轉送規則。 
 
- 設定網域名稱系統 (DNS)。由於這是您管理的網域,請將所提供網域的所有子網域對應至負載平衡器,為這個網域設定 DNS。舉例來說,請為 - us-west1-cluster1.example.com建立 DNS 區域,並新增將- *.us-west1-cluster1.example.com對應至負載平衡器所用外部 IP 位址的項目。
- 啟動工作站並檢查網址。指定自訂網域後,工作站網址會採用下列格式: - https://PORT-WORKSTATION_NAME.DOMAIN- 網址的下列部分取決於您的設定: - PORT:通訊埠號碼,預設為通訊埠- 80。
- WORKSTATION_NAME:工作站名稱。
- DOMAIN:叢集專屬網域名稱
 
建立私人叢集
建立具有私人端點的私人工作站叢集:
gcloud
- 開始之前,請務必先執行 - gcloud init,初始化- gcloudCLI,並指定預設專案。下列範例假設您已設定預設專案。
- 如要建立私有工作站叢集,請執行下列指令: - 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。
- SUBNETOWRK:虛擬私有雲網路中的子網路名稱。如果省略網路和子網路,系統會使用預設 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。
- SUBNETOWRK:虛擬私有雲網路中的子網路名稱。如果省略網路和子網路,系統會使用預設 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。
- SUBNETOWRK:虛擬私有雲網路中的子網路名稱。如果省略網路和子網路,系統會使用預設 VPC,以及指定 REGION 中的預設子網路。
如要進一步瞭解這個 API 方法,請參閱 workstationClusters.create 參考說明文件。
建立採用 PSC 後端的全域外部應用程式負載平衡器
請按照下列 gcloud CLI 和 REST API 步驟,建立具有 PSC 後端的全域外部應用程式負載平衡器:
建立 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 \ --subnet=SUBNET
更改下列內容:
- NEG_NAME:網路端點群組的名稱。
- TARGET_SERVICE:服務連結的 URI。
- REGION:要在其中建立網路端點群組的區域。地區必須與目標服務位於相同地區。
- 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:網路端點群組的名稱。
 
建立網址對應,將連入要求轉送至後端服務
gcloud
gcloud compute url-maps create URL_MAP_NAME \ --default-service=BACKEND_SERVICE_NAME \ --global
更改下列內容:
- URL_MAP_NAME:要建立的網址對應名稱。
- BACKEND_SERVICE_NAME:這個網址對應沒有對應時,要求要使用的後端服務名稱。
如要進一步瞭解這個 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:要建立的網址對應名稱。
- BACKEND_SERVICE_NAME:這個網址對應沒有對應時,要求要使用的後端服務名稱。
建立目標 HTTPS Proxy
建立目標 HTTPS Proxy 以轉送要求至您的網址對應。Proxy 是負載平衡器的一部分,用於保存 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 Proxy 名稱。
- SSL_CERTIFICATE_NAME:與負載平衡器相關聯的 SSL 憑證。
- URL_MAP_NAME:網址對應資源。
如要進一步瞭解這個 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:網址對應資源。
- TARGET_HTTPS_PROXY_NAME:要建立的目標 HTTPS Proxy 名稱。
建立全域位址
保留供負載平衡器使用的靜態 IP 位址:
gcloud
gcloud compute addresses create LB_IP_ADDRESS_NAME \ --global
更改下列內容:
- LB_IP_ADDRESS_NAME:負載平衡器預留的靜態外部或內部 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 位址名稱。
建立轉送規則
建立轉送規則,將連入要求轉送至 Proxy:
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 位址名稱。
- TARGET_HTTPS_PROXY_NAME:接收流量的目標 HTTPS Proxy。
如要進一步瞭解這個 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 位址名稱。
- TARGET_HTTPS_PROXY_NAME:接收流量的目標 HTTPS Proxy。
- HTTPS_FORWARDING_RULE_NAME:要建立的轉送規則名稱。
設定 DNS
設定 DNS 並新增記錄,將 *.DOMAIN (例如 *.example.com) 對應至上一步保留的 IP 位址。如果您使用 Cloud DNS 管理網域的 DNS,請參閱「新增 DNS 記錄」。
建立工作站設定和工作站
如要使用自訂網域存取工作站,請按照下列步驟操作:
後續步驟
如要進一步瞭解如何設定自訂網域和私人叢集,請參閱下列文章: