Configurar domínios personalizados para estações de trabalho do Cloud

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:

Figura 1. Cluster com domínio personalizado

Antes de começar

Para configurar um domínio personalizado das Estações de trabalho do Google Cloud, siga estas etapas:

  1. Crie um cluster particular e especificar um domínio personalizado e confiável usando a CLI gcloud ou comandos da API REST.

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

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

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

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

    4. Também é possível criar o balanceador de carga em um projeto diferente, desde que ele seja adicionado à lista PrivateClusterConfig.allowedProjects.

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

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

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

  5. 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 porta 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ção de trabalho particular com um endpoint particular:

gcloud

  1. Antes de começar, certifique-se de inicializou a CLI gcloud executando gcloud init e que você especificou um projeto padrão. Os exemplos a seguir presumem que você tenha definido o projeto padrão.

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

  1. Criar um NEG para se conectar a um serviço publicado
  2. Adicionar um back-end a um balanceador de carga de aplicativo externo global
  3. Criar um mapa de URLs para encaminhar as solicitações recebidas ao serviço de back-end
  4. Criar um proxy HTTPS de destino
  5. Criar um endereço global
  6. 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 na REGION 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

  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:

    • 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

  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:

    • 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:

  1. Use o cluster com o domínio personalizado para criar uma configuração de 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.

A seguir

Para mais informações sobre como configurar domínios personalizados e clusters particulares, consulte o seguinte: