Para aceder às suas estações de trabalho, pode especificar um domínio personalizado fidedigno em vez de usar o domínio cloudworkstations.dev
.
Arquitetura
Para usar o Cloud Workstations com um nome de anfitrião personalizado, configure um cluster privado e configure o ponto final do Private Service Connect (PSC) para a entrada HTTP do seu cluster privado. Também tem de criar um balanceador de carga de aplicações com um back-end do PSC que tenha como destino o ponto final do PSC criado para o seu cluster privado. Este balanceador de carga da aplicação pode ser externo ou interno e gere o certificado SSL para o seu domínio personalizado.
O diagrama seguinte ilustra um cluster com um domínio personalizado:
Antes de começar
Para configurar um domínio personalizado do Cloud Workstations, siga estes passos:
Crie um cluster privado e especifique um domínio personalizado fidedigno através dos comandos da
gcloud
CLI ou da API REST.Crie um Application Load Balancer externo global com um back-end do Private Service Connect (PSC) no mesmo projeto que usou para o projeto do cluster da estação de trabalho. Tenha em conta o seguinte:
Se quiser que as suas estações de trabalho sejam privadas (inacessíveis através da Internet pública), certifique-se de que cria um equilibrador de carga interno. Para o fazer, crie uma zona DNS privada e adicione um registo que mapeie o domínio para o endereço IP interno usado pelo equilibrador de carga. Para mais informações sobre como criar um balanceador de carga interno, consulte a nuvem virtual privada (VPC).
Pode obter a associação de serviço que tem de referenciar no equilibrador de carga no recurso do cluster da estação de trabalho depois de criar o cluster.
Certifique-se de que obtém um certificado e o especifica no equilibrador de carga como um certificado universal para o seu domínio, por exemplo,
*.us-west1-cluster1.example.com
. Consulte os certificados e os Google Cloud balanceadores de carga para ver os tipos de certificados suportados para o balanceador de carga que selecionou.Também pode criar o balanceador de carga num projeto diferente, desde que o adicione à lista
PrivateClusterConfig.allowedProjects
.Se tiver vários clusters de estações de trabalho na sua organização, pode usar um único equilibrador de carga com serviços de back-end, certificados e regras de encaminhamento separados.
Configure um Sistema de Nomes de Domínio (DNS). Uma vez que se trata de um domínio que gere, configure um DNS para este domínio mapeando todos os subdomínios do domínio fornecido para o equilibrador de carga. Por exemplo, crie uma zona de DNS para
us-west1-cluster1.example.com
e adicione uma entrada de mapeamento de*.us-west1-cluster1.example.com
para o endereço IP externo usado pelo seu equilibrador de carga.Para aceder às estações de trabalho através do domínio personalizado, use o cluster que criou para criar uma configuração de estação de trabalho e, em seguida, criar uma estação de trabalho com essa configuração de estação de trabalho.
Inicie a estação de trabalho e verifique o URL. Quando 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 predefinição.WORKSTATION_NAME
: o nome da estação de trabalho.DOMAIN
: o nome do domínio específico do cluster
Criar um cluster privado
Crie um cluster de estações de trabalho privadas com um ponto final privado:
gcloud
Antes de começar, certifique-se de que inicializou a CLI
gcloud
executandogcloud init
e que especificou um projeto predefinido. Os exemplos que se seguem pressupõem que definiu o seu projeto predefinido.Para criar um cluster de estações de trabalho privadas, execute o seguinte comando:
gcloud workstations clusters create WORKSTATION_CLUSTER \ --region=REGION \ --domain=DOMAIN \ --network=NETWORK \ --subnetwork=SUBNETWORK \ --enable-private-endpoint
Substitua o seguinte:
WORKSTATION_CLUSTER
: o nome do cluster de estações de trabalho a criar.REGION
: o nome da região do cluster.DOMAIN
: o nome do domínio usado pelas Cloud Workstations para a entrada HTTP. Use um subdomínio exclusivo para este cluster. Por exemplo,us-west1-cluster1.example.com
.NETWORK
: o nome da rede VPC. Se for omitido, é usada a VPC predefinida.SUBNETOWRK
: o nome da sub-rede na rede VPC. Se a rede e a sub-rede forem omitidas, é usada a VPC predefinida e a sub-rede predefinida na REGIÃO especificada.
Para mais informações acerca deste gcloud
comando da CLI, consulte a
gcloud workstations clusters create
documentação de referência.
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 o seguinte:
DOMAIN
: o nome do domínio usado pelas Cloud Workstations para a entrada HTTP. Este deve ser um subdomínio exclusivo deste cluster. Por exemplo,us-west1-cluster1.example.com
.NETWORK
: o nome da rede VPC. Se for omitido, é usada a VPC predefinida.SUBNETOWRK
: o nome da sub-rede na rede VPC. Se a rede e a sub-rede forem omitidas, é usada a VPC predefinida e a sub-rede predefinida 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ções de trabalho a criar.
Para mais informações sobre este método da 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 } "network": "NETWORK" "subnetwork": "SUBNETWORK" }
Substitua o seguinte:
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 criar.DOMAIN
: o nome do domínio usado pelas Cloud Workstations para a entrada HTTP. Este deve ser um subdomínio exclusivo deste cluster. Por exemplo,us-west1-cluster1.example.com
.NETWORK
: o nome da rede VPC. Se for omitido, é usada a VPC predefinida.SUBNETOWRK
: o nome da sub-rede na rede VPC. Se a rede e a sub-rede forem omitidas, é usada a VPC predefinida e a sub-rede predefinida na REGIÃO especificada.
Para mais informações sobre este método da API, consulte a
workstationClusters.create
documentação de referência.
Crie um balanceador de carga de aplicações externo global com back-end do PSC
Siga estes passos da gcloud
CLI e da API REST para criar um
balanceador de carga de aplicações externo global com um back-end do PSC:
- Crie um NEG para estabelecer ligação a um serviço publicado
- Adicione um back-end a um balanceador de carga de aplicações externo global
- Crie um mapa de URLs para encaminhar pedidos recebidos para o serviço de back-end
- Crie um proxy HTTPS de destino
- Crie uma morada global
- Crie uma regra de encaminhamento
Crie um NEG para estabelecer ligação a um serviço publicado
Quando cria um NEG que aponta para um serviço publicado, precisa do URI do anexo do serviço. O anexo de serviço tem este formato:
projects/SERVICE_PROJECT/regions/REGION/serviceAttachments/SERVICE_NAME
.
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 o seguinte:
NEG_NAME
: um nome para o grupo de pontos finais da rede.TARGET_SERVICE
: o URI do anexo de serviço.REGION
: a região na qual criar o grupo de pontos finais de rede. A região tem de ser a mesma que a do serviço de destino.SUBNET
: a sub-rede na qual criar o grupo de pontos finais da rede. A sub-rede tem de estar na mesma região que o serviço de destino. Tem de indicar uma sub-rede se indicar a rede. Se a rede e a sub-rede forem omitidas, é usada a rede predefinida e a sub-rede predefinida noREGION
especificado.
Para mais informações acerca deste gcloud
comando da CLI, consulte a
gcloud compute network-endpoint-groups create
documentação de referência.
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 o seguinte:
PROJECT_NAME
: o nome do projeto.REGION
: a região na qual criar o grupo de pontos finais de rede. A região tem de ser a mesma que a do serviço de destino.NEG_NAME
: um nome para o grupo de pontos finais da rede.TARGET_SERVICE
: o URI do anexo de serviço.
Adicione um back-end a um balanceador de carga de aplicações 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 o seguinte:
BACKEND_SERVICE_NAME
: o nome do serviço de back-end.NEG_NAME
: o nome do grupo de pontos finais da rede.NEG_REGION
: a região do grupo de pontos finais da rede.
Para mais informações sobre este gcloud
comando da CLI, 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 o seguinte:
PROJECT_NAME
: o nome do projeto.BACKEND_SERVICE_NAME
: o nome do serviço de back-end.NEG_REGION
: a região do grupo de pontos finais da rede.NEG_NAME
: o nome do grupo de pontos finais da rede.
Crie um mapa de URLs para encaminhar pedidos recebidos para o serviço de back-end
gcloud
gcloud compute url-maps create URL_MAP_NAME \ --default-service=BACKEND_SERVICE_NAME \ --global
Substitua o seguinte:
URL_MAP_NAME
: o nome do mapa de URLs a criar.BACKEND_SERVICE_NAME
: o nome do serviço de back-end a usar para pedidos quando este mapa de URLs não tem mapeamentos.
Para mais informações acerca deste gcloud
comando da CLI, 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 o seguinte:
PROJECT_NAME
: o nome do projeto.URL_MAP_NAME
: o nome do mapa de URLs a criar.BACKEND_SERVICE_NAME
: o nome do serviço de back-end a usar para pedidos quando este mapa de URLs não tem mapeamentos.
Crie um proxy HTTPS de destino
Crie um proxy HTTPS de destino para encaminhar pedidos para o seu mapa de URLs. O proxy é a parte do balanceador de carga que contém o certificado SSL para o balanceamento de carga HTTPS, pelo que também carrega o certificado neste passo:
gcloud
gcloud compute target-https-proxies create TARGET_HTTPS_PROXY_NAME \ --ssl-certificates=SSL_CERTIFICATE_NAME \ --url-map=URL_MAP_NAME \ --global
Substitua o seguinte:
TARGET_HTTPS_PROXY_NAME
: o nome do proxy HTTPS de destino a criar.SSL_CERTIFICATE_NAME
: o certificado SSL associado ao balanceador de carga.URL_MAP_NAME
: o recurso do mapa de URLs.
Para mais informações acerca deste gcloud
comando da CLI, 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 o seguinte:
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 URLs.TARGET_HTTPS_PROXY_NAME
: o nome do proxy HTTPS de destino a criar.
Crie 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 o seguinte:
LB_IP_ADDRESS_NAME
: o nome do endereço IP estático externo ou interno reservado do equilibrador de carga.
Para mais informações acerca deste gcloud
comando da CLI, consulte a
gcloud compute addresses create
documentação de referência.
REST
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/global/addresses { "name": "LB_IP_ADDRESS_NAME" }
Substitua o seguinte:
PROJECT_NAME
: o nome do projeto.LB_IP_ADDRESS_NAME
: o nome do endereço IP estático externo ou interno reservado do equilibrador de carga.
Crie uma regra de encaminhamento
Crie uma regra de encaminhamento para encaminhar pedidos recebidos 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 o seguinte:
HTTPS_FORWARDING_RULE_NAME
: o nome da regra de encaminhamento a criar.LB_IP_ADDRESS_NAME
: o nome do endereço IP estático externo ou interno reservado do equilibrador de carga.TARGET_HTTPS_PROXY_NAME
: o proxy HTTPS de destino que recebe o tráfego.
Para mais informações acerca deste gcloud
comando da CLI, consulte a
gcloud compute forwarding-rules create
documentação de referência.
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 o seguinte:
PROJECT_NAME
: o nome do projeto.LB_IP_ADDRESS_NAME
: o nome do endereço IP estático externo ou interno reservado do equilibrador 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 criar.
Configure um DNS
Configure um DNS e adicione um registo que mapeie *.DOMAIN
, por exemplo, *.example.com
, para o endereço IP reservado no passo anterior. Se estiver a usar o Cloud DNS para gerir o DNS do seu domínio, consulte o artigo Adicione um registo de DNS.
Crie a configuração e a estação de trabalho
Para aceder às estações de trabalho através do domínio personalizado, faça o seguinte:
Use o cluster com o domínio personalizado para criar uma configuração da estação de trabalho.
Crie uma estação de trabalho usando a configuração da estação de trabalho com o domínio personalizado.
O que se segue?
Para mais informações sobre a configuração de domínios personalizados e clusters privados, consulte o seguinte:
- Tutorial: configure um domínio através do Cloud DNS
- Configure os VPC Service Controls e os clusters privados