Configura domini personalizzati per Cloud Workstations

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:

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 specificare un dominio affidabile e personalizzato utilizzando l'interfaccia a riga di comando gcloud tramite i comandi API REST.

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

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

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

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

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

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

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

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

  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 è la porta 80.
    • 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

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

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

  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

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

  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 di servizio di backend.

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

  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 di servizio di backend.

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

  1. Usa 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 saperne di più sulla configurazione di domini personalizzati e cluster privati, consulta le seguenti: