Configura dominios personalizados para Cloud Workstations

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

Arquitectura

Para usar Cloud Workstations con un nombre de host personalizado, configura un clúster privado y configurar el extremo de Private Service Connect (PSC) para la entrada HTTP de tu clúster privado. También debes crear un Balanceador de cargas de aplicaciones con backend de PSC que se orienta al extremo de PSC creado para tu clúster privado. Este balanceador de cargas de aplicaciones puede ser externo interno y administra el certificado SSL de tu dominio personalizado.

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

Figura 1: Clúster con dominio personalizado

Antes de comenzar

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

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

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

    1. Si quieres que tus estaciones de trabajo sean privadas (no se puede acceder a ellas a través del por Internet pública), asegúrate de crear un balanceador de cargas interno. Para ello, crea una zona del DNS privada y agrega un registro que asigne dominio a la dirección IP interna que usa el balanceador de cargas. Si necesitas más información para crear un balanceador de cargas interno, consulta el Documentación de VPC.

    2. El adjunto de servicio al que necesitas hacer referencia en el balanceador de cargas en el recurso del clúster de la estación de trabajo después de crear clúster.

    3. Asegúrate de obtener un certificado y especificarlo en la carga balanceador de cargas como certificado comodín para tu dominio, por ejemplo, *.us-west1-cluster1.example.com Consulta Certificados y balanceadores de cargas de Google Cloud para los tipos de certificados compatibles con el balanceador de cargas que seleccionaste.

    4. También puedes crear el balanceador de cargas en un proyecto diferente, siempre y cuando lo agregas a la lista PrivateClusterConfig.allowedProjects.

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

  3. Configura un sistema de nombres de dominio (DNS). Dado que se trata de un dominio que tú administras, configura un DNS para este dominio asignar todos los subdominios del dominio proporcionado al balanceador de cargas. Para ejemplo, crea una zona del DNS para us-west1-cluster1.example.com y agrega un asignación de entrada *.us-west1-cluster1.example.com a la dirección IP externa que usa el balanceador de cargas.

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

  5. Inicia tu estación de trabajo y verifica la URL. Cuando especificas un dominio personalizado, la URL de la estación de trabajo usa el siguiente formato:

    https://PORT-WORKSTATION_NAME.DOMAIN
    

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

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

Crea un clúster privado

Crea un clúster de estación de trabajo privada con un extremo privado:

gcloud

  1. Antes de comenzar, asegúrate de inicializó la CLI de gcloud ejecutando gcloud init y que especificaste un proyecto predeterminado. En los siguientes ejemplos, se da por sentado que configuraste tu proyecto predeterminado.

  2. Para crear un clúster de estación de trabajo privada, ejecuta el siguiente comando:

    gcloud workstations clusters create WORKSTATION_CLUSTER \
      --region=REGION \
      --domain=DOMAIN \
      --enable-private-endpoint
    

    Reemplaza lo siguiente:

    • WORKSTATION_CLUSTER: Es el nombre del clúster de la estación de trabajo. para crear.
    • REGION: Es el nombre de la región del clúster.
    • DOMAIN: Es el nombre de dominio que usa Cloud Workstations para Entrada HTTP. Usa un subdominio único para este clúster por ejemplo, us-west1-cluster1.example.com.

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

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

Reemplaza lo siguiente:

  • DOMAIN: Es el nombre de dominio que usa Cloud Workstations para Entrada HTTP. Debe ser un subdominio único de este clúster por ejemplo, us-west1-cluster1.example.com.
  • PROJECT_NAME: el nombre del proyecto.
  • REGION: Es el nombre de la región del clúster.
  • WORKSTATION_CLUSTER: Es el nombre del clúster de la estación de trabajo. para crear.

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

REST

POST https://workstations.googleapis.com/v1/projects/PROJECT_NAME/locations/REGION/workstationClusters?workstationClusterId=WORKSTATION_CLUSTER
{
  "domainConfig": {
    "domain": "DOMAIN"
  },
  "privateClusterConfig": {
    "enablePrivateEndpoint": true
  }
}

Reemplaza lo siguiente:

  • PROJECT_NAME: el nombre del proyecto.
  • REGION: Es el nombre de la región del clúster.
  • WORKSTATION_CLUSTER: Es el nombre del clúster de la estación de trabajo. para crear.
  • DOMAIN: Es el nombre de dominio que usa Cloud Workstations para Entrada HTTP. Debe ser un subdominio único de este clúster por ejemplo, us-west1-cluster1.example.com.

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

Crear un balanceador de cargas de aplicaciones externo global con el backend de PSC

Sigue estos pasos de la CLI y la API de REST de gcloud para crear una balanceador de cargas de aplicaciones externo global con un backend de PSC:

  1. Crea un NEG para conectarte a un servicio publicado
  2. Agrega un backend a un balanceador de cargas de aplicaciones externo global
  3. Crea un mapa de URL para enrutar las solicitudes entrantes al servicio de backend
  4. Crea un proxy HTTPS de destino
  5. Crea una dirección global
  6. Crea una regla de reenvío

Crea un NEG para conectarte a un servicio publicado

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

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

Reemplaza lo siguiente:

  • NEG_NAME: un nombre para el grupo de extremos de red.
  • TARGET_SERVICE: El URI del adjunto del servicio.
  • REGION: La región en la que se creará el grupo de extremos de red. La región debe ser la misma que la del servicio de destino.
  • NETWORK: la red en la que se creará el grupo de extremos de red. Si se omite, se usa la red predeterminada.
  • SUBNET: Es la subred para crear el extremo de red. agrupar. La subred debe estar en la misma región que el servicio de destino. R se debe proporcionar la subred si proporcionas la red. Si tanto la red como subred, se usa la red predeterminada y se omiten en el REGION especificado.

Para obtener más información sobre este comando gcloud de la CLI, consulta el gcloud compute network-endpoint-groups create documentación de referencia.

REST

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/regions/REGION/networkEndpointGroups
{
  "pscTargetService": "TARGET_SERVICE",
  "networkEndpointType": "PRIVATE_SERVICE_CONNECT",
  "name": "NEG_NAME"
}

Reemplaza lo siguiente:

  • PROJECT_NAME: el nombre del proyecto.
  • REGION: La región en la que se creará el grupo de extremos de red. La región debe ser la misma que la del servicio de destino.
  • NEG_NAME: un nombre para el grupo de extremos de red.
  • TARGET_SERVICE: El URI del adjunto del servicio.

Agregar un backend a un balanceador de cargas de aplicaciones 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
    

    Reemplaza BACKEND_SERVICE_NAME por el nombre del servicio de backend.

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

    Reemplaza lo siguiente:

    • BACKEND_SERVICE_NAME: el nombre del servicio de backend.
    • NEG_NAME: es el nombre del grupo de extremos de red.
    • NEG_REGION: la región del grupo de extremos de red

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

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

    Reemplaza BACKEND_SERVICE_NAME por el nombre del servicio de backend.

  2. Agrega 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 "
        }
      ]
    }
    

    Reemplaza lo siguiente:

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

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

gcloud

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

Reemplaza lo siguiente:

  • URL_MAP_NAME: Es el nombre del mapa de URL que se creará.
  • BACKEND_SERVICE_NAME: Es el nombre del backend. para solicitudes cuando este mapa de URL no tenga asignaciones.

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

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

Reemplaza lo siguiente:

  • PROJECT_NAME: el nombre del proyecto.
  • URL_MAP_NAME: Es el nombre del mapa de URL que se creará.
  • BACKEND_SERVICE_NAME: Es el nombre del backend. para solicitudes cuando este mapa de URL no tenga asignaciones.

Crea un proxy HTTPS de destino

Crea un proxy HTTPS de destino para enrutar las solicitudes a tu mapa de URL. El proxy es la parte del balanceador de cargas que contiene el certificado SSL para HTTPS Balanceo de cargas, por lo que también debes cargar el 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

Reemplaza lo siguiente:

  • TARGET_HTTPS_PROXY_NAME: Es el nombre del HTTPS de destino. que crear.
  • SSL_CERTIFICATE_NAME: Es el certificado SSL. asociados con el balanceador de cargas.
  • URL_MAP_NAME: Es el recurso del mapa de URL.

Para obtener más información sobre este comando gcloud de la CLI, consulta el gcloud compute target-https-proxies create documentación de referencia.

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

Reemplaza lo siguiente:

  • PROJECT_NAME: el nombre del proyecto.
  • SSL_CERTIFICATE_NAME: Es el certificado SSL. asociados con el balanceador de cargas.
  • URL_MAP_NAME: Es el recurso del mapa de URL.
  • TARGET_HTTPS_PROXY_NAME: Es el nombre del HTTPS de destino. que crear.

Crear una dirección global

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

gcloud

gcloud compute addresses create LB_IP_ADDRESS_NAME \
  --global

Reemplaza lo siguiente:

  • LB_IP_ADDRESS_NAME: Es el nombre de la estática reservada. externa o interna del balanceador de cargas.

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

REST

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

Reemplaza lo siguiente:

  • PROJECT_NAME: el nombre del proyecto.
  • LB_IP_ADDRESS_NAME: Es el nombre de la estática reservada. externa o interna del balanceador de cargas.

Cree una regla de reenvío.

Crea una regla de reenvío para enrutar 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

Reemplaza lo siguiente:

  • HTTPS_FORWARDING_RULE_NAME: Es el nombre de la de reenvío de red que se creará.
  • LB_IP_ADDRESS_NAME: Es el nombre de la estática reservada. externa o interna del balanceador de cargas.
  • TARGET_HTTPS_PROXY_NAME: Es el proxy HTTPS de destino. que recibe el tráfico.

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

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

Reemplaza lo siguiente:

  • PROJECT_NAME: el nombre del proyecto.
  • LB_IP_ADDRESS_NAME: Es el nombre de la estática reservada. externa o interna del balanceador de cargas.
  • TARGET_HTTPS_PROXY_NAME: Es el proxy HTTPS de destino. que recibe el tráfico.
  • HTTPS_FORWARDING_RULE_NAME: Es el nombre de la de reenvío de red que se creará.

Configura un DNS

Configura un DNS y agrega un registro que asigne *.DOMAIN. Por ejemplo, *.example.com a la dirección IP reservada en el paso anterior. Si eres usando Cloud DNS para administrar el DNS de tu dominio, consulta Agrega un registro DNS.

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

Para acceder a las estaciones de trabajo con 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 usando la configuración de la estación de trabajo con el dominio personalizado.

¿Qué sigue?

Para obtener más información sobre cómo configurar dominios personalizados y clústeres privados, consulta lo siguiente: