Configurer des domaines personnalisés pour Cloud Workstations

Pour accéder à vos postes de travail, vous pouvez spécifier un domaine personnalisé approuvé au lieu d'utiliser le domaine cloudworkstations.dev.

Architecture

Pour utiliser Cloud Workstations avec un nom d'hôte personnalisé, configurez un cluster privé et configurez le point de terminaison Private Service Connect (PSC) pour l'entrée HTTP de votre cluster privé. Vous devez également créer un équilibreur de charge d'application avec un backend PSC ciblant le point de terminaison PSC créé pour votre cluster privé. Cet équilibreur de charge d'application peut être externe ou interne, et gère le certificat SSL de votre domaine personnalisé.

Le schéma suivant illustre un cluster avec un domaine personnalisé :

Figure 1. Cluster avec un domaine personnalisé

Avant de commencer

Pour configurer un domaine personnalisé Cloud Workstations, procédez comme suit :

  1. Créez un cluster privé et spécifiez un domaine personnalisé de confiance à l'aide des commandes de la CLI gcloud ou de l'API REST.

  2. Créez un équilibreur de charge d'application externe global avec un backend Private Service Connect (PSC) dans le même projet que celui utilisé pour le projet de cluster de postes de travail. Veuillez noter les points suivants :

    1. Si vous souhaitez que vos postes de travail soient privés (inaccessibles via l'Internet public), assurez-vous de créer un équilibreur de charge interne. Pour ce faire, créez une zone DNS privée et ajoutez un enregistrement qui mappe le domaine à l'adresse IP interne utilisée par l'équilibreur de charge. Pour savoir comment créer un équilibreur de charge interne, consultez la page Cloud privé virtuel (VPC).

    2. Le rattachement de service que vous devez référencer dans l'équilibreur de charge peut être obtenu sur la ressource de cluster de postes de travail après avoir créé le cluster.

    3. Assurez-vous d'obtenir un certificat et de le spécifier sur l'équilibreur de charge en tant que certificat générique pour votre domaine (par exemple, *.us-west1-cluster1.example.com). Consultez Certificats et équilibreurs de charge pour connaître les types de certificats compatibles avec l'équilibreur de charge que vous avez sélectionné. Google Cloud

    4. Vous pouvez également créer l'équilibreur de charge dans un autre projet, à condition de l'ajouter à la liste PrivateClusterConfig.allowedProjects.

    5. Si votre organisation possède plusieurs clusters de postes de travail, vous pouvez utiliser un seul équilibreur de charge avec des services de backend, des certificats et des règles de routage distincts.

  3. Configurez un système de noms de domaine (DNS). Comme il s'agit d'un domaine que vous gérez, configurez un DNS pour ce domaine en mappant tous les sous-domaines du domaine fourni à l'équilibreur de charge. Par exemple, créez une zone DNS pour us-west1-cluster1.example.com et ajoutez une entrée mappant *.us-west1-cluster1.example.com à l'adresse IP externe utilisée par votre équilibreur de charge.

  4. Pour accéder aux stations de travail à l'aide du domaine personnalisé, utilisez le cluster que vous avez créé pour créer une configuration de station de travail, puis créez une station de travail à l'aide de cette configuration.

  5. Démarrez votre poste de travail et vérifiez l'URL. Lorsque vous spécifiez un domaine personnalisé, l'URL de la station de travail utilise le format suivant :

    https://PORT-WORKSTATION_NAME.DOMAIN
    

    Les parties suivantes de l'URL dépendent de votre configuration :

    • PORT : numéro de port, qui est le port 80 par défaut.
    • WORKSTATION_NAME : nom de votre poste de travail.
    • DOMAIN : nom de domaine spécifique à votre cluster

Créer un cluster privé

Créez un cluster de stations de travail privées avec un point de terminaison privé :

gcloud

  1. Avant de commencer, assurez-vous d'avoir initialisé la CLI gcloud en exécutant gcloud init et d'avoir spécifié un projet par défaut. Les exemples suivants supposent que vous avez défini votre projet par défaut.

  2. Pour créer un cluster de postes de travail privés, exécutez la commande suivante :

    gcloud workstations clusters create WORKSTATION_CLUSTER \
      --region=REGION \
      --domain=DOMAIN \
      --network=NETWORK \
      --subnetwork=SUBNETWORK \
      --enable-private-endpoint
    

    Remplacez les éléments suivants :

    • WORKSTATION_CLUSTER : nom du cluster de postes de travail à créer.
    • REGION : nom de la région du cluster.
    • DOMAIN : nom de domaine utilisé par Cloud Workstations pour l'entrée HTTP. Utilisez un sous-domaine unique pour ce cluster, par exemple us-west1-cluster1.example.com.
    • NETWORK : nom du réseau VPC. S'il est omis, le VPC par défaut est utilisé.
    • SUBNETOWRK : nom du sous-réseau dans le réseau VPC. En cas d'omission du réseau et du sous-réseau, le VPC par défaut est utilisé, et le sous-réseau par défaut dans la RÉGION spécifiée est utilisé.

Pour en savoir plus sur cette commande CLI gcloud, consultez la documentation de référence 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

Remplacez les éléments suivants :

  • DOMAIN : nom de domaine utilisé par Cloud Workstations pour l'entrée HTTP. Il doit s'agir d'un sous-domaine unique à ce cluster, par exemple us-west1-cluster1.example.com.
  • NETWORK : nom du réseau VPC. S'il est omis, le VPC par défaut est utilisé.
  • SUBNETOWRK : nom du sous-réseau dans le réseau VPC. En cas d'omission du réseau et du sous-réseau, le VPC par défaut est utilisé, et le sous-réseau par défaut dans la RÉGION spécifiée est utilisé.
  • PROJECT_NAME : nom du projet.
  • REGION : nom de la région du cluster.
  • WORKSTATION_CLUSTER : nom du cluster de postes de travail à créer.

Pour en savoir plus sur cette méthode d'API, consultez la documentation de référence 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"
}

Remplacez les éléments suivants :

  • PROJECT_NAME : nom du projet.
  • REGION : nom de la région du cluster.
  • WORKSTATION_CLUSTER : nom du cluster de postes de travail à créer.
  • DOMAIN : nom de domaine utilisé par Cloud Workstations pour l'entrée HTTP. Il doit s'agir d'un sous-domaine unique à ce cluster, par exemple us-west1-cluster1.example.com.
  • NETWORK : nom du réseau VPC. S'il est omis, le VPC par défaut est utilisé.
  • SUBNETOWRK : nom du sous-réseau dans le réseau VPC. En cas d'omission du réseau et du sous-réseau, le VPC par défaut est utilisé, et le sous-réseau par défaut dans la RÉGION spécifiée est utilisé.

Pour en savoir plus sur cette méthode d'API, consultez la documentation de référence de workstationClusters.create.

Créer un équilibreur de charge d'application externe mondial avec un backend PSC

Suivez ces étapes de l'interface de ligne de commande gcloud et de l'API REST pour créer un équilibreur de charge d'application externe global avec un backend PSC :

  1. Créer un NEG pour se connecter à un service publié
  2. Ajouter un backend à un équilibreur de charge d'application externe global
  3. Créez un mappage d'URL pour acheminer les requêtes entrantes vers le service de backend.
  4. Créer un proxy HTTPS cible
  5. Créer une adresse globale
  6. Créer une règle de transfert

Créer un NEG pour se connecter à un service publié

Lorsque vous créez un NEG qui pointe vers un service publié, vous avez besoin de l'URI du rattachement de service pour le service. Le rattachement de service a le format suivant : projects/SERVICE_PROJECT/regions/REGION/serviceAttachments/SERVICE_NAME. Vous trouverez l'URI sur la ressource du cluster de stations de travail.

gcloud

gcloud compute network-endpoint-groups create NEG_NAME \
  --network-endpoint-type=private-service-connect \
  --psc-target-service=TARGET_SERVICE \
  --region=REGION \
  --subnet=SUBNET

Remplacez les éléments suivants :

  • NEG_NAME : nom du groupe de points de terminaison du réseau.
  • TARGET_SERVICE : URI du rattachement de service.
  • REGION : région dans laquelle créer le groupe de points de terminaison du réseau. La région doit être la même que celle du service cible.
  • SUBNET : sous-réseau dans lequel créer le groupe de points de terminaison du réseau. Le sous-réseau doit se trouver dans la même région que celle du service cible. Si vous spécifiez le réseau, un sous-réseau doit être spécifié. En cas d'omission du réseau et du sous-réseau, le réseau par défaut est utilisé, et le sous-réseau par défaut dans la région REGION spécifiée est utilisé.

Pour en savoir plus sur cette commande CLI gcloud, consultez la documentation de référence 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"
}

Remplacez les éléments suivants :

  • PROJECT_NAME : nom du projet.
  • REGION : région dans laquelle créer le groupe de points de terminaison du réseau. La région doit être la même que celle du service cible.
  • NEG_NAME : nom du groupe de points de terminaison du réseau.
  • TARGET_SERVICE : URI du rattachement de service.

Ajouter un backend à un équilibreur de charge d'application externe global

gcloud

  1. Créez un service de backend pour le service cible :

    gcloud compute backend-services create BACKEND_SERVICE_NAME \
    --load-balancing-scheme=EXTERNAL_MANAGED \
    --protocol=HTTPS \
    --global
    

    Remplacez BACKEND_SERVICE_NAME par le nom du service de backend.

  2. Ajoutez le NEG Private Service Connect qui pointe vers le service cible.

    gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
    --network-endpoint-group=NEG_NAME \
    --network-endpoint-group-region=NEG_REGION \
    --global
    

    Remplacez les éléments suivants :

    • BACKEND_SERVICE_NAME : nom du service de backend.
    • NEG_NAME : nom du groupe de points de terminaison du réseau.
    • NEG_REGION : région du groupe de points de terminaison du réseau.

Pour en savoir plus sur cette commande gcloud CLI, consultez la documentation de référence de gcloud compute backend-services create et de gcloud compute backend-services add-backend.

REST

  1. Créez un service de backend pour le service cible :

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/global/backendServices
    {
      "protocol": "HTTPS",
      "loadBalancingScheme": "EXTERNAL_MANAGED",
      "name": "BACKEND_SERVICE_NAME"
    }
    

    Remplacez BACKEND_SERVICE_NAME par le nom du service de backend.

  2. Ajoutez le NEG Private Service Connect qui pointe vers le service cible.

    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 "
        }
      ]
    }
    

    Remplacez les éléments suivants :

    • PROJECT_NAME : nom du projet.
    • BACKEND_SERVICE_NAME : nom du service de backend.
    • NEG_REGION : région du groupe de points de terminaison du réseau.
    • NEG_NAME : nom du groupe de points de terminaison du réseau.

Créez un mappage d'URL pour acheminer les requêtes entrantes vers le service de backend.

gcloud

gcloud compute url-maps create URL_MAP_NAME \
  --default-service=BACKEND_SERVICE_NAME \
  --global

Remplacez les éléments suivants :

  • URL_MAP_NAME : nom du mappage d'URL à créer.
  • BACKEND_SERVICE_NAME : nom du service de backend à utiliser pour les requêtes lorsque ce mappage d'URL ne comporte aucun mappage.

Pour en savoir plus sur cette commande CLI gcloud, consultez la documentation de référence 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 "
}

Remplacez les éléments suivants :

  • PROJECT_NAME : nom du projet.
  • URL_MAP_NAME : nom du mappage d'URL à créer.
  • BACKEND_SERVICE_NAME : nom du service de backend à utiliser pour les requêtes lorsque ce mappage d'URL ne comporte aucun mappage.

Créer un proxy HTTPS cible

Créez un proxy HTTPS cible pour rediriger les requêtes vers votre mappage d'URL. Le proxy est la partie de l'équilibreur de charge qui contient le certificat SSL pour l'équilibrage de charge HTTPS. Vous chargez donc également votre certificat à cette étape :

gcloud

gcloud compute target-https-proxies create TARGET_HTTPS_PROXY_NAME \
  --ssl-certificates=SSL_CERTIFICATE_NAME \
  --url-map=URL_MAP_NAME \
  --global

Remplacez les éléments suivants :

  • TARGET_HTTPS_PROXY_NAME : nom du proxy HTTPS cible à créer.
  • SSL_CERTIFICATE_NAME : certificat SSL associé à l'équilibreur de charge.
  • URL_MAP_NAME : ressource de mappage d'URL.

Pour en savoir plus sur cette commande CLI gcloud, consultez la documentation de référence 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"
}

Remplacez les éléments suivants :

  • PROJECT_NAME : nom du projet.
  • SSL_CERTIFICATE_NAME : certificat SSL associé à l'équilibreur de charge.
  • URL_MAP_NAME : ressource de mappage d'URL.
  • TARGET_HTTPS_PROXY_NAME : nom du proxy HTTPS cible à créer.

Créer une adresse globale

Réservez une adresse IP statique à utiliser par votre équilibreur de charge :

gcloud

gcloud compute addresses create LB_IP_ADDRESS_NAME \
  --global

Remplacez les éléments suivants :

  • LB_IP_ADDRESS_NAME : nom de l'adresse IP statique externe ou interne réservée de l'équilibreur de charge.

Pour en savoir plus sur cette commande CLI gcloud, consultez la documentation de référence gcloud compute addresses create.

REST

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/global/addresses
{
  "name": "LB_IP_ADDRESS_NAME"
}

Remplacez les éléments suivants :

  • PROJECT_NAME : nom du projet.
  • LB_IP_ADDRESS_NAME : nom de l'adresse IP statique externe ou interne réservée de l'équilibreur de charge.

Créer une règle de transfert

Créez une règle de transfert pour acheminer les requêtes entrantes vers le 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

Remplacez les éléments suivants :

  • HTTPS_FORWARDING_RULE_NAME : nom de la règle de transfert à créer.
  • LB_IP_ADDRESS_NAME : nom de l'adresse IP statique externe ou interne réservée de l'équilibreur de charge.
  • TARGET_HTTPS_PROXY_NAME : proxy HTTPS cible qui reçoit le trafic.

Pour en savoir plus sur cette commande CLI gcloud, consultez la documentation de référence 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"
}

Remplacez les éléments suivants :

  • PROJECT_NAME : nom du projet.
  • LB_IP_ADDRESS_NAME : nom de l'adresse IP statique externe ou interne réservée de l'équilibreur de charge.
  • TARGET_HTTPS_PROXY_NAME : proxy HTTPS cible qui reçoit le trafic.
  • HTTPS_FORWARDING_RULE_NAME : nom de la règle de transfert à créer.

Configurer un DNS

Configurez un DNS et ajoutez un enregistrement qui mappe *.DOMAIN (par exemple, *.example.com) à l'adresse IP réservée à l'étape précédente. Si vous utilisez Cloud DNS pour gérer le DNS de votre domaine, consultez Ajouter un enregistrement DNS.

Créer votre configuration et votre station de travail

Pour accéder aux postes de travail à l'aide du domaine personnalisé, procédez comme suit :

  1. Utilisez le cluster avec le domaine personnalisé pour créer une configuration de station de travail.

  2. Créez une station de travail à l'aide de la configuration de station de travail avec le domaine personnalisé.

Étapes suivantes

Pour en savoir plus sur la configuration des domaines personnalisés et des clusters privés, consultez les pages suivantes :