configura domini personalizzati per Cloud Workstations

Per accedere alle tue workstation, 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 il traffico HTTP in entrata nel cluster privato. Devi inoltre 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 illustra un cluster con un dominio personalizzato:

Figura 1. Cluster con dominio personalizzato

Prima di iniziare

Per configurare un dominio personalizzato Cloud Workstations, segui questi passaggi:

  1. Crea un cluster privato e specifica un dominio personalizzato affidabile utilizzando i comandi dell'interfaccia a riga di comando gcloud o dell'API REST.

  2. Crea un Application Load Balancer esterno globale con un backend Private Service Connect (PSC) nello stesso progetto che hai utilizzato per il progetto del cluster di workstation. Tieni presente quanto segue:

    1. Se vuoi che le tue workstation siano private (inaccessibili tramite la rete internet pubblica), assicurati di creare un bilanciatore del carico interno. Per farlo, 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 VPC.

    2. Il collegamento al servizio a cui devi fare riferimento nel bilanciatore del carico può essere ottenuto sulla risorsa cluster di workstation dopo aver creato il cluster.

    3. Assicurati di ottenere un certificato e di specificarlo nel bilanciatore del 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 che hai selezionato.

    4. Puoi anche creare il bilanciatore del carico in un altro progetto, a condizione che venga aggiunto all'elenco PrivateClusterConfig.allowedProjects.

    5. Se nella tua organizzazione sono presenti più cluster di workstation, puoi utilizzare un singolo bilanciatore del carico con servizi di backend, certificati e regole di routing separati.

  3. Configura un DNS (Domain Name System). Poiché questo è 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.

  4. Per accedere alle workstation utilizzando il dominio personalizzato, utilizza il cluster che hai creato per creare una configurazione di workstation, quindi crea una workstation utilizzando questa configurazione.

  5. 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 tua configurazione:

    • PORT: il numero di porta, che per impostazione predefinita è la porta 80.
    • WORKSTATION_NAME: nome della workstation.
    • DOMAIN: nome di dominio specifico del cluster

Creare un cluster privato

Crea un cluster di workstation privato con un endpoint privato:

gcloud

  1. Prima di iniziare, assicurati di aver inizializzato l'interfaccia a riga di comando gcloud eseguendo gcloud init e di aver specificato un progetto predefinito. Gli esempi riportati di seguito presuppongono che tu abbia impostato il progetto predefinito.

  2. Per creare un cluster di workstation privato, 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 da creare.
    • REGION: il nome della regione del cluster.
    • DOMAIN: il nome di dominio utilizzato da Cloud Workstations per il traffico HTTP in entrata. Utilizza un sottodominio univoco per questo cluster, ad esempio us-west1-cluster1.example.com.

Per ulteriori informazioni su questo comando dell'interfaccia a riga di comando gcloud, consulta la documentazione di riferimento di gcloud workstations clusters create.

arricciatura

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 il traffico HTTP in entrata. Deve essere un sottodominio univoco per questo cluster, ad esempio us-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 ulteriori informazioni su questo metodo 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 da creare.
  • DOMAIN: il nome di dominio utilizzato da Cloud Workstations per il traffico HTTP in entrata. Deve essere un sottodominio univoco per questo cluster, ad esempio us-west1-cluster1.example.com.

Per ulteriori informazioni su questo metodo API, consulta la documentazione di riferimento di workstationClusters.create.

Crea un Application Load Balancer esterno globale con backend PSC

Segui questi passaggi dell'interfaccia a riga di comando e dell'API REST di gcloud per creare un bilanciatore del carico delle applicazioni esterno globale con un backend PSC:

  1. Crea un NEG per connetterti a un servizio pubblicato
  2. Aggiungi un backend a un Application Load Balancer esterno globale
  3. Crea una mappa URL per instradare le richieste in entrata al servizio di backend
  4. Crea un proxy HTTPS di destinazione
  5. Creare un indirizzo globale
  6. Crea una regola di forwarding

Crea un NEG per connetterti a un servizio pubblicato

Quando crei un NEG che punta a un servizio pubblicato, devi avere l'URI di collegamento del servizio per il servizio. Il collegamento al servizio ha questo formato: projects/SERVICE_PROJECT/regions/REGION/serviceAttachments/SERVICE_NAME. Puoi trovare l'URI nella risorsa 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 trovarsi nella stessa regione del servizio di destinazione.
  • NETWORK: la rete in cui creare il gruppo di endpoint di rete. Se omessa, 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. Devi specificare una subnet se fornisci la rete. Se vengono omesse sia la rete sia la subnet, viene utilizzata la rete predefinita e la subnet predefinita nell'elemento REGION specificato.

Per ulteriori informazioni su questo comando dell'interfaccia a riga di comando gcloud, 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 trovarsi nella stessa regione 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 Application Load Balancer esterno globale

gcloud

  1. 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.

  2. 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 dell'interfaccia a riga di comando gcloud, consulta la documentazione di riferimento su gcloud compute backend-services create e gcloud compute backend-services add-backend.

REST

  1. 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.

  2. 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 URL da creare.
  • BACKEND_SERVICE_NAME: il nome del servizio di backend da utilizzare per le richieste quando questa mappa URL non ha mapping.

Per ulteriori informazioni su questo comando dell'interfaccia a riga di comando gcloud, 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 URL da creare.
  • BACKEND_SERVICE_NAME: il nome del servizio di backend da utilizzare per le richieste quando questa mappa URL non ha mapping.

Crea un proxy HTTPS di destinazione

Crea un proxy HTTPS di destinazione per instradare le richieste alla mappa degli URL. Il proxy è la parte del bilanciatore del carico che contiene il certificato SSL per il bilanciamento del carico HTTPS, quindi caricherai 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 della mappa URL.

Per ulteriori informazioni su questo comando dell'interfaccia a riga di comando gcloud, 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 della mappa URL.
  • TARGET_HTTPS_PROXY_NAME: il nome del proxy HTTPS di destinazione da creare.

Crea un indirizzo globale

Prenota un indirizzo IP statico che verrà utilizzato dal bilanciatore del carico:

gcloud

gcloud compute addresses create LB_IP_ADDRESS_NAME \
  --global

Sostituisci quanto segue:

  • LB_IP_ADDRESS_NAME: 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 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: 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: 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 dell'interfaccia a riga di comando gcloud, 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: 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.

Configura 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 della tua workstation

Per accedere alle workstation utilizzando il dominio personalizzato:

  1. Utilizza il cluster con il dominio personalizzato per creare una configurazione di workstation.

  2. Crea una workstation utilizzando la configurazione della workstation con il dominio personalizzato.

Passaggi successivi

Per maggiori informazioni sulla configurazione di domini personalizzati e cluster privati, consulta quanto segue: