如要存取工作站,您可以指定信任的自訂網域,而非使用 cloudworkstations.dev
網域。
架構
如要使用自訂主機名稱搭配 Cloud Workstations,請設定私人叢集,並為私人叢集的 HTTP 進入流量設定 Private Service Connect (PSC) 端點。您也必須建立採用 PSC 後端的應用程式負載平衡器,以私人叢集建立的 PSC 端點為目標。這個應用程式負載平衡器可以是外部或內部,並管理自訂網域的 SSL 憑證。
下圖說明具有自訂網域的叢集:
事前準備
如要設定 Cloud Workstations 自訂網域,請按照下列步驟操作:
建立私人叢集,並使用
gcloud
CLI 或 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
,初始化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。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 \ --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
:網路端點群組的名稱。
建立網址對應,將連入要求轉送至後端服務
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 記錄」。
建立工作站設定和工作站
如要使用自訂網域存取工作站,請按照下列步驟操作:
後續步驟
如要進一步瞭解如何設定自訂網域和私人叢集,請參閱下列文章: