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:
Antes de empezar
Para configurar un dominio personalizado de Cloud Workstations, sigue estos pasos:
Crea un clúster privado y especifica un dominio personalizado de confianza con los comandos de la
gcloud
CLI o de la API REST.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:
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).
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.
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.También puedes crear el balanceador de carga en otro proyecto, siempre que lo añadas a la lista
PrivateClusterConfig.allowedProjects
.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.
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.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.
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 puerto80
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
Antes de empezar, asegúrate de haber inicializado la CLI de
gcloud
ejecutandogcloud 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.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 gcloud
API REST y la CLI para crear un balanceador de carga de aplicaciones externo global con un backend de PSC:
- Crear un NEG para conectarse a un servicio publicado
- Añadir un backend a un balanceador de carga de aplicación externo global
- Crea un mapa de URLs para dirigir las solicitudes entrantes al servicio de backend
- Crear un proxy HTTPS de destino
- Crear una dirección global
- 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 delREGION
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
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.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
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.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:
Usa el clúster con el dominio personalizado para crear una configuración de estación de trabajo.
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:
- Tutorial: Configurar un dominio mediante Cloud DNS
- Configurar Controles de Servicio de VPC y clústeres privados