Para acessar suas estações de trabalho, você pode especificar um domínio personalizado e confiável, em vez
do que 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.
No diagrama a seguir, ilustramos um cluster com um domínio personalizado:
Antes de começar
Para configurar um domínio personalizado das Estações de trabalho do Google Cloud, siga estas etapas:
Crie um cluster particular e especificar um domínio personalizado e 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 cluster de estações de trabalho. Observe o seguinte:
Se você deseja que suas estações de trabalho sejam privadas (inacessíveis através do Internet pública, crie um balanceador de carga interno. Para isso, crie uma zona DNS particular e adicione um registro que mapeie a ao endereço IP interno usado pelo balanceador de carga. Para mais informações sobre como criar um balanceador de carga interno, consulte as Documentação da VPC.
O anexo de serviço que você precisa referenciar no balanceador de carga podem ser obtidos no recurso do cluster da estação de trabalho depois que você 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 os tipos de certificados com suporte no balanceador de carga que você selecionou.Também é possível criar o balanceador de carga em um projeto diferente, desde que ele seja adicionado à lista
PrivateClusterConfig.allowedProjects
.Se houver vários clusters de estações de trabalho na organização, será possível use um único balanceador de carga com serviços de back-end, certificados, e regras de roteamento.
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 que você criou para criar uma configuração de estações de trabalho, e depois criar uma estação de trabalho usando essa configuração de estação de trabalho.
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, certifique-se de inicializou a CLI
gcloud
executandogcloud init
e que você especificou um projeto padrão. Os exemplos a seguir presumem que você tenha definido 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 \ --enable-private-endpoint
Substitua:
WORKSTATION_CLUSTER
: o nome do cluster de estações de trabalho para criar.REGION
: o nome da região do cluster.DOMAIN
: o nome de domínio usado pelas estações de trabalho do Cloud para entrada HTTP. Use um subdomínio exclusivo do cluster para exemplo:us-west1-cluster1.example.com
.
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}}' https://workstations.googleapis.com/v1/projects/PROJECT_NAME/locations/REGION/workstationClusters?workstation_cluster_id=WORKSTATION_CLUSTER
Substitua:
DOMAIN
: o nome de domínio usado pelas estações de trabalho do Cloud para entrada HTTP. Esse subdomínio precisa ser exclusivo do cluster, por exemplo,us-west1-cluster1.example.com
.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 de API, consulte a
workstationClusters.create
documentação de referência.
REST
POST https://workstations.googleapis.com/v1/projects/PROJECT_NAME/locations/REGION/workstationClusters?workstationClusterId=WORKSTATION_CLUSTER { "domainConfig": { "domain": "DOMAIN" }, "privateClusterConfig": { "enablePrivateEndpoint": true } }
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 pelas estações de trabalho do Cloud para entrada HTTP. Esse subdomínio precisa ser exclusivo do cluster, por exemplo,us-west1-cluster1.example.com
.
Para mais informações sobre esse método de API, consulte a
workstationClusters.create
documentação de referência.
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 de 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 URLs para encaminhar as solicitações recebidas ao 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
:
É possível 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 endpoint da rede será criado. grupo. 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.
Criar um mapa de URLs para encaminhar as solicitações recebidas ao 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
gcloud compute url-maps create
documentação de referência.
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, também carregue 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 HTTPS de destino. proxy 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
gcloud compute target-https-proxies create
documentação de referência.
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 associados 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 da estática reservada interno ou externo 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 da estática reservada interno ou externo 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 mapeie *.DOMAIN
, por exemplo,
*.example.com
: para o endereço IP reservado na etapa anterior. Se você for
usando o Cloud DNS para gerenciar o DNS do seu domínio, consulte
Adicionar um registro DNS
Criar a configuração e a 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 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 o seguinte:
- Tutorial: configurar um domínio usando o Cloud DNS
- Configure o VPC Service Controls e os clusters particulares