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 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 un backend de PSC que apunte al extremo de PSC creado para tu clúster privado. Este balanceador de cargas de aplicaciones puede ser externo o interno, y administra el certificado SSL de tu dominio personalizado.
En el siguiente diagrama, se ilustra un clúster con un dominio personalizado:
Antes de comenzar
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 CLI de
gcloud
o de la API de REST.Crea un balanceador de cargas 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 (inaccesibles a través de la Internet pública), asegúrate de crear un balanceador de cargas interno. Para ello, crea una zona DNS privada y agrega un registro que asigne el dominio a la dirección IP interna que usa el balanceador de cargas. Para obtener más información sobre cómo crear un balanceador de cargas interno, consulta la nube privada virtual (VPC).
La vinculación de servicio a la que debes hacer referencia en el balanceador de cargas se puede obtener en el recurso del 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 cargas como un certificado comodín para tu dominio, por ejemplo,
*.us-west1-cluster1.example.com
. Consulta Certificados y balanceadores de cargas para conocer los tipos de certificados admitidos para el balanceador de cargas que seleccionaste. Google CloudTambién puedes crear el balanceador de cargas en otro proyecto, siempre y cuando lo agregues a la lista de
PrivateClusterConfig.allowedProjects
.Si tu organización tiene varios clústeres de estaciones de trabajo, puedes usar un solo balanceador de cargas 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 administras, configura un DNS para este dominio asignando todos los subdominios del dominio proporcionado al balanceador de cargas. Por ejemplo, crea una zona DNS para
us-west1-cluster1.example.com
y agrega una entrada que asigne*.us-west1-cluster1.example.com
a la dirección IP externa que usa tu balanceador de cargas.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 esa configuración.
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 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
Crea un clúster privado
Crea un clúster de estación de trabajo privado con un extremo privado:
gcloud
Antes de comenzar, asegúrate de haber inicializado la CLI de
gcloud
ejecutandogcloud init
y de haber especificado un proyecto predeterminado. En los siguientes ejemplos, se supone que ya configuraste 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
Reemplaza lo siguiente:
WORKSTATION_CLUSTER
: Es el nombre del clúster de estaciones de trabajo que se creará.REGION
: Es el nombre de la región del clúster.DOMAIN
: Es el nombre de dominio que usan Cloud Workstations para la entrada de HTTP. Usa un subdominio único para este clúster, por ejemplo,us-west1-cluster1.example.com
.NETWORK
: Es el nombre de la red de VPC. Si se omite, se usa la VPC predeterminada.SUBNETOWRK
: Es el nombre de la subred en la red de VPC. Si se omiten la red y la subred, se usa la VPC predeterminada y la subred predeterminada en la REGIÓN especificada.
Para obtener más información sobre este comando de la CLI de 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
Reemplaza lo siguiente:
DOMAIN
: Es el nombre de dominio que usan Cloud Workstations para la entrada de HTTP. Debe ser un subdominio único para este clúster, por ejemplo,us-west1-cluster1.example.com
.NETWORK
: Es el nombre de la red de VPC. Si se omite, se usa la VPC predeterminada.SUBNETOWRK
: Es el nombre de la subred en la red de VPC. Si se omiten la red y la subred, se usa la VPC predeterminada y la subred predeterminada en la REGIÓN especificada.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 estaciones de trabajo que se 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" }
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 estaciones de trabajo que se creará.DOMAIN
: Es el nombre de dominio que usan Cloud Workstations para la entrada de HTTP. Debe ser un subdominio único para este clúster, por ejemplo,us-west1-cluster1.example.com
.NETWORK
: Es el nombre de la red de VPC. Si se omite, se usa la VPC predeterminada.SUBNETOWRK
: Es el nombre de la subred en la red de VPC. Si se omiten la red y la subred, se usa la VPC predeterminada y la subred predeterminada en 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
.
Crea un balanceador de cargas de aplicaciones externo global con un backend de PSC
Sigue estos pasos de la CLI de gcloud
y la API de REST para crear un balanceador de cargas de aplicaciones externo global con un backend de PSC:
- Crea un NEG para conectarte a un servicio publicado
- Agrega un backend a un balanceador de cargas de aplicaciones externo global
- Crea un mapa de URL para enrutar las solicitudes entrantes al servicio de backend
- Crea un proxy HTTPS de destino
- Cómo crear una dirección global
- 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 URI del adjunto de servicio para el 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 \ --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.SUBNET
: Es la subred en la que se creará el grupo de extremos de red. La subred debe estar en la misma región que el servicio de destino. Se debe proporcionar una subred si proporcionas la red. Si se omiten la red y la subred, se usa la red predeterminada, y se usa la subred predeterminada en elREGION
especificado.
Para obtener más información sobre este comando de la CLI de 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" }
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.
Agrega un backend a un balanceador de cargas de aplicaciones 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
Reemplaza
BACKEND_SERVICE_NAME
por el nombre del servicio de backend.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 de la CLI de 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" }
Reemplaza
BACKEND_SERVICE_NAME
por el nombre del servicio de backend.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 redNEG_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 servicio de backend que se usará para las solicitudes cuando este mapa de URL no tenga asignaciones.
Para obtener más información sobre este comando de la CLI de 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 " }
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 servicio de backend que se usará para las 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 el balanceo de cargas de HTTPS, 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 proxy HTTPS de destino que se creará.SSL_CERTIFICATE_NAME
: Es el certificado SSL asociado con el balanceador de cargas.URL_MAP_NAME
: Es el recurso del mapa de URL.
Para obtener más información sobre este comando de la CLI de 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" }
Reemplaza lo siguiente:
PROJECT_NAME
: el nombre del proyecto.SSL_CERTIFICATE_NAME
: Es el certificado SSL asociado con el balanceador de cargas.URL_MAP_NAME
: Es el recurso del mapa de URL.TARGET_HTTPS_PROXY_NAME
: Es el nombre del proxy HTTPS de destino que se 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 dirección IP externa o interna estática reservada del balanceador de cargas.
Para obtener más información sobre este comando de la CLI de 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" }
Reemplaza lo siguiente:
PROJECT_NAME
: el nombre del proyecto.LB_IP_ADDRESS_NAME
: Es el nombre de la dirección IP externa o interna estática reservada del balanceador de cargas.
Crear 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
: el nombre de la regla de reenvío que se creará.LB_IP_ADDRESS_NAME
: Es el nombre de la dirección IP externa o interna estática reservada 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 de la CLI de 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" }
Reemplaza lo siguiente:
PROJECT_NAME
: el nombre del proyecto.LB_IP_ADDRESS_NAME
: Es el nombre de la dirección IP externa o interna estática reservada del balanceador de cargas.TARGET_HTTPS_PROXY_NAME
: Es el proxy HTTPS de destino que recibe el tráfico.HTTPS_FORWARDING_RULE_NAME
: el nombre de la regla de reenvío 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 usas Cloud DNS para administrar el DNS de tu dominio, consulta Agrega un registro DNS.
Crea la configuración y la estación de trabajo
Para acceder a las estaciones de trabajo con 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 estación de trabajo que incluye el dominio personalizado.
¿Qué sigue?
Para obtener más información sobre la configuración de dominios personalizados y clústeres privados, consulta los siguientes recursos:
- Instructivo: Configurar un dominio con Cloud DNS
- Configura los Controles del servicio de VPC y los clústeres privados