Para acessar suas estações de trabalho, especifique um domínio personalizado confiável em vez de usar o domínio cloudworkstations.dev
.
Arquitetura
Para usar o Cloud Workstations com um nome de host personalizado, configure um cluster particular e configure o endpoint do Private Service Connect (PSC) para entrada HTTP do cluster particular. Também é necessário criar um Application Load Balancer com back-end do PSC que tenha como destino o endpoint do PSC criado para seu 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 do Cloud Workstations, siga estas etapas:
Crie um cluster particular e especifique um domínio personalizado confiável usando a CLI
gcloud
ou 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 projeto do cluster de estação de trabalho. Observe o seguinte:
Se você quiser que suas estações de trabalho sejam particulares (inacessíveis pela Internet pública), crie um balanceador de carga interno. Para isso, crie uma zona 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 da estação de trabalho depois que o cluster é criado.
Adquira 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 Google Cloud para saber os tipos de certificados compatíveis com o balanceador de carga selecionado.Você também pode criar o balanceador de carga em um projeto diferente, desde que o adicione à lista
PrivateClusterConfig.allowedProjects
.Se você tiver vários clusters de estação 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.
Configure um Sistema de Nomes de Domínio (DNS). Como esse é um domínio gerenciado por você, 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 mapeie*.us-west1-cluster1.example.com
para o endereço IP externo usado pelo balanceador de carga.Para acessar as estações de trabalho usando o domínio personalizado, use o cluster criado para criar uma configuração de estação de trabalho e criar 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 seguintes partes do URL dependem da sua configuração:
PORT
: o número da porta, que é a porta80
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ção 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 particular, 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ção de trabalho a ser criado.REGION
: o nome da região do cluster.DOMAIN
: o nome de domínio usado pelo Cloud Workstations para entrada HTTP. Use um subdomínio exclusivo para este 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 REGIÃO 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 pelo Cloud Workstations para entrada HTTP. Ele precisa ser 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 REGIÃO especificada.PROJECT_NAME
: o nome do projeto.REGION
: o nome da região do cluster.WORKSTATION_CLUSTER
: o nome do cluster de estação 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ção de trabalho a ser criado.DOMAIN
: o nome de domínio usado pelo Cloud Workstations para entrada HTTP. Ele precisa ser 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 REGIÃO 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 do 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 do 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
- Crie 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 \ --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.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 de
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 este 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 este mapa de URL não tiver mapeamentos.
Crie 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 que contém o certificado SSL para balanceamento de carga HTTPS. Portanto, nesta etapa, também é possível carregar 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 de 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 de 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 estático externo ou interno 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 estático externo ou interno 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 estático externo ou interno 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 estático externo ou interno 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 mapeie *.DOMAIN
, por exemplo,
*.example.com
, para o endereço IP reservado na etapa anterior. Se você estiver
usando o Cloud DNS para gerenciar o DNS do seu domínio, consulte
Adicionar um registro DNS.
Criar uma configuração e uma estação de trabalho
Para acessar 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 com o domínio personalizado.
A seguir
Para mais informações sobre como configurar domínios personalizados e clusters particulares, consulte o seguinte:
- Tutorial: configurar um domínio usando o Cloud DNS
- Configurar o VPC Service Controls e clusters particulares