Para acessar as estações de trabalho, especifique um domínio personalizado confiável em vez de usar o domínio cloudworkstations.dev
.
Arquitetura
Para usar as Cloud Workstations com um nome de host personalizado, configure um cluster particular e configure o endpoint do Private Service Connect (PSC) para entrada HTTP no cluster particular. Também é necessário criar um Application Load Balancer com o back-end do PSC que segmenta o endpoint do PSC criado para o cluster particular. Esse balanceador de carga de aplicativo pode ser externo ou interno e gerencia o certificado SSL do seu domínio personalizado.
O diagrama a seguir ilustra um cluster com um domínio personalizado:
Antes de começar
Para configurar um domínio personalizado Cloud Workstations, siga estas etapas:
Crie um cluster particular e especifique um domínio personalizado confiável usando a CLI
gcloud
ou os comandos da API REST.Crie um balanceador de carga de aplicativo externo global com um back-end do Private Service Connect (PSC) no mesmo projeto usado para o cluster de estações de trabalho. Observe o seguinte:
Se você quiser que as estações de trabalho sejam particulares (inacessíveis pela Internet pública), crie um balanceador de carga interno. Para fazer isso, crie uma zona de DNS particular e adicione um registro que mapeie o domínio para o endereço IP interno usado pelo balanceador de carga. Para mais informações sobre como criar um balanceador de carga interno, consulte a nuvem privada virtual (VPC).
O anexo de serviço que você precisa referenciar no balanceador de carga pode ser obtido no recurso de cluster de estação de trabalho depois que você cria o cluster.
Obtenha um certificado e especifique-o no balanceador de carga como um certificado curinga para seu domínio, por exemplo,
*.us-west1-cluster1.example.com
. Consulte Certificados e balanceadores de carga do Google Cloud para saber quais tipos de certificados são compatíveis com o balanceador de carga selecionado.Também é possível criar o balanceador de carga em um projeto diferente, desde que ele seja adicionado à lista
PrivateClusterConfig.allowedProjects
.Se você tiver vários clusters de estações de trabalho na sua organização, poderá usar um único balanceador de carga com serviços de back-end, certificados e regras de roteamento separados.
Configurar um Sistema de Nomes de Domínio (DNS). Como você gerencia esse domínio, configure um DNS para ele mapeando todos os subdomínios do domínio fornecido para o balanceador de carga. Por exemplo, crie uma zona DNS para
us-west1-cluster1.example.com
e adicione uma entrada que mapeia*.us-west1-cluster1.example.com
para o endereço IP externo usado pelo balanceador de carga.Para acessar estações de trabalho usando o domínio personalizado, use o cluster criado para criar uma configuração de estação de trabalho e, em seguida, crie uma estação de trabalho usando essa configuração.
Inicie a estação de trabalho e verifique o URL. Quando você especifica um domínio personalizado, o URL da estação de trabalho usa o seguinte formato:
https://PORT-WORKSTATION_NAME.DOMAIN
As partes a seguir do URL dependem da sua configuração:
PORT
: o número da porta, que é80
por padrão.WORKSTATION_NAME
: o nome da sua estação de trabalho.DOMAIN
: o nome de domínio específico do cluster
Criar um cluster particular
Crie um cluster de estações de trabalho particular com um endpoint particular:
gcloud
Antes de começar, verifique se você inicializou a CLI
gcloud
executandogcloud init
e se especificou um projeto padrão. Os exemplos a seguir pressupõem que você definiu o projeto padrão.Para criar um cluster de estação de trabalho privada, execute o seguinte comando:
gcloud workstations clusters create WORKSTATION_CLUSTER \ --region=REGION \ --domain=DOMAIN \ --network=NETWORK \ --subnetwork=SUBNETWORK \ --enable-private-endpoint
Substitua:
WORKSTATION_CLUSTER
: o nome do cluster de estações de trabalho a ser criado.REGION
: o nome da região do cluster.DOMAIN
: o nome de domínio usado pelos Cloud Workstations para entrada HTTP. Use um subdomínio exclusivo para esse cluster, por exemplo,us-west1-cluster1.example.com
.NETWORK
: o nome da rede VPC. Se omitido, a VPC padrão será usada.SUBNETOWRK
: o nome da sub-rede na rede VPC. Se a rede e a sub-rede forem omitidas, a VPC padrão será usada, assim como a sub-rede padrão na REGION especificada.
Para mais informações sobre esse comando da CLI gcloud
, consulte a
documentação de referência do
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
Substitua:
DOMAIN
: o nome de domínio usado pelos Cloud Workstations para entrada HTTP. Esse subdomínio precisa ser exclusivo para esse cluster, por exemplo,us-west1-cluster1.example.com
.NETWORK
: o nome da rede VPC. Se omitido, a VPC padrão será usada.SUBNETOWRK
: o nome da sub-rede na rede VPC. Se a rede e a sub-rede forem omitidas, a VPC padrão será usada, assim como a sub-rede padrão na REGION especificada.PROJECT_NAME
: o nome do projeto.REGION
: o nome da região do cluster.WORKSTATION_CLUSTER
: o nome do cluster de estações de trabalho a ser criado.
Para mais informações sobre esse método da API, consulte a
documentação de referência
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" }
Substitua:
PROJECT_NAME
: o nome do projeto.REGION
: o nome da região do cluster.WORKSTATION_CLUSTER
: o nome do cluster de estações de trabalho a ser criado.DOMAIN
: o nome de domínio usado pelos Cloud Workstations para entrada HTTP. Esse subdomínio precisa ser exclusivo para esse cluster, por exemplo,us-west1-cluster1.example.com
.NETWORK
: o nome da rede VPC. Se omitido, a VPC padrão será usada.SUBNETOWRK
: o nome da sub-rede na rede VPC. Se a rede e a sub-rede forem omitidas, a VPC padrão será usada, assim como a sub-rede padrão na REGION especificada.
Para mais informações sobre esse método da API, consulte a
documentação de referência
de workstationClusters.create
.
Criar um balanceador de carga de aplicativo externo global com back-end PSC
Siga estas etapas da CLI gcloud
e da API REST para criar um
balanceador de carga de aplicativo externo global com um back-end PSC:
- Criar um NEG para se conectar a um serviço publicado
- Adicionar um back-end a um balanceador de carga de aplicativo externo global
- Criar um mapa de URL para encaminhar solicitações recebidas para o serviço de back-end
- Criar um proxy HTTPS de destino
- Criar um endereço global
- Criar uma regra de encaminhamento
Criar um NEG para se conectar a um serviço publicado
Ao criar um NEG que aponta para um serviço publicado, você precisa do URI de anexo do serviço para o serviço. O anexo de serviço tem este formato:
projects/SERVICE_PROJECT/regions/REGION/serviceAttachments/SERVICE_NAME
.
Você pode encontrar o URI no recurso do cluster da estação de trabalho.
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
Substitua:
NEG_NAME
: um nome para o grupo de endpoints da rede.TARGET_SERVICE
: o URI do anexo de serviço.REGION
: a região em que o grupo de endpoints da rede será criado. A região precisa ser igual à do serviço de destino.NETWORK
: a rede em que o grupo de endpoints da rede será criado. Se omitida, a rede padrão será usada.SUBNET
: a sub-rede em que o grupo de endpoints da rede será criado. A sub-rede precisa estar na mesma região do serviço de destino. Uma sub-rede precisa ser informada se você fornecer a rede. Se a rede e a sub-rede forem omitidas, a rede padrão e a sub-rede padrão naREGION
especificada serão usadas.
Para mais informações sobre esse comando da CLI gcloud
, consulte a
documentação de referência do
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" }
Substitua:
PROJECT_NAME
: o nome do projeto.REGION
: a região em que o grupo de endpoints da rede será criado. A região precisa ser igual à do serviço de destino.NEG_NAME
: um nome para o grupo de endpoints da rede.TARGET_SERVICE
: o URI do anexo de serviço.
Adicionar um back-end a um balanceador de carga de aplicativo externo global
gcloud
Crie um serviço de back-end para o serviço de destino:
gcloud compute backend-services create BACKEND_SERVICE_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --protocol=HTTPS \ --global
Substitua
BACKEND_SERVICE_NAME
pelo nome do serviço de back-end.Adicione o NEG do Private Service Connect que aponta para o serviço de destino.
gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --network-endpoint-group=NEG_NAME \ --network-endpoint-group-region=NEG_REGION \ --global
Substitua:
BACKEND_SERVICE_NAME
: o nome do serviço de back-end.NEG_NAME
: o nome do grupo de endpoints da rede.NEG_REGION
: o nome do grupo de endpoints da rede.
Para mais informações sobre esse comando da CLI gcloud
, consulte a documentação de referência
gcloud compute backend-services create
e
gcloud compute backend-services add-backend
.
REST
Crie um serviço de back-end para o serviço de destino:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/global/backendServices { "protocol": "HTTPS", "loadBalancingScheme": "EXTERNAL_MANAGED", "name": "BACKEND_SERVICE_NAME" }
Substitua
BACKEND_SERVICE_NAME
pelo nome do serviço de back-end.Adicione o NEG do Private Service Connect que aponta para o serviço 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 " } ] }
Substitua:
PROJECT_NAME
: o nome do projeto.BACKEND_SERVICE_NAME
: o nome do serviço de back-end.NEG_REGION
: o nome do grupo de endpoints da rede.NEG_NAME
: o nome do grupo de endpoints da rede.
Crie um mapa de URL para encaminhar solicitações recebidas para o serviço de back-end
gcloud
gcloud compute url-maps create URL_MAP_NAME \ --default-service=BACKEND_SERVICE_NAME \ --global
Substitua:
URL_MAP_NAME
: o nome do mapa de URL a ser criado.BACKEND_SERVICE_NAME
: o nome do serviço de back-end a ser usado para solicitações quando o mapa de URL não tiver mapeamentos.
Para mais informações sobre esse comando da CLI gcloud
, consulte a
documentação de referência do
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 " }
Substitua:
PROJECT_NAME
: o nome do projeto.URL_MAP_NAME
: o nome do mapa de URL a ser criado.BACKEND_SERVICE_NAME
: o nome do serviço de back-end a ser usado para solicitações quando o mapa de URL não tiver mapeamentos.
Criar um proxy HTTPS de destino
Crie um proxy de destino HTTPS para encaminhar solicitações ao mapa de URL. O proxy é a parte do balanceador de carga onde é armazenado o certificado SSL para balanceamento de carga HTTPS. Portanto, nesta etapa carregue também o certificado:
gcloud
gcloud compute target-https-proxies create TARGET_HTTPS_PROXY_NAME \ --ssl-certificates=SSL_CERTIFICATE_NAME \ --url-map=URL_MAP_NAME \ --global
Substitua:
TARGET_HTTPS_PROXY_NAME
: o nome do proxy HTTPS de destino a ser criado.SSL_CERTIFICATE_NAME
: o certificado SSL associado ao balanceador de carga.URL_MAP_NAME
: o recurso do mapa de URL.
Para mais informações sobre esse comando da CLI gcloud
, consulte a
documentação de referência do
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" }
Substitua:
PROJECT_NAME
: o nome do projeto.SSL_CERTIFICATE_NAME
: o certificado SSL associado ao balanceador de carga.URL_MAP_NAME
: o recurso do mapa de URL.TARGET_HTTPS_PROXY_NAME
: o nome do proxy HTTPS de destino a ser criado.
Criar um endereço global
Reserve um endereço IP estático para ser usado pelo balanceador de carga:
gcloud
gcloud compute addresses create LB_IP_ADDRESS_NAME \ --global
Substitua:
LB_IP_ADDRESS_NAME
: o nome do endereço IP externo ou interno estático reservado do balanceador de carga.
Para mais informações sobre esse comando da CLI gcloud
, consulte a
documentação de referência do
gcloud compute addresses create
.
REST
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/global/addresses { "name": "LB_IP_ADDRESS_NAME" }
Substitua:
PROJECT_NAME
: o nome do projeto.LB_IP_ADDRESS_NAME
: o nome do endereço IP externo ou interno estático reservado do balanceador de carga.
Criar uma regra de encaminhamento
Crie uma regra de encaminhamento para encaminhar as solicitações recebidas para o 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
Substitua:
HTTPS_FORWARDING_RULE_NAME
: o nome da regra de encaminhamento a ser criada.LB_IP_ADDRESS_NAME
: o nome do endereço IP externo ou interno estático reservado do balanceador de carga.TARGET_HTTPS_PROXY_NAME
: o proxy HTTPS de destino que recebe o tráfego.
Para mais informações sobre esse comando da CLI gcloud
, consulte a
documentação de referência do
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" }
Substitua:
PROJECT_NAME
: o nome do projeto.LB_IP_ADDRESS_NAME
: o nome do endereço IP externo ou interno estático reservado do balanceador de carga.TARGET_HTTPS_PROXY_NAME
: o proxy HTTPS de destino que recebe o tráfego.HTTPS_FORWARDING_RULE_NAME
: o nome da regra de encaminhamento a ser criada.
Configurar um DNS
Configure um DNS e adicione um registro que mapeia *.DOMAIN
, por exemplo,
*.example.com
, para o endereço IP reservado na etapa anterior. Se você estiver usando o Cloud DNS para gerenciar DNS para seu domínio, consulte Adicionar um registro DNS.
Criar a configuração e a estação de trabalho
Para acessar as estações de trabalho usando o domínio personalizado, faça o seguinte:
Use o cluster com o domínio personalizado para criar uma configuração de estação de trabalho.
Crie uma estação de trabalho usando a configuração da estação de trabalho com o domínio personalizado.
A seguir
Para mais informações sobre como configurar domínios personalizados e clusters particulares, consulte:
- Tutorial: configurar um domínio usando o Cloud DNS
- Configurar o VPC Service Controls e clusters privados