Configurare domini personalizzati per Cloud Workstations

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:

Figura 1. Cluster con dominio personalizzato

Prima di iniziare

Per configurare un dominio personalizzato di Cloud Workstations:

  1. Crea un cluster privato e specifica un dominio personalizzato attendibile utilizzando i comandi gcloud CLI o l'API REST.

  2. 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:

    1. Se vuoi che le tue stazioni di lavoro 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 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).

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

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

    4. Puoi anche creare il bilanciatore del carico in un progetto diverso, purché lo aggiunga all'elenco PrivateClusterConfig.allowedProjects.

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

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

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

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

  1. Prima di iniziare, assicurati di aver inizializzato la CLI 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 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 esempio us-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 esempio us-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 esempio us-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:

  1. Creare un NEG per connettersi a un servizio pubblicato
  2. Aggiungere un backend a un bilanciatore del carico delle applicazioni esterno globale
  3. Creare una mappa URL per instradare le richieste in entrata al servizio di backend
  4. Creare un proxy HTTPS di destinazione
  5. Creare un indirizzo globale
  6. 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 nel REGION 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

  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 gcloud della CLI, consulta la documentazione di riferimento di 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 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:

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

  2. 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: