Configurar dominios personalizados para Cloud Workstations

Para acceder a tus estaciones de trabajo, puedes especificar un dominio personalizado de confianza en lugar de usar el dominio cloudworkstations.dev.

Arquitectura

Para usar Cloud Workstations con un nombre de host personalizado, configura un clúster privado y configura el endpoint de Private Service Connect (PSC) para el acceso HTTP de tu clúster privado. También debes crear un balanceador de carga de aplicaciones con un backend de PSC que tenga como destino el endpoint de PSC creado para tu clúster privado. Este balanceador de carga de aplicaciones puede ser externo o interno, y gestiona el certificado SSL de tu dominio personalizado.

En el siguiente diagrama se muestra un clúster con un dominio personalizado:

Imagen 1. Clúster con dominio personalizado

Antes de empezar

Para configurar un dominio personalizado de Cloud Workstations, sigue estos pasos:

  1. Crea un clúster privado y especifica un dominio personalizado de confianza con los comandos de la gcloud CLI o de la API REST.

  2. Crea un balanceador de carga de aplicaciones externo global con un backend de Private Service Connect (PSC) en el mismo proyecto que usaste para el proyecto del clúster de estaciones de trabajo. Ten en cuenta lo siguiente:

    1. Si quieres que tus estaciones de trabajo sean privadas (es decir, que no se pueda acceder a ellas a través de Internet público), asegúrate de crear un balanceador de carga interno. Para ello, crea una zona DNS privada y añade un registro que asigne el dominio a la dirección IP interna que usa el balanceador de carga. Para obtener más información sobre cómo crear un balanceador de carga interno, consulta la sección Nube privada virtual (VPC).

    2. El adjunto de servicio al que debes hacer referencia en el balanceador de carga se puede obtener en el recurso de clúster de la estación de trabajo después de crear el clúster.

    3. Asegúrate de obtener un certificado y especificarlo en el balanceador de carga como certificado comodín para tu dominio (por ejemplo, *.us-west1-cluster1.example.com). Consulta los certificados y los Google Cloud balanceadores de carga para ver los tipos de certificados que se admiten en el balanceador de carga que has seleccionado.

    4. También puedes crear el balanceador de carga en otro proyecto, siempre que lo añadas a la lista PrivateClusterConfig.allowedProjects.

    5. Si tienes varios clústeres de estaciones de trabajo en tu organización, puedes usar un único balanceador de carga con servicios de backend, certificados y reglas de enrutamiento independientes.

  3. Configura un sistema de nombres de dominio (DNS). Como se trata de un dominio que gestionas, configura un DNS para este dominio mapeando todos los subdominios del dominio proporcionado al balanceador de carga. Por ejemplo, crea una zona DNS para us-west1-cluster1.example.com y añade una entrada que asigne *.us-west1-cluster1.example.com a la dirección IP externa que usa tu balanceador de carga.

  4. Para acceder a las estaciones de trabajo mediante el dominio personalizado, usa el clúster que has creado para crear una configuración de estación de trabajo y, a continuación, crea una estación de trabajo con esa configuración.

  5. Inicia tu estación de trabajo y comprueba la URL. Cuando especifica un dominio personalizado, la URL de la estación de trabajo tiene el siguiente formato:

    https://PORT-WORKSTATION_NAME.DOMAIN
    

    Las siguientes partes de la URL dependen de tu configuración:

    • PORT: número de puerto, que es el puerto 80 de forma predeterminada.
    • WORKSTATION_NAME: el nombre de tu estación de trabajo.
    • DOMAIN: el nombre de dominio específico de tu clúster

Crear un clúster privado

Crea un clúster de estaciones de trabajo privadas con un endpoint privado:

gcloud

  1. Antes de empezar, asegúrate de haber inicializado la CLI de gcloud ejecutando gcloud init y de haber especificado un proyecto predeterminado. En los ejemplos que se muestran a continuación se da por hecho que has definido tu proyecto predeterminado.

  2. Para crear un clúster de estaciones de trabajo privadas, ejecuta el siguiente comando:

    gcloud workstations clusters create WORKSTATION_CLUSTER \
      --region=REGION \
      --domain=DOMAIN \
      --network=NETWORK \
      --subnetwork=SUBNETWORK \
      --enable-private-endpoint
    

    Haz los cambios siguientes:

    • WORKSTATION_CLUSTER: nombre del clúster de estaciones de trabajo que se va a crear.
    • REGION: el nombre de la región del clúster.
    • DOMAIN: el nombre de dominio que usa Cloud Workstations para el acceso HTTP. Usa un subdominio único para este clúster, por ejemplo, us-west1-cluster1.example.com.
    • NETWORK: nombre de la red de VPC. Si se omite, se usará la VPC predeterminada.
    • SUBNETOWRK: el nombre de la subred de la red de VPC. Si se omiten tanto la red como la subred, se usará la VPC predeterminada y la subred predeterminada de la región especificada.

Para obtener más información sobre este comando de la CLI gcloud, consulta la documentación de referencia de 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

Haz los cambios siguientes:

  • DOMAIN: el nombre de dominio que usa Cloud Workstations para el acceso HTTP. Debe ser un subdominio único para este clúster. Por ejemplo, us-west1-cluster1.example.com.
  • NETWORK: nombre de la red de VPC. Si se omite, se usará la VPC predeterminada.
  • SUBNETOWRK: el nombre de la subred de la red de VPC. Si se omiten tanto la red como la subred, se usará la VPC predeterminada y la subred predeterminada de la región especificada.
  • PROJECT_NAME: el nombre del proyecto.
  • REGION: el nombre de la región del clúster.
  • WORKSTATION_CLUSTER: nombre del clúster de estaciones de trabajo que se va a crear.

Para obtener más información sobre este método de la API, consulta la documentación de referencia de 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"
}

Haz los cambios siguientes:

  • PROJECT_NAME: el nombre del proyecto.
  • REGION: el nombre de la región del clúster.
  • WORKSTATION_CLUSTER: nombre del clúster de estaciones de trabajo que se va a crear.
  • DOMAIN: el nombre de dominio que usa Cloud Workstations para el acceso HTTP. Debe ser un subdominio único para este clúster. Por ejemplo, us-west1-cluster1.example.com.
  • NETWORK: nombre de la red de VPC. Si se omite, se usará la VPC predeterminada.
  • SUBNETOWRK: el nombre de la subred de la red de VPC. Si se omiten tanto la red como la subred, se usará la VPC predeterminada y la subred predeterminada de la región especificada.

Para obtener más información sobre este método de la API, consulta la documentación de referencia de workstationClusters.create.

Crear un balanceador de carga de aplicación externo global con un backend de PSC

Sigue estos pasos de la gcloudAPI REST y la CLI para crear un balanceador de carga de aplicaciones externo global con un backend de PSC:

  1. Crear un NEG para conectarse a un servicio publicado
  2. Añadir un backend a un balanceador de carga de aplicación externo global
  3. Crea un mapa de URLs para dirigir las solicitudes entrantes al servicio de backend
  4. Crear un proxy HTTPS de destino
  5. Crear una dirección global
  6. Crear una regla de reenvío

Crear un NEG para conectarse a un servicio publicado

Cuando creas un NEG que apunta a un servicio publicado, necesitas el URI de acoplamiento de servicio del servicio. La vinculación de servicio tiene este formato: projects/SERVICE_PROJECT/regions/REGION/serviceAttachments/SERVICE_NAME. Puedes encontrar el URI en el recurso del clúster de estaciones de trabajo.

gcloud

gcloud compute network-endpoint-groups create NEG_NAME \
  --network-endpoint-type=private-service-connect \
  --psc-target-service=TARGET_SERVICE \
  --region=REGION \
  --subnet=SUBNET

Haz los cambios siguientes:

  • NEG_NAME: nombre del grupo de endpoints de red.
  • TARGET_SERVICE: el URI del archivo adjunto de servicio.
  • REGION: la región en la que se va a crear el grupo de endpoints de red. La región debe ser la misma que la del servicio de destino.
  • SUBNET: la subred en la que se va a crear el grupo de puntos finales de red. La subred debe estar en la misma región que el servicio de destino. Debes proporcionar una subred si proporcionas la red. Si se omiten tanto la red como la subred, se usará la red predeterminada y la subred predeterminada del REGION especificado.

Para obtener más información sobre este comando de la CLI gcloud, consulta la documentación de referencia de 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"
}

Haz los cambios siguientes:

  • PROJECT_NAME: el nombre del proyecto.
  • REGION: la región en la que se va a crear el grupo de endpoints de red. La región debe ser la misma que la del servicio de destino.
  • NEG_NAME: nombre del grupo de endpoints de red.
  • TARGET_SERVICE: el URI del archivo adjunto de servicio.

Añadir un backend a un balanceador de carga de aplicación externo global

gcloud

  1. Crea un servicio de backend para el servicio de destino:

    gcloud compute backend-services create BACKEND_SERVICE_NAME \
    --load-balancing-scheme=EXTERNAL_MANAGED \
    --protocol=HTTPS \
    --global
    

    Sustituye BACKEND_SERVICE_NAME por el nombre del servicio backend.

  2. Añade el NEG de Private Service Connect que apunta al servicio de destino.

    gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
    --network-endpoint-group=NEG_NAME \
    --network-endpoint-group-region=NEG_REGION \
    --global
    

    Haz los cambios siguientes:

    • BACKEND_SERVICE_NAME: el nombre del servicio de backend.
    • NEG_NAME: el nombre del grupo de endpoints de red.
    • NEG_REGION: la región del grupo de puntos finales de red.

Para obtener más información sobre este comando de la CLI gcloud, consulta la documentación de referencia de gcloud compute backend-services create y gcloud compute backend-services add-backend.

REST

  1. Crea un servicio de backend para el servicio de destino:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/global/backendServices
    {
      "protocol": "HTTPS",
      "loadBalancingScheme": "EXTERNAL_MANAGED",
      "name": "BACKEND_SERVICE_NAME"
    }
    

    Sustituye BACKEND_SERVICE_NAME por el nombre del servicio backend.

  2. Añade el NEG de Private Service Connect que apunta al servicio de destino.

    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 "
        }
      ]
    }
    

    Haz los cambios siguientes:

    • PROJECT_NAME: el nombre del proyecto.
    • BACKEND_SERVICE_NAME: el nombre del servicio de backend.
    • NEG_REGION: la región del grupo de puntos finales de red.
    • NEG_NAME: el nombre del grupo de endpoints de red.

