Configure domínios personalizados para as Cloud Workstations

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:

Figura 1. Cluster com domínio personalizado

Antes de começar

Para configurar um domínio personalizado do Cloud Workstations, siga estes passos:

  1. Crie um cluster privado e especifique um domínio personalizado fidedigno através dos comandos da gcloud CLI ou da API REST.

  2. 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:

    1. 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).

    2. 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.

    3. 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.

    4. Também pode criar o balanceador de carga num projeto diferente, desde que o adicione à lista PrivateClusterConfig.allowedProjects.

    5. 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.

  3. 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.

  4. 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.

  5. 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 porta 80 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

  1. Antes de começar, certifique-se de que inicializou a CLI gcloud executando gcloud init e que especificou um projeto predefinido. Os exemplos que se seguem pressupõem que definiu o seu projeto predefinido.

  2. 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 gcloudcomando 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 gcloudCLI e da API REST para criar um balanceador de carga de aplicações externo global com um back-end do PSC:

  1. Crie um NEG para estabelecer ligação a um serviço publicado
  2. Adicione um back-end a um balanceador de carga de aplicações externo global
  3. Crie um mapa de URLs para encaminhar pedidos recebidos para o serviço de back-end
  4. Crie um proxy HTTPS de destino
  5. Crie uma morada global
  6. 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 no REGION especificado.

Para mais informações acerca deste gcloudcomando 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

  1. 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.

  2. 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 gcloudcomando da CLI, consulte a documentação de referência gcloud compute backend-services create e gcloud compute backend-services add-backend.

REST

  1. 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.

  2. 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 gcloudcomando 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 gcloudcomando 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 gcloudcomando 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 gcloudcomando 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:

  1. Use o cluster com o domínio personalizado para criar uma configuração da estação de trabalho.

  2. 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: