Benutzerdefinierte Domains für Cloud Workstations einrichten

Für den Zugriff auf Ihre Workstations können Sie eine vertrauenswürdige benutzerdefinierte Domain angeben, anstatt die Domain cloudworkstations.dev zu verwenden.

Architektur

Wenn Sie Cloud Workstations mit einem benutzerdefinierten Hostnamen verwenden möchten, richten Sie einen privaten Cluster und den PSC-Endpunkt (Private Service Connect) für HTTP-Ingress für Ihren privaten Cluster ein. Sie müssen außerdem einen Application Load Balancer mit einem PSC-Back-End erstellen, der auf den für Ihren privaten Cluster erstellten PSC-Endpunkt ausgerichtet ist. Dieser Application Load Balancer kann entweder extern oder intern sein und verwaltet das SSL-Zertifikat für Ihre benutzerdefinierte Domain.

Das folgende Diagramm veranschaulicht einen Cluster mit einer benutzerdefinierten Domain:

Abbildung 1. Cluster mit benutzerdefinierter Domain

Hinweise

So richten Sie eine benutzerdefinierte Cloud Workstations-Domain ein:

  1. Erstellen Sie einen privaten Cluster und geben Sie mithilfe der gcloud-Befehlszeile oder mit REST API-Befehlen eine vertrauenswürdige, benutzerdefinierte Domain an.

  2. Erstellen Sie einen globalen externen Application Load Balancer mit einem Private Service Connect-Back-End in demselben Projekt, das Sie für das Workstation-Clusterprojekt verwendet haben. Wichtige Hinweise:

    1. Wenn Sie möchten, dass Ihre Workstations privat sind (also nicht über das öffentliche Internet zugänglich sind), müssen Sie einen internen Load-Balancer erstellen. Erstellen Sie dazu eine private DNS-Zone und fügen Sie einen Eintrag hinzu, der die Domain der vom Load-Balancer verwendeten internen IP-Adresse zuordnet. Weitere Informationen zum Erstellen eines internen Load-Balancers finden Sie in der VPC-Dokumentation.

    2. Der Dienstanhang, auf den Sie im Load-Balancer verweisen müssen, kann in der Workstationclusterressource abgerufen werden, nachdem Sie den Cluster erstellt haben.

    3. Rufen Sie ein Zertifikat ab und geben Sie es im Load-Balancer als Platzhalterzertifikat für Ihre Domain an, z. B. *.us-west1-cluster1.example.com. Unter Zertifikate und Google Cloud-Load-Balancer finden Sie die Arten von Zertifikaten, die für den ausgewählten Load-Balancer unterstützt werden.

    4. Sie können den Load-Balancer auch in einem anderen Projekt erstellen, wenn Sie ihn der Liste PrivateClusterConfig.allowedProjects hinzufügen.

    5. Wenn Sie in Ihrer Organisation mehrere Workstation-Cluster haben, können Sie einen einzelnen Load-Balancer mit separaten Back-End-Diensten, Zertifikaten und Routingregeln verwenden.

  3. Richten Sie ein Domain Name System (DNS) ein. Da dies eine von Ihnen verwaltete Domain ist, richten Sie ein DNS für diese Domain ein. Ordnen Sie dazu alle Subdomains der bereitgestellten Domain dem Load-Balancer zu. Erstellen Sie beispielsweise eine DNS-Zone für us-west1-cluster1.example.com und fügen Sie einen Eintrag hinzu, der *.us-west1-cluster1.example.com der von Ihrem Load-Balancer verwendeten externen IP-Adresse zuordnet.

  4. Wenn Sie mit der benutzerdefinierten Domain auf Workstations zugreifen möchten, verwenden Sie den von Ihnen erstellten Cluster zum Erstellen einer Workstationkonfiguration. Erstellen Sie dann eine Workstation mit dieser Workstationkonfiguration.

  5. Starten Sie Ihre Workstation und prüfen Sie die URL. Wenn Sie eine benutzerdefinierte Domain angeben, verwendet die Workstation-URL das folgende Format:

    https://PORT-WORKSTATION_NAME.DOMAIN
    

    Die folgenden Teile der URL hängen von Ihrer Konfiguration ab:

    • PORT: die Portnummer, standardmäßig Port 80.
    • WORKSTATION_NAME: der Name Ihrer Workstation.
    • DOMAIN: Ihr clusterspezifischer Domainname

Privaten Cluster erstellen

Erstellen Sie einen privaten Workstationcluster mit einem privaten Endpunkt:

gcloud

  1. Prüfen Sie zuerst, ob Sie die gcloud-Befehlszeile initialisiert haben, indem Sie gcloud init ausgeführt haben, und ein Standardprojekt angegeben haben. In den folgenden Beispielen wird davon ausgegangen, dass Sie Ihr Standardprojekt festgelegt haben.

  2. Führen Sie den folgenden Befehl aus, um einen privaten Workstationcluster zu erstellen:

    gcloud workstations clusters create WORKSTATION_CLUSTER \
      --region=REGION \
      --domain=DOMAIN \
      --enable-private-endpoint
    

    Ersetzen Sie Folgendes:

    • WORKSTATION_CLUSTER: der Name des Workstationclusters, der erstellt werden soll.
    • REGION: der Name der Region des Clusters.
    • DOMAIN: der von Cloud Workstations für eingehenden HTTP-Traffic verwendete Domainname. Verwenden Sie eine Subdomain, die nur für diesen Cluster gilt, z. B. us-west1-cluster1.example.com.

Weitere Informationen zu diesem gcloud-Befehlszeilenbefehl finden Sie in der Referenzdokumentation zu 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

Ersetzen Sie Folgendes:

  • DOMAIN: der von Cloud Workstations für eingehenden HTTP-Traffic verwendete Domainname. Dies sollte eine Subdomain sein, die nur für diesen Cluster gilt, z. B. us-west1-cluster1.example.com.
  • PROJECT_NAME: der Name des Projekts.
  • REGION: der Name der Region des Clusters.
  • WORKSTATION_CLUSTER: der Name des Workstationclusters, der erstellt werden soll.

Weitere Informationen zu dieser API-Methode finden Sie in der Referenzdokumentation zu workstationClusters.create.

REST

POST https://workstations.googleapis.com/v1/projects/PROJECT_NAME/locations/REGION/workstationClusters?workstationClusterId=WORKSTATION_CLUSTER
{
  "domainConfig": {
    "domain": "DOMAIN"
  },
  "privateClusterConfig": {
    "enablePrivateEndpoint": true
  }
}

Ersetzen Sie Folgendes:

  • PROJECT_NAME: der Name des Projekts.
  • REGION: der Name der Region des Clusters.
  • WORKSTATION_CLUSTER: der Name des Workstationclusters, der erstellt werden soll.
  • DOMAIN: der von Cloud Workstations für eingehenden HTTP-Traffic verwendete Domainname. Dies sollte eine Subdomain sein, die nur für diesen Cluster gilt, z. B. us-west1-cluster1.example.com.

Weitere Informationen zu dieser API-Methode finden Sie in der Referenzdokumentation zu workstationClusters.create.

Globalen externen Application Load Balancer mit PSC-Backend erstellen

Führen Sie die folgenden Schritte in der gcloud-Befehlszeile und der REST API aus, um einen globalen externen Application Load Balancer mit einem PSC-Back-End zu erstellen:

  1. NEG zum Herstellen einer Verbindung zu einem veröffentlichten Dienst erstellen
  2. Einem globalen externen Application Load Balancer ein Backend hinzufügen
  3. URL-Zuordnung erstellen, um eingehende Anfragen an den Back-End-Dienst weiterzuleiten
  4. Ziel-HTTPS-Proxy erstellen
  5. Globale Adresse erstellen
  6. Weiterleitungsregel erstellen

NEG zum Herstellen einer Verbindung zu einem veröffentlichten Dienst erstellen

Wenn Sie eine NEG erstellen, die auf einen veröffentlichten Dienst verweist, benötigen Sie den URI des Dienstanhangs. Der Dienstanhang hat folgendes Format: projects/SERVICE_PROJECT/regions/REGION/serviceAttachments/SERVICE_NAME. Sie finden den URI in der Workstation-Clusterressource.

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

Ersetzen Sie Folgendes:

  • NEG_NAME ist ein Name für die Netzwerk-Endpunktgruppe.
  • TARGET_SERVICE ist der URI des Dienstanhangs.
  • REGION ist die Region, in der die Netzwerk-Endpunktgruppe erstellt werden soll. Die Region muss mit der Region des Zieldienstes übereinstimmen.
  • NETWORK ist die Region, in der die Netzwerk-Endpunktgruppe erstellt werden soll. Wenn nichts angegeben ist, wird das Standardnetzwerk verwendet.
  • SUBNET: das Subnetz, in dem die Netzwerk-Endpunktgruppe erstellt werden soll. Das Subnetz muss sich in derselben Region wie der Zieldienst befinden. Wenn Sie das Netzwerk angeben, muss ein Subnetz angegeben werden. Wenn sowohl das Netzwerk als auch das Subnetz weggelassen werden, wird das Standardnetzwerk verwendet und das Standardsubnetz im angegebenen REGION verwendet.

Weitere Informationen zu diesem gcloud-Befehlszeilenbefehl finden Sie in der Referenzdokumentation zu 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"
}

Ersetzen Sie Folgendes:

  • PROJECT_NAME: der Name des Projekts.
  • REGION ist die Region, in der die Netzwerk-Endpunktgruppe erstellt werden soll. Die Region muss mit der Region des Zieldienstes übereinstimmen.
  • NEG_NAME ist ein Name für die Netzwerk-Endpunktgruppe.
  • TARGET_SERVICE ist der URI des Dienstanhangs.

Einem globalen externen Application Load Balancer ein Backend hinzufügen

gcloud

  1. Erstellen Sie einen Back-End-Dienst für den Zieldienst:

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

    Ersetzen Sie BACKEND_SERVICE_NAME durch den Namen des Backend-Dienstes.

  2. Fügen Sie die Private Service Connect NEG hinzu, die auf den Zieldienst verweist.

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

    Ersetzen Sie Folgendes:

    • BACKEND_SERVICE_NAME ist der Name des Backend-Dienstes.
    • NEG_NAME ist der Name der Netzwerk-Endpunktgruppe.
    • NEG_REGION ist die Region der Netzwerk-Endpunktgruppe.

Weitere Informationen zu diesem gcloud-Befehlszeilenbefehl finden Sie in der Referenzdokumentation zu gcloud compute backend-services create und gcloud compute backend-services add-backend.

REST

  1. Erstellen Sie einen Back-End-Dienst für den Zieldienst:

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

    Ersetzen Sie BACKEND_SERVICE_NAME durch den Namen des Backend-Dienstes.

  2. Fügen Sie die Private Service Connect NEG hinzu, die auf den Zieldienst verweist.

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

    Ersetzen Sie Folgendes:

    • PROJECT_NAME: der Name des Projekts.
    • BACKEND_SERVICE_NAME ist der Name des Backend-Dienstes.
    • NEG_REGION ist die Region der Netzwerk-Endpunktgruppe.
    • NEG_NAME ist der Name der Netzwerk-Endpunktgruppe.

Erstellen Sie eine URL-Zuordnung, um eingehende Anfragen an den Backend-Dienst weiterzuleiten.

gcloud

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

Ersetzen Sie Folgendes:

  • URL_MAP_NAME: der Name der zu erstellenden URL-Zuordnung.
  • BACKEND_SERVICE_NAME: der Name des Back-End-Dienstes, der für Anfragen verwendet werden soll, wenn diese URL-Zuordnung keine Zuordnungen hat.

Weitere Informationen zu diesem gcloud-Befehlszeilenbefehl finden Sie in der Referenzdokumentation zu 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 "
}

Ersetzen Sie Folgendes:

  • PROJECT_NAME: der Name des Projekts.
  • URL_MAP_NAME: der Name der zu erstellenden URL-Zuordnung.
  • BACKEND_SERVICE_NAME: der Name des Back-End-Dienstes, der für Anfragen verwendet werden soll, wenn diese URL-Zuordnung keine Zuordnungen hat.

Ziel-HTTPS-Proxy erstellen

Erstellen Sie einen HTTPS-Zielproxy, um Anfragen an Ihre URL-Zuordnung zu leiten. Der Proxy ist der Teil des Load-Balancers, der das SSL-Zertifikat für das HTTPS-Load-Balancing besitzt. Daher laden Sie in diesem Schritt auch Ihr Zertifikat:

gcloud

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

Ersetzen Sie Folgendes:

  • TARGET_HTTPS_PROXY_NAME: der Name des zu erstellenden Ziel-HTTPS-Proxys.
  • SSL_CERTIFICATE_NAME: das SSL-Zertifikat, das dem Load-Balancer zugeordnet ist
  • URL_MAP_NAME: die URL-Zuordnungsressource.

Weitere Informationen zu diesem gcloud-Befehlszeilenbefehl finden Sie in der Referenzdokumentation zu 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"
}

Ersetzen Sie Folgendes:

  • PROJECT_NAME: der Name des Projekts.
  • SSL_CERTIFICATE_NAME: das SSL-Zertifikat, das dem Load-Balancer zugeordnet ist
  • URL_MAP_NAME: die URL-Zuordnungsressource.
  • TARGET_HTTPS_PROXY_NAME: der Name des zu erstellenden Ziel-HTTPS-Proxys.

Globale Adresse erstellen

Reservieren Sie eine statische IP-Adresse, die von Ihrem Load-Balancer verwendet werden soll:

gcloud

gcloud compute addresses create LB_IP_ADDRESS_NAME \
  --global

Ersetzen Sie Folgendes:

  • LB_IP_ADDRESS_NAME: der Name für die reservierte statische externe oder interne IP-Adresse des Load-Balancers.

Weitere Informationen zu diesem gcloud-Befehlszeilenbefehl finden Sie in der Referenzdokumentation zu gcloud compute addresses create.

REST

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

Ersetzen Sie Folgendes:

  • PROJECT_NAME: der Name des Projekts.
  • LB_IP_ADDRESS_NAME: der Name für die reservierte statische externe oder interne IP-Adresse des Load-Balancers.

Erstellen Sie eine Weiterleitungsregel.

Erstellen Sie eine Weiterleitungsregel, um eingehende Anfragen an den Proxy weiterzuleiten:

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

Ersetzen Sie Folgendes:

  • HTTPS_FORWARDING_RULE_NAME: der Name der zu erstellenden Weiterleitungsregel.
  • LB_IP_ADDRESS_NAME: der Name für die reservierte statische externe oder interne IP-Adresse des Load-Balancers.
  • TARGET_HTTPS_PROXY_NAME: der Ziel-HTTPS-Proxy, der den Traffic empfängt.

Weitere Informationen zu diesem gcloud-Befehlszeilenbefehl finden Sie in der Referenzdokumentation zu 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"
}

Ersetzen Sie Folgendes:

  • PROJECT_NAME: der Name des Projekts.
  • LB_IP_ADDRESS_NAME: der Name für die reservierte statische externe oder interne IP-Adresse des Load-Balancers.
  • TARGET_HTTPS_PROXY_NAME: der Ziel-HTTPS-Proxy, der den Traffic empfängt.
  • HTTPS_FORWARDING_RULE_NAME: der Name der zu erstellenden Weiterleitungsregel.

DNS einrichten

Richten Sie ein DNS ein und fügen Sie einen Eintrag hinzu, der *.DOMAIN (z. B. *.example.com) der im vorherigen Schritt reservierten IP-Adresse zuordnet. Wenn Sie Cloud DNS zur Verwaltung des DNS für Ihre Domain verwenden, finden Sie weitere Informationen unter DNS-Eintrag hinzufügen.

Workstationkonfiguration und Workstation erstellen

So greifen Sie mit der benutzerdefinierten Domain auf Workstations zu:

  1. Verwenden Sie den Cluster mit der benutzerdefinierten Domain, um eine Workstationkonfiguration zu erstellen.

  2. Erstellen Sie eine Workstation mithilfe der Workstationkonfiguration mit der benutzerdefinierten Domain.

Nächste Schritte

Weitere Informationen zum Einrichten benutzerdefinierter Domains und privater Cluster finden Sie hier: