Per accedere alle tue workstation, puoi specificare un dominio attendibile e personalizzato anziché
rispetto all'utilizzo del 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 inoltre creare un Bilanciatore del carico delle applicazioni con backend PSC che ha come target l'endpoint PSC creato per il tuo cluster privato. Questo bilanciatore del carico delle applicazioni può essere esterno 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 Cloud Workstations, segui questi passaggi:
Crea un cluster privato e specificare un dominio affidabile e personalizzato utilizzando l'interfaccia a riga di comando
gcloud
tramite i comandi API REST.Crea un bilanciatore del carico delle applicazioni esterno globale con Private Service Connect (PSC) nello stesso progetto che hai utilizzato per il progetto del cluster di workstation. Tieni presente quanto segue:
Se vuoi che le tue workstation siano private (inaccessibili tramite internet pubblico), assicurati di creare un bilanciatore del carico interno. Per farlo, crea una zona DNS privata e aggiungi un record che mappa la all'indirizzo IP interno usato dal bilanciatore del carico. Per saperne di più su come creare un bilanciatore del carico interno, consulta il Documentazione VPC.
Il collegamento al servizio a cui devi fare riferimento nel bilanciatore del carico disponibile sulla risorsa cluster di workstation dopo aver creato in un cluster Kubernetes.
Assicurati di ottenere un certificato e di specificarlo nel caricamento come un certificato con caratteri jolly per il tuo dominio, ad esempio
*.us-west1-cluster1.example.com
. Consulta Certificati e bilanciatori del carico Google Cloud per i tipi di certificati supportati dal bilanciatore del carico che hai selezionato.Puoi anche creare il bilanciatore del carico in un progetto diverso, purché lo aggiungi all'elenco
PrivateClusterConfig.allowedProjects
.Se nella tua organizzazione sono presenti più cluster di workstation, puoi usano un singolo bilanciatore del carico con servizi di backend, certificati, e regole di routing.
Configurare un DNS (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 di workstation, e quindi crea una workstation utilizzando la configurazione della workstation.
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 è la porta80
.WORKSTATION_NAME
: il nome della tua workstation.DOMAIN
: il nome di dominio specifico del tuo cluster
Creare un cluster privato
Crea un cluster di workstation private con un endpoint privato:
gcloud
Prima di iniziare, assicurati di inizializzato l'interfaccia a riga di comando
gcloud
che eseguegcloud init
e che hai specificato un progetto predefinito. Gli esempi riportati di seguito presuppongono che tu abbia impostato il progetto predefinito.Per creare un cluster di workstation private, esegui questo comando:
gcloud workstations clusters create WORKSTATION_CLUSTER \ --region=REGION \ --domain=DOMAIN \ --enable-private-endpoint
Sostituisci quanto segue:
WORKSTATION_CLUSTER
: il nome del cluster di workstation per creare.REGION
: il nome della regione del cluster.DOMAIN
: il nome di dominio utilizzato da Cloud Workstations per Ingress HTTP. Utilizza un sottodominio univoco per questo cluster, ad esempious-west1-cluster1.example.com
.
Per ulteriori informazioni su questo comando dell'interfaccia a riga di comando gcloud
, consulta
gcloud workstations clusters create
documentazione di riferimento.
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}}' 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 Ingress HTTP. Deve essere un sottodominio univoco di questo cluster, ad esempious-west1-cluster1.example.com
.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 } }
Sostituisci quanto segue:
PROJECT_NAME
: il nome del progetto.REGION
: il nome della regione del cluster.WORKSTATION_CLUSTER
: il nome del cluster di workstation per creare.DOMAIN
: il nome di dominio utilizzato da Cloud Workstations per Ingress HTTP. Deve essere un sottodominio univoco di questo cluster, ad esempious-west1-cluster1.example.com
.
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
Crea 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 questo formato:
projects/SERVICE_PROJECT/regions/REGION/serviceAttachments/SERVICE_NAME
.
Puoi trovare l'URI sulla 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 l'endpoint di rete Raggruppa. La regione deve essere la stessa del servizio di destinazione.NETWORK
: la rete per creare l'endpoint di rete Raggruppa. 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. R è necessario specificare la subnet se fornisci la rete. 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 dell'interfaccia a riga di comando gcloud
, consulta
gcloud compute network-endpoint-groups create
documentazione di riferimento.
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 l'endpoint di rete Raggruppa. 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.
Aggiungi 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 di servizio di backend.Aggiungi il NEG Private Service Connect che punta alla 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 dell'interfaccia a riga di comando gcloud
, consulta
gcloud compute backend-services create
e
gcloud compute backend-services add-backend
documentazione di riferimento.
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 di servizio di backend.Aggiungi il NEG Private Service Connect che punta alla 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 URL da creare.BACKEND_SERVICE_NAME
: il nome del backend servizio da utilizzare per le richieste quando questa mappa URL non ha mappature.
Per ulteriori informazioni su questo comando dell'interfaccia a riga di comando gcloud
, consulta
gcloud compute url-maps create
documentazione di riferimento.
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 URL da creare.BACKEND_SERVICE_NAME
: il nome del backend servizio 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 di 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 associate al bilanciatore del carico.URL_MAP_NAME
: la risorsa mappa degli URL.
Per ulteriori informazioni su questo comando dell'interfaccia a riga di comando gcloud
, consulta
gcloud compute target-https-proxies create
documentazione di riferimento.
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 associate al bilanciatore del carico.URL_MAP_NAME
: la risorsa della mappa URL.TARGET_HTTPS_PROXY_NAME
: il nome del protocollo HTTPS di destinazione proxy per la creazione.
Crea un indirizzo globale
Prenota un indirizzo IP statico che il bilanciatore del carico potrà utilizzare:
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 dell'interfaccia a riga di comando gcloud
, consulta
gcloud compute addresses create
documentazione di riferimento.
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'elemento statico riservato all'indirizzo IP esterno o interno del bilanciatore del carico.
Creare una regola di forwarding
Crea una regola di inoltro 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 del una regola di forwarding da creare.LB_IP_ADDRESS_NAME
: il nome dell'elemento statico riservato all'indirizzo IP esterno o interno del bilanciatore del carico.TARGET_HTTPS_PROXY_NAME
: il proxy HTTPS di destinazione che riceve il traffico.
Per ulteriori informazioni su questo comando dell'interfaccia a riga di comando gcloud
, consulta
gcloud compute forwarding-rules create
documentazione di riferimento.
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'elemento statico riservato all'indirizzo IP esterno o interno del bilanciatore del carico.TARGET_HTTPS_PROXY_NAME
: il proxy HTTPS di destinazione che riceve il traffico.HTTPS_FORWARDING_RULE_NAME
: il nome del una 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 prenotato nel passaggio precedente. Se
utilizzare Cloud DNS per gestire il DNS per il tuo dominio, consulta
Aggiungi un record DNS.
Crea la configurazione e la workstation della workstation
Per accedere alle workstation utilizzando il dominio personalizzato:
Usa il cluster con il dominio personalizzato per creare una configurazione di workstation.
Crea una workstation utilizzando la configurazione della workstation con il dominio personalizzato.
Passaggi successivi
Per saperne di più sulla configurazione di domini personalizzati e cluster privati, consulta le seguenti:
- Tutorial: configurare un dominio utilizzando Cloud DNS
- Configura Controlli di servizio VPC e cluster privati