Per accedere alle tue stazioni di lavoro, puoi specificare un dominio personalizzato attendibile anziché utilizzare il dominio cloudworkstations.dev
.
Architettura
Per utilizzare Cloud Workstations con un nome host personalizzato, configura un cluster privato e configura l'endpoint Private Service Connect (PSC) per l'ingresso HTTP per il tuo cluster privato. Devi anche creare un bilanciatore del carico delle applicazioni con backend PSC che abbia come target l'endpoint PSC creato per il tuo cluster privato. Questo bilanciatore del carico delle applicazioni può essere esterno o interno e gestisce il certificato SSL per il tuo dominio personalizzato.
Il seguente diagramma mostra un cluster con un dominio personalizzato:
Prima di iniziare
Per configurare un dominio personalizzato di Cloud Workstations:
Crea un cluster privato e specifica un dominio personalizzato attendibile utilizzando i comandi
gcloud
CLI o l'API REST.Crea un bilanciatore del carico delle applicazioni esterno globale con un backend Private Service Connect (PSC) nello stesso progetto utilizzato per il progetto del cluster di workstation. Tieni presente quanto segue:
Se vuoi che le tue stazioni di lavoro siano private (inaccessibili tramite internet pubblico), assicurati di creare un bilanciatore del carico interno. A tale scopo, crea una zona DNS privata e aggiungi un record che mappa il dominio all'indirizzo IP interno utilizzato dal bilanciatore del carico. Per ulteriori informazioni su come creare un bilanciatore del carico interno, consulta la documentazione di Virtual Private Cloud (VPC).
L'attacco del servizio a cui devi fare riferimento nel bilanciatore del carico può essere ottenuto nella risorsa del cluster della workstation dopo aver creato il cluster.
Assicurati di ottenere un certificato e di specificarlo nel bilanciatore di carico come certificato con caratteri jolly per il tuo dominio, ad esempio
*.us-west1-cluster1.example.com
. Consulta Certificati e bilanciatori del carico Google Cloud per conoscere i tipi di certificati supportati per il bilanciatore del carico selezionato.Puoi anche creare il bilanciatore del carico in un altro progetto, purché lo aggiunga all'elenco
PrivateClusterConfig.allowedProjects
.Se la tua organizzazione ha più cluster di workstation, puoi utilizzare un singolo bilanciatore del carico con servizi, certificati e regole di routing di backend separati.
Configura un Domain Name System (DNS). Poiché si tratta di un dominio che gestisci, configura un DNS per questo dominio mappando tutti i sottodomini del dominio fornito al bilanciatore del carico. Ad esempio, crea una zona DNS per
us-west1-cluster1.example.com
e aggiungi una mappatura delle voci*.us-west1-cluster1.example.com
all'indirizzo IP esterno utilizzato dal bilanciatore del carico.Per accedere alle workstation utilizzando il dominio personalizzato, utilizza il cluster che hai creato per creare una configurazione della workstation, quindi crea una workstation utilizzando questa configurazione.
Avvia la workstation e controlla l'URL. Quando specifichi un dominio personalizzato, l'URL della workstation utilizza il seguente formato:
https://PORT-WORKSTATION_NAME.DOMAIN
Le seguenti parti dell'URL dipendono dalla configurazione:
PORT
: il numero di porta, che per impostazione predefinita è80
.WORKSTATION_NAME
: il nome della tua workstation.DOMAIN
: il nome di dominio specifico del cluster
Creare un cluster privato
Crea un cluster di workstation privato con un endpoint privato:
gcloud
Prima di iniziare, assicurati di aver inizializzato la CLI
gcloud
eseguendogcloud init
e di aver specificato un progetto predefinito. Gli esempi riportati di seguito presuppongono che tu abbia impostato il progetto predefinito.Per creare un cluster di workstation privato, esegui il seguente comando:
gcloud workstations clusters create WORKSTATION_CLUSTER \ --region=REGION \ --domain=DOMAIN \ --network=NETWORK \ --subnetwork=SUBNETWORK \ --enable-private-endpoint
Sostituisci quanto segue:
WORKSTATION_CLUSTER
: il nome del cluster di workstation da creare.REGION
: il nome della regione del cluster.DOMAIN
: il nome di dominio utilizzato da Cloud Workstations per l'ingresso HTTP. Utilizza un sottodominio univoco per questo cluster, ad esempious-west1-cluster1.example.com
.NETWORK
: il nome della rete VPC. Se omesso, viene utilizzato il VPC predefinito.SUBNETOWRK
: il nome della subnet nella rete VPC. Se vengono omessi sia la rete sia la subnet, viene utilizzata la VPC predefinita e la subnet predefinita nella REGION specificata.
Per ulteriori informazioni su questo comando gcloud
della CLI, consulta la documentazione di riferimento di 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
Sostituisci quanto segue:
DOMAIN
: il nome di dominio utilizzato da Cloud Workstations per l'ingresso HTTP. Deve essere un sottodominio univoco per questo cluster, ad esempious-west1-cluster1.example.com
.NETWORK
: il nome della rete VPC. Se omesso, viene utilizzato il VPC predefinito.SUBNETOWRK
: il nome della subnet nella rete VPC. Se vengono omessi sia la rete sia la subnet, viene utilizzata la VPC predefinita e la subnet predefinita nella REGION specificata.PROJECT_NAME
: il nome del progetto.REGION
: il nome della regione del cluster.WORKSTATION_CLUSTER
: il nome del cluster di workstation da creare.
Per saperne di più su questo metodo dell'API, consulta la documentazione di riferimento di 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" }
Sostituisci quanto segue:
PROJECT_NAME
: il nome del progetto.REGION
: il nome della regione del cluster.WORKSTATION_CLUSTER
: il nome del cluster di workstation da creare.DOMAIN
: il nome di dominio utilizzato da Cloud Workstations per l'ingresso HTTP. Deve essere un sottodominio univoco per questo cluster, ad esempious-west1-cluster1.example.com
.NETWORK
: il nome della rete VPC. Se omesso, viene utilizzato il VPC predefinito.SUBNETOWRK
: il nome della subnet nella rete VPC. Se vengono omessi sia la rete sia la subnet, viene utilizzata la VPC predefinita e la subnet predefinita nella REGION specificata.
Per saperne di più su questo metodo dell'API, consulta la documentazione di riferimento di workstationClusters.create
.
Crea un bilanciatore del carico delle applicazioni esterno globale con backend PSC
Segui questi passaggi dell'interfaccia a riga di comando gcloud
e dell'API REST per creare un bilanciatore del carico delle applicazioni esterno globale con un backend PSC:
- Creare un NEG per connettersi a un servizio pubblicato
- Aggiungere un backend a un bilanciatore del carico delle applicazioni esterno globale
- Creare una mappa URL per instradare le richieste in entrata al servizio di backend
- Creare un proxy HTTPS di destinazione
- Creare un indirizzo globale
- Creare una regola di forwarding
Creare un NEG per connettersi a un servizio pubblicato
Quando crei un NEG che rimanda a un servizio pubblicato, devi disporre dell'URI di allegato del servizio. Il collegamento al servizio ha il seguente formato:
projects/SERVICE_PROJECT/regions/REGION/serviceAttachments/SERVICE_NAME
.
Puoi trovare l'URI nella risorsa del cluster di workstation.
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
Sostituisci quanto segue:
NEG_NAME
: un nome per il gruppo di endpoint di rete.TARGET_SERVICE
: l'URI del collegamento al servizio.REGION
: la regione in cui creare il gruppo di endpoint di rete. La regione deve essere la stessa del servizio di destinazione.NETWORK
: la rete in cui creare il gruppo di endpoint di rete. Se omesso, viene utilizzata la rete predefinita.SUBNET
: la subnet in cui creare il gruppo di endpoint di rete. La subnet deve trovarsi nella stessa regione del servizio di destinazione. Se fornisci la rete, devi fornire anche una subnet. Se vengono omessi sia la rete sia la sottorete, viene utilizzata la rete predefinita e la sottorete predefinita nelREGION
specificato.
Per ulteriori informazioni su questo comando gcloud
della CLI, consulta la documentazione di riferimento di 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" }
Sostituisci quanto segue:
PROJECT_NAME
: il nome del progetto.REGION
: la regione in cui creare il gruppo di endpoint di rete. La regione deve essere la stessa del servizio di destinazione.NEG_NAME
: un nome per il gruppo di endpoint di rete.TARGET_SERVICE
: l'URI del collegamento al servizio.
Aggiungere un backend a un bilanciatore del carico delle applicazioni esterno globale
gcloud
Crea un servizio di backend per il servizio di destinazione:
gcloud compute backend-services create BACKEND_SERVICE_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --protocol=HTTPS \ --global
Sostituisci
BACKEND_SERVICE_NAME
con il nome del servizio di backend.Aggiungi il NEG Private Service Connect che punta al servizio di destinazione.
gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --network-endpoint-group=NEG_NAME \ --network-endpoint-group-region=NEG_REGION \ --global
Sostituisci quanto segue:
BACKEND_SERVICE_NAME
: il nome del servizio di backend.NEG_NAME
: il nome del gruppo di endpoint di rete.NEG_REGION
: la regione del gruppo di endpoint di rete.
Per ulteriori informazioni su questo comando gcloud
della CLI, consulta la documentazione di riferimento di gcloud compute backend-services create
e gcloud compute backend-services add-backend
.
REST
Crea un servizio di backend per il servizio di destinazione:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/global/backendServices { "protocol": "HTTPS", "loadBalancingScheme": "EXTERNAL_MANAGED", "name": "BACKEND_SERVICE_NAME" }
Sostituisci
BACKEND_SERVICE_NAME
con il nome del servizio di backend.Aggiungi il NEG Private Service Connect che punta al servizio di destinazione.
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 " } ] }
Sostituisci quanto segue:
PROJECT_NAME
: il nome del progetto.BACKEND_SERVICE_NAME
: il nome del servizio di backend.NEG_REGION
: la regione del gruppo di endpoint di rete.NEG_NAME
: il nome del gruppo di endpoint di rete.
Crea una mappa URL per instradare le richieste in entrata al servizio di backend
gcloud
gcloud compute url-maps create URL_MAP_NAME \ --default-service=BACKEND_SERVICE_NAME \ --global
Sostituisci quanto segue:
URL_MAP_NAME
: il nome della mappa di URL da creare.BACKEND_SERVICE_NAME
: il nome del servizio di backend da utilizzare per le richieste quando questa mappa URL non ha mappature.
Per ulteriori informazioni su questo comando gcloud
della CLI, consulta la documentazione di riferimento di 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 " }
Sostituisci quanto segue:
PROJECT_NAME
: il nome del progetto.URL_MAP_NAME
: il nome della mappa di URL da creare.BACKEND_SERVICE_NAME
: il nome del servizio di backend da utilizzare per le richieste quando questa mappa URL non ha mappature.
Crea un proxy HTTPS di destinazione
Crea un proxy HTTPS di destinazione per instradare le richieste alla mappa URL. Il proxy è la parte del bilanciatore del carico che contiene il certificato SSL per il bilanciamento del carico HTTPS, quindi devi caricare anche il certificato in questo passaggio:
gcloud
gcloud compute target-https-proxies create TARGET_HTTPS_PROXY_NAME \ --ssl-certificates=SSL_CERTIFICATE_NAME \ --url-map=URL_MAP_NAME \ --global
Sostituisci quanto segue:
TARGET_HTTPS_PROXY_NAME
: il nome del proxy HTTPS di destinazione da creare.SSL_CERTIFICATE_NAME
: il certificato SSL associato al bilanciatore del carico.URL_MAP_NAME
: la risorsa mappa degli URL.
Per ulteriori informazioni su questo comando gcloud
della CLI, consulta la documentazione di riferimento di 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" }
Sostituisci quanto segue:
PROJECT_NAME
: il nome del progetto.SSL_CERTIFICATE_NAME
: il certificato SSL associato al bilanciatore del carico.URL_MAP_NAME
: la risorsa mappa degli URL.TARGET_HTTPS_PROXY_NAME
: il nome del proxy HTTPS di destinazione da creare.
Crea un indirizzo globale
Prenota un indirizzo IP statico da utilizzare dal bilanciatore del carico:
gcloud
gcloud compute addresses create LB_IP_ADDRESS_NAME \ --global
Sostituisci quanto segue:
LB_IP_ADDRESS_NAME
: il nome dell'indirizzo IP statico esterno o interno riservato del bilanciatore del carico.
Per ulteriori informazioni su questo comando gcloud
della CLI, consulta la documentazione di riferimento di gcloud compute addresses create
.
REST
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/global/addresses { "name": "LB_IP_ADDRESS_NAME" }
Sostituisci quanto segue:
PROJECT_NAME
: il nome del progetto.LB_IP_ADDRESS_NAME
: il nome dell'indirizzo IP statico esterno o interno riservato del bilanciatore del carico.
Creare una regola di forwarding
Crea una regola di forwarding per instradare le richieste in entrata al 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
Sostituisci quanto segue:
HTTPS_FORWARDING_RULE_NAME
: il nome della regola di forwarding da creare.LB_IP_ADDRESS_NAME
: il nome dell'indirizzo IP statico esterno o interno riservato del bilanciatore del carico.TARGET_HTTPS_PROXY_NAME
: il proxy HTTPS di destinazione che riceve il traffico.
Per ulteriori informazioni su questo comando gcloud
della CLI, consulta la documentazione di riferimento di 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" }
Sostituisci quanto segue:
PROJECT_NAME
: il nome del progetto.LB_IP_ADDRESS_NAME
: il nome dell'indirizzo IP statico esterno o interno riservato del bilanciatore del carico.TARGET_HTTPS_PROXY_NAME
: il proxy HTTPS di destinazione che riceve il traffico.HTTPS_FORWARDING_RULE_NAME
: il nome della regola di forwarding da creare.
Configurare un DNS
Configura un DNS e aggiungi un record che mappa *.DOMAIN
, ad esempio
*.example.com
, all'indirizzo IP riservato nel passaggio precedente. Se utilizzi Cloud DNS per gestire il DNS per il tuo dominio, consulta Aggiungere un record DNS.
Crea la configurazione e la workstation
Per accedere alle workstation utilizzando il dominio personalizzato:
Utilizza il cluster con il dominio personalizzato per creare una configurazione della workstation.
Crea una workstation utilizzando la configurazione della workstation con il dominio personalizzato.
Passaggi successivi
Per ulteriori informazioni sulla configurazione di domini personalizzati e cluster privati, consulta quanto segue:
- Tutorial: configura un dominio utilizzando Cloud DNS
- Configurare i Controlli di servizio VPC e i cluster privati