Crea un mapa de URLs para enrutar las solicitudes entrantes al servicio de backend

gcloud

gcloud compute url-maps create URL_MAP_NAME \
  --default-service=BACKEND_SERVICE_NAME \
  --global

Haz los cambios siguientes:

  • URL_MAP_NAME: nombre del mapa de URLs que se va a crear.
  • BACKEND_SERVICE_NAME: nombre del servicio de backend que se va a usar en las solicitudes cuando este mapa de URLs no tenga asignaciones.

Para obtener más información sobre este comando de la CLI gcloud, consulta la documentación de referencia de 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 "
}

Haz los cambios siguientes:

  • PROJECT_NAME: el nombre del proyecto.
  • URL_MAP_NAME: nombre del mapa de URLs que se va a crear.
  • BACKEND_SERVICE_NAME: nombre del servicio de backend que se va a usar en las solicitudes cuando este mapa de URLs no tenga asignaciones.

Crear un proxy HTTPS de destino

Crea un proxy HTTPS de destino para enrutar las solicitudes a tu mapa de URLs. El proxy es la parte del balanceador de carga que contiene el certificado SSL para el balanceo de carga HTTPS, por lo que también debes cargar tu certificado en este paso:

gcloud

gcloud compute target-https-proxies create TARGET_HTTPS_PROXY_NAME \
  --ssl-certificates=SSL_CERTIFICATE_NAME \
  --url-map=URL_MAP_NAME \
  --global

Haz los cambios siguientes:

  • TARGET_HTTPS_PROXY_NAME: nombre del proxy HTTPS de destino que se va a crear.
  • SSL_CERTIFICATE_NAME: el certificado SSL asociado al balanceador de carga.
  • URL_MAP_NAME: el recurso de mapa de URLs.

Para obtener más información sobre este comando de la CLI gcloud, consulta la documentación de referencia de 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"
}

Haz los cambios siguientes:

  • PROJECT_NAME: el nombre del proyecto.
  • SSL_CERTIFICATE_NAME: el certificado SSL asociado al balanceador de carga.
  • URL_MAP_NAME: el recurso de mapa de URLs.
  • TARGET_HTTPS_PROXY_NAME: nombre del proxy HTTPS de destino que se va a crear.

Crear una dirección global

Reserva una dirección IP estática para que la use tu balanceador de carga:

gcloud

gcloud compute addresses create LB_IP_ADDRESS_NAME \
  --global

Haz los cambios siguientes:

  • LB_IP_ADDRESS_NAME: nombre de la dirección IP externa o interna estática reservada del balanceador de carga.

Para obtener más información sobre este comando de la CLI gcloud, consulta la documentación de referencia de gcloud compute addresses create.

REST

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/global/addresses
{
  "name": "LB_IP_ADDRESS_NAME"
}

Haz los cambios siguientes:

  • PROJECT_NAME: el nombre del proyecto.
  • LB_IP_ADDRESS_NAME: nombre de la dirección IP externa o interna estática reservada del balanceador de carga.

Crear una regla de reenvío

Crea una regla de reenvío para dirigir las solicitudes entrantes 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

Haz los cambios siguientes:

  • HTTPS_FORWARDING_RULE_NAME: el nombre de la regla de reenvío que se va a crear.
  • LB_IP_ADDRESS_NAME: nombre de la dirección IP externa o interna estática reservada del balanceador de carga.
  • TARGET_HTTPS_PROXY_NAME: el proxy HTTPS de destino que recibe el tráfico.

Para obtener más información sobre este comando de la CLI gcloud, consulta la documentación de referencia de 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"
}

Haz los cambios siguientes:

  • PROJECT_NAME: el nombre del proyecto.
  • LB_IP_ADDRESS_NAME: nombre de la dirección IP externa o interna estática reservada del balanceador de carga.
  • TARGET_HTTPS_PROXY_NAME: el proxy HTTPS de destino que recibe el tráfico.
  • HTTPS_FORWARDING_RULE_NAME: el nombre de la regla de reenvío que se va a crear.

Configurar un DNS

Configura un DNS y añade un registro que asigne *.DOMAIN (por ejemplo, *.example.com) a la dirección IP reservada en el paso anterior. Si usas Cloud DNS para gestionar los DNS de tu dominio, consulta el artículo Añadir un registro DNS.

Crea la configuración y la estación de trabajo

Para acceder a las estaciones de trabajo mediante el dominio personalizado, haz lo siguiente:

  1. Usa el clúster con el dominio personalizado para crear una configuración de estación de trabajo.

  2. Crea una estación de trabajo con la configuración de la estación de trabajo y el dominio personalizado.

Siguientes pasos

Para obtener más información sobre cómo configurar dominios personalizados y clústeres privados, consulte los siguientes artículos: