Freigegebene VPC bereitstellen

Mit einer freigegebenen VPC können Sie Subnetze von einem VPC-Netzwerk (Virtual Private Cloud) in einem Hostprojekt in andere Dienstprojekte in derselbenOrganisation exportieren. Instanzen in den Dienstprojekten können Netzwerkverbindungen in den freigegebenen Subnetzen des Hostprojekts haben. Auf dieser Seite wird beschrieben, wie Sie eine freigegebene VPC einrichten und verwenden. Hierzu gehören auch einige notwendige administrative Vorbereitungen für Ihre Organisation.

Die freigegebene VPC unterstützt den Export von Nur-IPv4- (Single-Stack) und IPv4- sowie IPv6-Subnetzen (Dual-Stack).

Informationen zum Trennen von Dienstprojekten oder zum vollständigen Entfernen der Konfiguration einer freigegebenen VPC finden Sie unter Bereitstellung von freigegebener VPC aufheben.

Eine freigegebene VPC wird in der API und in der Befehlszeile auch als „XPN” bezeichnet.

Kontingente, Limits und berechtigte Ressourcen

Bevor Sie beginnen, sollten Sie sich mit Shared VPC und IAM vertraut machen, insbesondere:

Organisation vorbereiten

Administratoren und IAM

Zum Vorbereiten Ihrer Organisation, zum Einrichten von freigegebenen VPC-Hostprojekten und zur Verwendung von freigegebenen VPC-Netzwerken werden mindestens drei verschiedene administrative IAM-Rollen (Identitäts- und Zugriffsverwaltung) benötigt. Weitere Details zu den einzelnen Rollen und Informationen zu optionalen Rollen finden Sie im Abschnitt Administratoren und IAM der Übersicht zu freigegebenen VPC.

Einschränkungen für Organisationsrichtlinien

Einschränkungen für Organisationsrichtlinien können freigegebene VPC-Ressourcen auf Projekt-, Ordner- oder Organisationsebene schützen. In den folgenden Abschnitten werden die einzelnen Richtlinien beschrieben.

Versehentliches Löschen von Hostprojekten verhindern

Das versehentliche Löschen eines Hostprojekts würde zu Ausfällen in allen damit verbundenen Dienstprojekten führen. Wenn ein Projekt als freigegebenes VPC-Hostprojekt konfiguriert ist, wird eine spezielle Sperre hinzugefügt. Solange diese Sperre aktiv ist, kann das Projekt nicht versehentlich gelöscht werden. Die Sperre wird automatisch entfernt, wenn das Projekt kein Hostprojekt mehr ist.

Ein Nutzer mit der Rolle orgpolicy.policyAdmin kann eine Richtlinieneinschränkung auf Organisationsebene (constraints/compute.restrictXpnProjectLienRemoval) festlegen, die das Entfernen von Sperren auf die folgenden Rollen beschränkt:

  • Nutzer mit roles/owner oder roles/resourcemanager.lienModifier auf Organisationsebene
  • Nutzer mit benutzerdefinierten Rollen, die die Berechtigungen resourcemanager.projects.get und resourcemanager.projects.updateLiens auf Organisationsebene enthalten

Dadurch wird verhindert, dass ein Projektinhaber, der nicht die Rolle roles/owner oder resourcemanager.lienModifier auf Organisationsebene hat, versehentlich ein freigegebenes VPC-Hostprojekt löschen kann. Weitere Informationen zu den Berechtigungen, die mit der Rolle resourcemanager.lienModifier verknüpft sind, finden Sie in der Dokumentation zum Resource Manager unter Projekt sperren.

Da eine Organisationsrichtlinie für alle Projekte in der Organisation gilt, müssen Sie diese Schritte nur einmal ausführen, um das Entfernen von Sperren zu beschränken.

  1. Authentifizieren Sie sich bei gcloud als Organisationsadministrator oder IAM-Hauptkonto mit der Rolle orgpolicy.policyAdmin. Ersetzen Sie ORG_ADMIN durch den Namen eines Organisationsadministrators:

    gcloud auth login ORG_ADMIN
    
  2. Führen Sie den folgenden Befehl aus, um Ihre Organisations-ID zu ermitteln:

    gcloud organizations list
    
  3. Führen Sie diesen Befehl aus, um die Richtlinie compute.restrictXpnProjectLienRemoval für Ihre Organisation zu erzwingen. Ersetzen Sie ORG_ID durch die ID-Nummer, die Sie im vorherigen Schritt ermittelt haben.

    gcloud resource-manager org-policies enable-enforce \
        --organization ORG_ID compute.restrictXpnProjectLienRemoval
    
  4. Melden Sie sich zum Schutz Ihres Kontos von gcloud ab, wenn Sie die Aufgaben als Administrator der Organisation abgeschlossen haben.

    gcloud auth revoke ORG_ADMIN
    

Anhänge an das Hostprojekt beschränken

Ein Administrator einer freigegebenen VPC kann standardmäßig an jedes Hostprojekt in derselben Organisation einen Nicht-Host anhängen. Ein Administrator für Organisationsrichtlinien kann die Anzahl der Hostprojekte beschränken, denen ein Nicht-Hostprojekt oder Nicht-Hostprojekte in einem Ordner oder einer Organisation angehängt werden können. Weitere Informationen finden Sie im Abschnitt zur Einschränkung constraints/compute.restrictSharedVpcHostProjects.

Subnetze im Hostprojekt festlegen, die ein Dienstprojekt verwenden darf

IAM-Hauptkonten können in Dienstprojekten nach der Konfiguration der freigegebenen VPC standardmäßig jedes Subnetz im Hostprojekt verwenden, wenn sie die entsprechenden IAM-Berechtigungen haben. Zusätzlich zur Verwaltung individueller Nutzerberechtigungen kann ein Administrator einer Organisationsrichtlinie eine Richtlinie festlegen, die die Subnetze definiert, auf die ein bestimmtes Projekt oder Projekte in einem Ordner oder einer Organisation zugreifen können. Weitere Informationen finden Sie im Abschnitt zur Einschränkung constraints/compute.restrictSharedVpcSubnetworks.

Versehentliches Herunterfahren von Hostprojekten verhindern

Das Trennen der Abrechnung in einem freigegebenen VPC-Netzwerk kann dazu führen, dass alle abhängigen Ressourcen einschließlich Dienstprojekten vollständig heruntergefahren werden. Um ein mögliches Auftreten eines versehentlichen Herunterfahrens einer freigegebenen VPC aufgrund einer inaktiven oder deaktivierten Abrechnung zu verhindern, sichern Sie die Verknüpfung zwischen dem Hostprojekt und seinem Rechnungskonto.

Administratoren für freigegebene VPC benennen

Ein Organisationsadministrator kann einem oder mehreren IAM-Hauptkonten die Rollen Administrator für freigegebene VPC und Projekt-IAM-Administrator zuweisen.

Die Rolle „Projekt-IAM-Administrator” erteilt Administratoren für freigegebene VPC die Berechtigung, alle vorhandenen und zukünftigen Subnetze und nicht nur einzelne Subnetze freizugeben. Diese Zuweisung erfolgt auf Organisations- oder Ordnerebene, nicht auf Projektebene. Daher müssen die IAM-Hauptkonten in der Organisation und nicht nur in einem darin enthaltenen Projekt definiert werden.

Console

Rolle „Administrator für freigegebene Compute-VPC” auf Organisationsebene zuweisen

  1. Melden Sie sich in der Google Cloud Console als Organisationsadministrator an und rufen Sie dann die Seite „IAM” auf.
    Zur Seite „IAM”
  2. Wählen Sie im Projektmenü Ihre Organisation aus.
    Wenn Sie ein Projekt auswählen, werden im Menü Rollen nicht die richtigen Einträge angezeigt.
  3. Klicken Sie auf Add.
  4. Geben Sie die E-Mail-Adressen der neuen Hauptkonten ein.
  5. Wählen Sie im Drop-down-Menü Rollen die Option Compute Engine > Administrator für freigegebene Compute-VPC aus.

  6. Klicken Sie auf Weitere Rolle hinzufügen.

  7. Wählen Sie im Drop-down-Menü Rollen die Option Resource Manager > Projekt-IAM-Administrator aus.

  8. Klicken Sie auf Speichern.

Rolle „Administrator für freigegebene Compute-VPC” auf Ordnerebene zuweisen

  1. Melden Sie sich in der Google Cloud Console als Organisationsadministrator an und rufen Sie dann die Seite „IAM” auf.
    Zur Seite „IAM”
  2. Wählen Sie im Projektmenü Ihren Ordner aus.
    Wenn Sie ein Projekt oder eine Organisation auswählen, werden Ihnen nicht die richtigen Optionen angezeigt.
  3. Klicken Sie auf Add.
  4. Geben Sie die E-Mail-Adressen der neuen Hauptkonten ein.
  5. Wählen Sie unter Rolle auswählen die Option Compute Engine > Administrator für freigegebene Compute-VPC aus.
  6. Klicken Sie auf Weitere Rolle hinzufügen.
  7. Wählen Sie im Drop-down-Menü Rollen die Option Resource Manager > Projekt-IAM-Administrator aus.
  8. Klicken Sie auf Weitere Rolle hinzufügen.
  9. Wählen Sie im Drop-down-Menü Rollen die Option Resource Manager > Compute-Netzwerkbetrachter aus.
  10. Klicken Sie auf Speichern.

gcloud

  1. Authentifizieren Sie sich bei gcloud als Organisationsadministrator. Ersetzen Sie ORG_ADMIN durch den Namen eines Organisationsadministrators:

    gcloud auth login ORG_ADMIN
    
  2. Führen Sie den folgenden Befehl aus, um Ihre Organisations-ID festzustellen:

    gcloud organizations list
    
  3. Wenn Sie die Rolle „Administrator für freigegebene VPC” auf Organisationsebene zuweisen möchten, gehen Sie so vor:

    1. Weisen Sie die Rolle als Administrator für freigegebene VPC einem vorhandenen IAM-Hauptkonto zu. Ersetzen Sie ORG_ID durch die Organisations-ID aus dem vorherigen Schritt und EMAIL_ADDRESS durch die E-Mail-Adresse des Nutzers, dem Sie die Rolle „Administrator für freigegebene VPC” zuweisen.

      gcloud organizations add-iam-policy-binding ORG_ID \
        --member='user:EMAIL_ADDRESS' \
        --role="roles/compute.xpnAdmin"
      
      gcloud organizations add-iam-policy-binding ORG_ID \
        --member='user:EMAIL_ADDRESS' \
        --role="roles/resourcemanager.projectIamAdmin"
      
  4. Wenn Sie die Rolle „Administrator für freigegebene VPC” auf Ordnerebene zuweisen möchten, gehen Sie so vor:

    1. Führen Sie den folgenden Befehl aus, um Ihre Ordner-ID zu ermitteln:

      gcloud resource-manager folders list --organization=ORG_ID
      
    2. Weisen Sie die Rolle als Administrator für freigegebene VPC einem vorhandenen IAM-Hauptkonto zu. Ersetzen Sie ORG_ID durch die Organisations-ID aus dem vorherigen Schritt und EMAIL_ADDRESS durch die E-Mail-Adresse des Nutzers, dem Sie die Rolle „Administrator für freigegebene VPC” zuweisen.

      gcloud resource-manager folders add-iam-policy-binding FOLDER_ID \
         --member='user:EMAIL_ADDRESS' \
         --role="roles/compute.xpnAdmin"
      
      gcloud resource-manager folders add-iam-policy-binding FOLDER_ID \
         --member='user:EMAIL_ADDRESS' \
         --role="roles/resourcemanager.projectIamAdmin"
      
      gcloud resource-manager folders add-iam-policy-binding FOLDER_ID \
         --member='user:EMAIL_ADDRESS' \
         --role="roles/compute.networkViewer"
      
  5. Widerrufen Sie zum Schutz Ihres Kontos im gcloud-Befehlszeilentool das Token Ihres Organisationsadministratorkontos, wenn Sie die Aufgaben zum Schutz Ihres Kontos abgeschlossen haben.

    gcloud auth revoke ORG_ADMIN
    

API

  • So weisen Sie die Rolle „Administrator für freigegebene VPC” auf Organisationsebene zu:

    1. Ermitteln Sie Ihre Organisations-ID.

      POST https://cloudresourcemanager.googleapis.com/v1/organizations
      
    2. Beschreiben Sie die Details Ihrer vorhandenen Organisationsrichtlinie und notieren Sie diese.

      POST https://cloudresourcemanager.googleapis.com/v1/organizations/ORG_ID:getIamPolicy
      

      Ersetzen Sie ORG_ID durch die ID Ihrer Organisation.

    3. Weisen Sie die Rolle "Administrator für freigegebene Compute-VPC" zu.

      POST https://cloudresourcemanager.googleapis.com/v1/organizations/ORG_ID:setIamPolicy
      {
        "bindings": [
          ...copy existing bindings
          {
            "members": [
              "user:EMAIL_ADDRESS"
            ],
            "role": "roles/compute.xpnAdmin"
          },
          {
            "members": [
              "user:EMAIL_ADDRESS"
            ],
            "role": "roles/resourcemanager.projectIamAdmin"
          }
        ],
        "etag": "ETAG",
        "version": 1,
        ...other existing policy details
      }
      

      Dabei gilt:

      • ORG_ID: die ID der Organisation, die den Nutzer enthält, dem Sie die Rolle „Administrator für freigegebene VPC“ zuweisen.
      • EMAIL_ADDRESS: die E-Mail-Adresse des Nutzers.
      • ETAG: eine eindeutige Kennung, die Sie beim Beschreiben der vorhandenen Richtlinie erhalten haben. Sie verhindert Konflikte, wenn mehrere Aktualisierungsanfragen gleichzeitig gesendet werden.

      Weitere Informationen finden Sie im Artikel zur Methode organizations.setIamPolicy.

  • Die Rolle „Administrator für freigegebene VPC” weisen Sie auf Ordnerebene mit folgender Anfrage zu:

    1. Ermitteln Sie Ihre Organisations-ID.

      POST https://cloudresourcemanager.googleapis.com/v1/organizations
      
    2. Suchen Sie nach Ihrer Ordner-ID.

      GET https://cloudresourcemanager.googleapis.com/v2/folders?parent=organizations/ORG_ID
      

      Ersetzen Sie ORG_ID durch die ID Ihrer Organisation.

    3. Beschreiben Sie die Details Ihrer vorhandenen Ordnerrichtlinie und notieren Sie diese.

      POST https://cloudresourcemanager.googleapis.com/v2/folders/FOLDER_ID:getIamPolicy
      

      Ersetzen Sie FOLDER_ID durch die ID Ihres Ordners.

    4. Weisen Sie die Rolle "Administrator für freigegebene Compute-VPC" zu.

      POST https://cloudresourcemanager.googleapis.com/v1/organizations/FOLDER_ID:setIamPolicy
      {
        "bindings": [
          ...copy existing bindings
          {
            "members": [
              "user:EMAIL_ADDRESS"
            ],
            "role": "roles/compute.xpnAdmin"
          },
          {
            "members": [
              "user:EMAIL_ADDRESS"
            ],
            "role": "roles/resourcemanager.projectIamAdmin"
          },
          {
            "members": [
              "user:EMAIL_ADDRESS"
            ],
            "role": "roles/compute.networkViewer"
          }
        ],
        "etag": "ETAG",
        "version": 1,
        ...other existing policy details
      }
      

      Dabei gilt:

      • FOLDER_ID: die ID der Organisation, die den Nutzer enthält, dem Sie die Rolle „Administrator für freigegebene VPC“ zuweisen.
      • EMAIL_ADDRESS: die E-Mail-Adresse des Nutzers.
      • ETAG: eine eindeutige Kennung, die Sie beim Beschreiben der vorhandenen Richtlinie erhalten haben. Sie verhindert Konflikte, wenn mehrere Aktualisierungsanfragen gleichzeitig gesendet werden.

      Weitere Informationen finden Sie im Artikel zur Methode folders.setIamPolicy.

Freigegebene VPC einrichten

Alle in diesem Abschnitt beschriebenen Aufgaben müssen von einem Administrator für freigegebene VPC ausgeführt werden.

Hostprojekt aktivieren

Innerhalb einer Organisation können Administratoren für freigegebene VPCs anhand der vorliegenden Anleitung Projekte als freigegebene VPC-Hostprojekte definieren, die bestimmten Kontingenten und Limits unterliegen. Administratoren für freigegebene VPCs können auch Projekte erstellen und löschen, wenn ihnen auf Organisationsebene die Rollen "Projektersteller" und "Projektlöscher" (roles/resourcemanager.projectCreator und roles/resourcemanager.projectDeleter) zugewiesen sind.

Wenn Sie ein Hostprojekt aktivieren, werden die Netzwerkressourcen des Projekts nicht automatisch für Dienstprojekte freigegeben. Sie müssen Dienstprojekte anhängen, um die ausgewählten Netzwerke und Subnetze für das Dienstprojekt freizugeben.

Console

Wenn Sie noch nicht die Rolle „Administrator für freigegebene VPC” haben, können Sie diese Seite nicht in der Google Cloud Console ansehen.

  1. Rufen Sie in der Google Cloud Console die Seite Freigegebene VPC auf.
    Zur Seite "Freigegebene VPC"
  2. Melden Sie sich als Administrator für freigegebene VPC an.
  3. Wählen Sie in der Projektauswahl das Projekt aus, das Sie als freigegebenes VPC-Hostprojekt aktivieren möchten.
  4. Klicken Sie auf Freigegebene VPC einrichten.
  5. Klicken Sie auf der nächsten Seite unter Hostprojekt aktivieren auf Speichern und weiter.
  6. Führen Sie unter Subnetze auswählen einen der folgenden Schritte aus:
    1. Klicken Sie auf Alle Subnetze freigeben (Berechtigungen auf Projektebene), wobei die Freigabe für alle aktuellen und zukünftigen Subnetze in den VPC-Netzwerken des Hostprojekts gilt und bestimmte Dienstprojekte und Dienstprojektadministratoren wie im Folgenden beschrieben zusätzlich freigegeben werden.
    2. Klicken Sie auf Einzelne Subnetze (Berechtigungen auf Subnetzebene), wenn Sie Subnetze aus den VPC-Netzwerken des Hostprojekts nur für bestimmte Dienstprojekte und Dienstprojektadministratoren freigeben möchten. Wählen Sie dann Subnetze zum Freigeben aus.
  7. Klicken Sie auf Weiter.
    Der nächste Bildschirm wird angezeigt.
  8. Geben Sie unter Projektnamen die Dienstprojekte an, die an das Hostprojekt angehängt werden sollen. Mit dem Hinzufügen von Dienstprojekten werden noch keine Dienstprojektadministratoren festgelegt. Dies erfolgt im nächsten Schritt.
  9. Fügen Sie im Bereich Nutzer nach Rolle auswählen Dienstprojektadministratoren hinzu. Diese Nutzer erhalten die IAM-Rolle compute.networkUser für die freigegebenen Subnetze. Nur Dienstprojektadministratoren können in den Subnetzen des freigegebenen VPC-Hostprojekts Ressourcen erstellen.
  10. Klicken Sie auf Speichern.

gcloud

  1. Authentifizieren Sie sich in gcloud als ein Administrator für freigegebene Compute-VPC. Ersetzen Sie SHARED_VPC_ADMIN durch den Namen des Administrators für freigegebene VPC:

    gcloud auth login SHARED_VPC_ADMIN
    
  2. Aktivieren Sie die freigegebene VPC für das Projekt, das Sie als Hostprojekt festlegen möchten. Ersetzen Sie HOST_PROJECT_ID durch die ID des Projekts.

    gcloud compute shared-vpc enable HOST_PROJECT_ID
    
  3. Prüfen Sie, ob das Projekt als Hostprojekt für Ihre Organisation aufgeführt wird. Ersetzen Sie ORG_ID durch Ihre Organisations-ID (ermittelt über gcloud organizations list).

    gcloud compute shared-vpc organizations list-host-projects ORG_ID
    
  4. Wenn Sie nur ein Hostprojekt aktivieren müssen, können Sie sich anschließend von gcloud abmelden, um die Anmeldedaten des Administratorkontos für freigegebene VPC zu schützen. Andernfalls können Sie diesen Schritt überspringen und nun Dienstprojekte anhängen.

    gcloud auth revoke SHARED_VPC_ADMIN
    

API

  1. Verwenden Sie Anmeldedaten mit Administratorberechtigungen für freigegebene VPC, um freigegebene VPC für das Projekt zu aktivieren.

    POST https://compute.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/enableXpnHost
    

    Ersetzen Sie HOST_PROJECT_ID durch die ID des Projekts, das ein Hostprojekt für freigegebene VPC werden soll.

    Weitere Informationen finden Sie im Artikel zur Methode projects.enableXpnHost.

  2. Prüfen Sie, ob das Projekt als Hostprojekt aufgeführt wird.

    POST https://compute.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/listXpnHosts
    

    Ersetzen Sie HOST_PROJECT_ID durch die ID des freigegebenen VPC-Hostprojekts.

    Weitere Informationen finden Sie im Artikel zur Methode projects.listXpnHosts.

Terraform

Sie können eine Terraform-Ressource verwenden, um ein Hostprojekt zu aktivieren.

resource "google_compute_shared_vpc_host_project" "host" {
  project = var.project # Replace this with your host project ID in quotes
}

Informationen zum Anwenden oder Entfernen einer Terraform-Konfiguration finden Sie unter Grundlegende Terraform-Befehle.

Dienstprojekte anhängen

Ein Dienstprojekt muss an ein Hostprojekt angehängt werden, bevor seine Dienstprojektadministratoren die freigegebene VPC verwenden können. Hierzu muss ein Administrator für freigegebene VPC folgende Schritte ausführen.

Jedes Dienstprojekt kann jeweils nur an ein Hostprojekt angehängt werden, während an ein Hostprojekt mehrere Dienstprojekte angehängt werden können. Ausführliche Informationen finden Sie auf der Seite mit den VPC-Kontingenten unter Limits für freigegebene VPC-Projekte.

Console

  1. Melden Sie sich in der Google Cloud Console als Administrator für freigegebene Compute-VPC an.
  2. Rufen Sie in der Google Cloud Console die Seite Freigegebene VPC auf.
    Zur Seite "Freigegebene VPC"
  3. Klicken Sie auf den Tab Angehängte Projekte.
  4. Klicken Sie auf dem Tab Angehängte Projekte auf die Schaltfläche Projekte anhängen.
  5. Klicken Sie im Bereich Projektnamen auf die Kästchen für die Dienstprojekte, die angehängt werden sollen. Mit dem Hinzufügen von Dienstprojekten werden noch keine Dienstprojektadministratoren festgelegt. Dies erfolgt im nächsten Schritt.
  6. Wählen Sie im Abschnitt VPC-Netzwerkberechtigungen die Rollen aus, deren Hauptkonten die Rolle compute.networkUser erhalten. IAM-Hauptkonten wird die Rolle „Netzwerknutzer” für das gesamte Hostprojekt oder für bestimmte Subnetze im Hostprojekt anhand des VPC-Netzwerkfreigabemodus zugewiesen. Diese Hauptkonten werden in ihren jeweiligen Dienstprojekten als Dienstprojektadministratoren bezeichnet.
  7. Wählen Sie im Bereich VPC-Netzwerkfreigabemodus eine der folgenden Optionen aus:
    1. Klicken Sie auf Alle Subnetze freigeben (Berechtigungen auf Projektebene), um alle aktuellen und zukünftigen Subnetze in den VPC-Netzwerken des Hostprojekts für alle Dienstprojekte und Dienstprojektadministratoren freizugeben.
    2. Klicken Sie auf Einzelne Subnetze (Berechtigungen auf Subnetzebene), wenn Sie Subnetze aus den VPC-Netzwerken des Hostprojekts nur für bestimmte Dienstprojekte und Dienstprojektadministratoren freigeben möchten. Wählen Sie dann Subnetze zum Freigeben aus.
  8. Klicken Sie auf Speichern.

gcloud

  1. Falls noch nicht geschehen, authentifizieren Sie sich bei gcloud als Administrator für freigegebene VPC. Ersetzen Sie SHARED_VPC_ADMIN durch den Namen des Administrators für freigegebene VPC:

    gcloud auth login SHARED_VPC_ADMIN
    
  2. Hängen Sie ein Dienstprojekt an ein zuvor aktiviertes Hostprojekt an. Ersetzen Sie SERVICE_PROJECT_ID durch die Projekt-ID des Dienstprojekts und HOST_PROJECT_ID durch die Projekt-ID des Hostprojekts.

    gcloud compute shared-vpc associated-projects add SERVICE_PROJECT_ID \
        --host-project HOST_PROJECT_ID
    
  3. Stellen Sie fest, ob das Dienstprojekt angehängt wurde.

    gcloud compute shared-vpc get-host-project SERVICE_PROJECT_ID
    
  4. Sie können auch die Dienstprojekte auflisten lassen, die an das Hostprojekt angehängt sind:

    gcloud compute shared-vpc list-associated-resources HOST_PROJECT_ID
    
  5. Wenn Sie nur ein Dienstprojekt anhängen möchten, können Sie sich anschließend von gcloud abmelden, um die Anmeldedaten des Administratorkontos für freigegebene VPC zu schützen. Andernfalls können Sie diesen Schritt überspringen und nun die Dienstprojektadministratoren für alle Subnetze oder nur für einige Subnetze festlegen.

    gcloud auth revoke SHARED_VPC_ADMIN
    

API

  1. Hängen Sie ein Dienstprojekt an das freigegebene VPC-Hostprojekt an.

    POST https://compute.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/enableXpnResource
    {
      "xpnResource": {
        "id": "SERVICE_PROJECT"
      }
    }
    

    Dabei gilt:

    • HOST_PROJECT_ID: die ID des freigegebenen VPC-Hostprojekts.
    • SERVICE_PROJECT: die ID des anzuhängenden Dienstprojekts.

    Weitere Informationen finden Sie im Artikel zur Methode projects.enableXpnResource.

  2. Bestätigen Sie, dass die Dienstprojekte an das Hostprojekt angehängt sind.

    GET https://compute.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/getXpnResources
    

    Dabei gilt:

    • HOST_PROJECT_ID: die ID des freigegebenen VPC-Hostprojekts.

    Weitere Informationen finden Sie im Artikel zur Methode projects.getXpnResources.

Terraform

Sie können eine Terraform-Ressource verwenden, um ein Dienstprojekt anzuhängen.

resource "google_compute_shared_vpc_service_project" "service1" {
  host_project    = google_compute_shared_vpc_host_project.host.project
  service_project = var.service_project # Replace this with your service project ID in quotes
}

Informationen zum Anwenden oder Entfernen einer Terraform-Konfiguration finden Sie unter Grundlegende Terraform-Befehle.

Dienstprojektadministratoren für alle Subnetze

Ein Administrator für freigegebene VPC kann einem IAM-Hauptkonto aus einem Dienstprojekt die Rolle Dienstprojektadministrator mit Zugriff auf alle Subnetze im Hostprojekt zuweisen. Solchen Dienstprojektadministratoren wird die Rolle compute.networkUser für das gesamte Hostprojekt zugewiesen. Dies bedeutet, dass sie Zugriff auf alle derzeit definierten und zukünftigen Subnetze im Hostprojekt haben.

Ein Nutzer mit der Rolle compute.networkUser im Hostprojekt kann alle Subnetze in den angehängten Dienstprojekten sehen.

Console

Weitere Informationen zum Definieren eines IAM-Hauptkontos aus einem Dienstprojekt als Dienstprojektadministrator mit Zugriff auf alle Subnetze in einem Hostprojekt mithilfe der Google Cloud Console finden Sie im Abschnitt Dienstprojekte anhängen.

gcloud

Nachstehend wird beschrieben, wie Sie als Dienstprojektadministrator aus einem Dienstprojekt ein IAM-Hauptkonto mit Zugriff auf alle Subnetze im Hostprojekt festlegen. Bevor Sie diese Schritte ausführen können, müssen Sie ein Hostprojekt aktiviert und das Dienstprojekt an das Hostprojekt angehängt haben.

  1. Falls noch nicht geschehen, authentifizieren Sie sich bei gcloud als Administrator für freigegebene VPC. Ersetzen Sie SHARED_VPC_ADMIN durch den Namen des Administrators für freigegebene VPC:

    gcloud auth login SHARED_VPC_ADMIN
    
  2. Erstellen Sie eine Richtlinienbindung, mit der ein IAM-Hauptkonto aus dem Dienstprojekt als Dienstprojektadministrator festgelegt wird. Ersetzen Sie HOST_PROJECT_ID durch die Projekt-ID des Hostprojekts und SERVICE_PROJECT_ADMIN durch die E-Mail-Adresse des Dienstprojektadministrators.

    gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
    --member "user:SERVICE_PROJECT_ADMIN" \
    --role "roles/compute.networkUser"
    

    Sie können verschiedene Hauptkontotypen angeben. Dazu ändern Sie das Format des Arguments --member:

    • Verwenden Sie group:, um eine Google-Gruppe (per E-Mail-Adresse) als Hauptkonto anzugeben.
    • Verwenden Sie domain:, um als Hauptkonto eine Google-Domain anzugeben.
    • Verwenden Sie serviceAccount:, um ein Dienstkonto anzugeben. Weitere Informationen zu diesem Anwendungsfall finden Sie unter Dienstkonten als Dienstprojektadministratoren.
  3. Wiederholen Sie den vorherigen Schritt für jeden weiteren Dienstprojektadministrator, den Sie festlegen möchten.

  4. Wenn Sie die Definition von Dienstprojektadministratoren abgeschlossen haben, können Sie sich von gcloud abmelden, um die Anmeldedaten des Administratorkontos für freigegebene VPC zu schützen.

    gcloud auth revoke SHARED_VPC_ADMIN
    

API

  1. Beschreiben Sie die Details Ihrer vorhandenen Projektrichtlinie und notieren Sie diese. Sie benötigen die vorhandene Richtlinie und den etag-Wert.

    POST https://cloudresourcemanager.googleapis.com/v2/projects/HOST_PROJECT_ID:getIamPolicy
    

    Ersetzen Sie HOST_PROJECT_ID durch die ID des Hostprojekts, das das freigegebene VPC-Netzwerk enthält.

  2. Erstellen Sie eine Richtlinienbindung, um IAM-Hauptkonten im Dienstprojekt als Dienstprojektadministratoren festzulegen.

    POST https://cloudresourcemanager.googleapis.com/v1/projects/HOST_PROJECT_ID:setIamPolicy
    {
      "bindings": [
        ...copy existing bindings
        {
          "members": [
            PRINCIPAL,
            ...additional principals
          ],
          "role": "roles/compute.networkUser"
        },
      ],
      "etag": "ETAG",
      "version": 1,
      ...other existing policy details
    }
    

    Dabei gilt:

    • HOST_PROJECT_ID: die ID des Hostprojekts, das das freigegebene VPC-Netzwerk enthält.
    • PRINCIPAL: eine Identität, mit der die Rolle verknüpft ist, z. B. ein Nutzer, eine Gruppe, eine Domain oder ein Dienstkonto. Weitere Informationen finden Sie in der Resource Manager-Dokumentation zum Feld members.
    • ETAG: eine eindeutige Kennung, die Sie beim Beschreiben der vorhandenen Richtlinie erhalten haben. Sie verhindert Konflikte, wenn mehrere Aktualisierungsanfragen gleichzeitig gesendet werden.

    Weitere Informationen finden Sie im Artikel zur Methode projects.setIamPolicy.

Dienstprojektadministratoren für bestimmte Subnetze

Ein Administrator für freigegebene VPC kann einem IAM-Hauptkonto aus einem Dienstprojekt die Rolle Dienstprojektadministrator mit Zugriff auf einige der Subnetze im Hostprojekt zuweisen. Mit dieser Option können Sie Dienstprojektadministratoren differenzierter festlegen. Weisen Sie ihnen dazu die Rolle compute.networkUser nur für einige Subnetze im Hostprojekt zu.

Ein Nutzer mit der Rolle compute.networkUser im Hostprojekt kann alle Subnetze in den angehängten Dienstprojekten sehen.

Console

Weitere Informationen zum Definieren eines IAM-Hauptkontos aus einem Dienstprojekt als Dienstprojektadministrator mit Zugriff auf nur einige der Subnetze in einem Hostprojekt mithilfe der Google Cloud Console finden Sie im Abschnitt Dienstprojekte anhängen.

gcloud

Nachstehend wird beschrieben, wie Sie als Dienstprojektadministrator aus einem Dienstprojekt ein IAM-Hauptkonto festlegen, das Zugriff auf einige Subnetze im Host-Projekt erhält. Bevor Sie diese Hauptkonten festlegen können, müssen Sie ein Hostprojekt aktiviert und das Dienstprojekt an das Hostprojekt angehängt haben.

  1. Falls noch nicht geschehen, authentifizieren Sie sich bei gcloud als Administrator für freigegebene VPC. Ersetzen Sie SHARED_VPC_ADMIN durch den Namen des Administrators für freigegebene VPC:

    gcloud auth login SHARED_VPC_ADMIN
    
  2. Wählen Sie das Subnetz im Hostprojekt aus, auf das die Dienstprojektadministratoren Zugriff haben sollen. Rufen Sie die aktuelle IAM-Richtlinie im JSON-Format ab. Ersetzen Sie SUBNET_NAME durch den Namen des Subnetzes im Hostprojekt und HOST_PROJECT_ID durch die Projekt-ID des Hostprojekts.

    gcloud compute networks subnets get-iam-policy SUBNET_NAME \
        --region SUBNET_REGION \
        --project HOST_PROJECT_ID \
        --format json
    
  3. Kopieren Sie die JSON-Ausgabe aus dem vorherigen Schritt und speichern Sie sie in einer Datei. Zur Verdeutlichung wird die Ausgabe in dieser Anleitung in einer Datei mit dem Namen subnet-policy.json gespeichert.

  4. Fügen Sie in der Datei subnet-policy.json die IAM-Hauptkonten hinzu, die Dienstprojektadministratoren mit Zugriff auf das Subnetz werden sollen. Ersetzen Sie SERVICE_PROJECT_ADMIN jeweils durch die E-Mail-Adresse eines IAM-Nutzers aus dem Dienstprojekt.

    {
      "bindings": [
      {
         "members": [
               "user:[SERVICE_PROJECT_ADMIN]",
               "user:[SERVICE_PROJECT_ADMIN]"
            ],
            "role": "roles/compute.networkUser"
      }
      ],
      "etag": "[ETAG_STRING]"
    }
    

    Sie können in der Richtlinie verschiedene Typen von IAM-Hauptkonten (außer Nutzern) angeben:

    • Ändern Sie user: in group:, um eine Google-Gruppe (per E-Mail-Adresse) als Hauptkonto anzugeben.
    • Ändern Sie user: in domain:, um eine Google-Domain als Hauptkonto anzugeben.
    • Verwenden Sie serviceAccount:, um ein Dienstkonto anzugeben. Weitere Informationen zu diesem Anwendungsfall finden Sie unter Dienstkonten als Dienstprojektadministratoren.
  5. Aktualisieren Sie die Richtlinienbindung für das Subnetz mithilfe des Inhalts der Datei subnet-policy.json.

    gcloud compute networks subnets set-iam-policy SUBNET_NAME subnet-policy.json \
        --region SUBNET_REGION \
        --project HOST_PROJECT_ID
    
  6. Wenn Sie die Definition von Dienstprojektadministratoren abgeschlossen haben, können Sie sich von gcloud abmelden, um die Anmeldedaten des Administratorkontos für freigegebene VPC zu schützen.

    gcloud auth revoke SHARED_VPC_ADMIN
    

API

  1. Beschreiben Sie die Details Ihrer vorhandenen Subnetzrichtlinie und notieren Sie diese. Sie benötigen die vorhandene Richtlinie und den etag-Wert.

    GET https://compute.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/SUBNET_REGION/subnetworks/SUBNET_NAME/getIamPolicy
    

    Dabei gilt:

    • HOST_PROJECT_ID: die ID des Hostprojekts, das das freigegebene VPC-Netzwerk enthält.
    • SUBNET_NAME: der Name des freizugebenden Subnetzes.
    • SUBNET_REGION: die Region, in der sich das Subnetz befindet.
  2. Aktualisieren Sie die Subnetzrichtlinie, um den Dienstprojektadministratoren Zugriff auf Subnetze im Hostprojekt zu erteilen.

    POST https://compute.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/SUBNET_REGION/subnetworks/SUBNET_NAME/setIamPolicy
    {
      "bindings": [
        ...copy existing bindings
        {
          "members": [
            PRINCIPAL,
            ...additional principals
          ],
          "role": "roles/compute.networkUser"
        },
      ],
      "etag": "ETAG",
      "version": 1,
      ...other existing policy details
    }
    

    Dabei gilt:

    • ETAG: eine eindeutige Kennung, die Sie beim Beschreiben der vorhandenen Richtlinie erhalten haben. Sie verhindert Konflikte, wenn mehrere Aktualisierungsanfragen gleichzeitig gesendet werden.
    • HOST_PROJECT_ID: die ID des Hostprojekts, das das freigegebene VPC-Netzwerk enthält.
    • PRINCIPAL: eine Identität, mit der die Rolle verknüpft ist, z. B. ein Nutzer, eine Gruppe, eine Domain oder ein Dienstkonto. Weitere Informationen finden Sie in der Resource Manager-Dokumentation zum Feld members.
    • SUBNET_NAME: der Name des freizugebenden Subnetzes.
    • SUBNET_REGION: die Region, in der sich das Subnetz befindet.

    Weitere Informationen finden Sie im Artikel zur Methode subnetworks.setIamPolicy.

Dienstkonten als Dienstprojektadministratoren

Ein Administrator für freigegebene VPC kann auch Dienstkonten von Dienstprojekten als Dienstprojektadministratoren definieren. In diesem Abschnitt wird veranschaulicht, wie zwei verschiedene Arten von Dienstkonten als Dienstprojektadministratoren definiert werden:

Die Rolle des Dienstprojektadministrators (compute.networkUser) kann für alle Subnetze oder nur für einige Subnetze des Hostprojekts zugewiesen werden. Der Einfachheit halber wird in diesem Abschnitt lediglich erläutert, wie jeder der beiden Dienstkontotypen als Dienstprojektadministrator für alle Subnetze des Hostprojekts definiert wird.

Benutzerverwaltete Dienstkonten als Dienstprojektadministratoren

Nachstehend wird beschrieben, wie ein benutzerverwaltetes Dienstkonto als Dienstprojektadministrator für alle Subnetze des freigegebenen VPC-Hostprojekts definiert wird.

Console

  1. Melden Sie sich in der Google Cloud Console als Administrator für freigegebene Compute-VPC an.
  2. Öffnen Sie in der Google Cloud Console die Seite Einstellungen.
    Zur Seite "Einstellungen"
  3. Ändern Sie das Projekt in das Dienstprojekt mit dem Dienstkonto, das als Dienstprojektadministrator festgelegt werden soll.
  4. Kopieren Sie die Projekt-ID des Dienstprojekts. Zur Vereinfachung wird die Dienstprojekt-ID hier SERVICE_PROJECT_ID genannt.
  5. Ändern Sie das Projekt zum freigegebenen VPC-Hostprojekt.
  6. Rufen Sie in der Google Cloud Console die IAM-Seite auf.
    Zur Seite „IAM”
  7. Klicken Sie auf Add.
  8. Geben Sie in das Feld Hauptkonten SERVICE_ACCOUNT_NAME@SERVICE_PROJECT_ID.iam.gserviceaccount.com ein und ersetzen Sie dabei SERVICE_ACCOUNT_NAME durch den Namen des Dienstkontos.
  9. Wählen Sie im Menü Rollen die Option Compute Engine > Compute-Netzwerknutzer aus.
  10. Klicken Sie auf Hinzufügen.

gcloud

  1. Falls noch nicht geschehen, authentifizieren Sie sich bei gcloud als Administrator für freigegebene VPC. Ersetzen Sie SHARED_VPC_ADMIN durch den Namen des Administrators für freigegebene VPC:

    gcloud auth login SHARED_VPC_ADMIN
    
  2. Wenn Sie die Projekt-ID des Dienstprojekts nicht kennen, können Sie alle Projekte in Ihrer Organisation auflisten. Diese Liste enthält die Projekt-IDs aller Projekte.

    gcloud projects list
    
  3. Erstellen Sie eine Richtlinienbindung, um das Dienstkonto als Dienstprojektadministrator festzulegen. Ersetzen Sie HOST_PROJECT_ID durch die Projekt-ID des Hostprojekts, SERVICE_ACCOUNT_NAME durch den Namen des Dienstkontos und SERVICE_PROJECT_ID durch die Dienstprojekt-ID.

    gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
        --member "serviceAccount:SERVICE_ACCOUNT_NAME@SERVICE_PROJECT_ID.iam.gserviceaccount.com" \
        --role "roles/compute.networkUser"
    

API

  1. Beschreiben Sie die Details Ihrer vorhandenen Projektrichtlinie und notieren Sie diese. Sie benötigen die vorhandene Richtlinie und den etag-Wert.

    POST https://cloudresourcemanager.googleapis.com/v2/projects/HOST_PROJECT_ID:getIamPolicy
    

    Ersetzen Sie HOST_PROJECT_ID durch die ID des Hostprojekts, das das freigegebene VPC-Netzwerk enthält.

  2. Erstellen Sie eine Richtlinienbindung, um Dienstkonten als Dienstprojektadministratoren festzulegen.

    POST https://cloudresourcemanager.googleapis.com/v1/projects/HOST_PROJECT_ID:setIamPolicy
    {
      "bindings": [
        ...copy existing bindings
        {
          "members": [
            "serviceAccount:SERVICE_ACCOUNT_NAME@SERVICE_PROJECT_ID.iam.gserviceaccount.com",
            ...include additional service accounts
          ],
          "role": "roles/compute.networkUser"
        },
      ],
      "etag": "ETAG",
      "version": 1,
      ...other existing policy details
    }
    

    Dabei gilt:

    • HOST_PROJECT_ID: die ID des Hostprojekts, das das freigegebene VPC-Netzwerk enthält.
    • SERVICE_ACCOUNT_NAME: der Name des Dienstkontos.
    • SERVICE_PROJECT_ID: die ID des Dienstprojekts, das das Dienstkonto enthält.
    • ETAG: eine eindeutige Kennung, die Sie beim Beschreiben der vorhandenen Richtlinie erhalten haben. Sie verhindert Konflikte, wenn mehrere Aktualisierungsanfragen gleichzeitig gesendet werden.

    Weitere Informationen finden Sie im Artikel zur Methode projects.setIamPolicy.

Google API-Dienstkonto als Dienstprojektadministrator

Nachstehend wird beschrieben, wie das Google API-Dienstkonto als Dienstprojektadministrator für alle Subnetze des freigegebenen VPC-Hostprojekts definiert wird. Das Festlegen eines Google APIs-Dienstkonto als Dienstprojektadministrator ist zwingende Voraussetzung für verwaltete Instanzgruppen, die mit einer freigegebenen VPC verwendet werden, da Vorgänge wie die Instanzerstellung von diesem Dienstkontotyp ausgeführt werden. Weitere Informationen zu dieser Beziehung finden Sie unter Verwaltete Instanzgruppen und IAM.

Console

  1. Melden Sie sich in der Google Cloud Console als Administrator für freigegebene Compute-VPC an.
  2. Öffnen Sie in der Google Cloud Console die Seite Einstellungen.
    Zur Seite "Einstellungen"
  3. Ändern Sie das Projekt in das Dienstprojekt mit dem Dienstkonto, das als Dienstprojektadministrator festgelegt werden soll.
  4. Kopieren Sie die Projektnummer des Dienstprojekts. Zur Vereinfachung wird die Dienstprojektnummer hier SERVICE_PROJECT_NUMBER genannt.
  5. Ändern Sie das Projekt zum freigegebenen VPC-Hostprojekt.
  6. Rufen Sie in der Google Cloud Console die IAM-Seite auf.
    Zur Seite „IAM”
  7. Klicken Sie auf Add.
  8. Geben Sie SERVICE_PROJECT_NUMBER@cloudservices.gserviceaccount.com in das Feld Mitglieder ein.
  9. Wählen Sie im Menü Rollen die Option Compute Engine > Compute-Netzwerknutzer aus.
  10. Klicken Sie auf Hinzufügen.

gcloud

  1. Falls noch nicht geschehen, authentifizieren Sie sich bei gcloud als Administrator für freigegebene VPC. Ersetzen Sie SHARED_VPC_ADMIN durch den Namen des Administrators für freigegebene VPC:

    gcloud auth login SHARED_VPC_ADMIN
    
  2. Ermitteln Sie die Projektnummer des Dienstprojekts. Zur Vereinfachung wird die Dienstprojektnummer hier SERVICE_PROJECT_NUMBER genannt. Ersetzen Sie SERVICE_PROJECT_ID durch die Projekt-ID des Dienstprojekts.

    gcloud projects describe SERVICE_PROJECT_ID --format='get(projectNumber)'
    
    • Wenn Sie die Projekt-ID des Dienstprojekts nicht kennen, können Sie alle Projekte in Ihrer Organisation auflisten. Diese Liste enthält die Projektnummern aller Projekte.

      gcloud projects list
      
  3. Erstellen Sie eine Richtlinienbindung, um das Dienstkonto als Dienstprojektadministrator festzulegen. Ersetzen Sie HOST_PROJECT_ID durch die Projekt-ID des Hostprojekts und SERVICE_PROJECT_NUMBER durch die Dienstprojektnummer.

    gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
        --member "serviceAccount:SERVICE_PROJECT_NUMBER@cloudservices.gserviceaccount.com" \
        --role "roles/compute.networkUser"
    

API

  1. Beschreiben Sie die Details Ihrer vorhandenen Projektrichtlinie und notieren Sie diese. Sie benötigen die vorhandene Richtlinie und den etag-Wert.

    POST https://cloudresourcemanager.googleapis.com/v2/projects/HOST_PROJECT_ID:getIamPolicy
    

    Ersetzen Sie HOST_PROJECT_ID durch die ID des Hostprojekts, das das freigegebene VPC-Netzwerk enthält.

  2. Geben Sie Ihr Projekt an, um seine Projektnummer zu ermitteln.

    GET https://cloudresourcemanager.googleapis.com/v1/projects?filter=projectId="SERVICE_PROJECT_ID"
    

    Ersetzen Sie SERVICE_PROJECT_ID durch der ID des Dienstprojekts, in dem sich das Dienstkonto befindet.

  3. Erstellen Sie eine Richtlinienbindung, um Dienstkonten als Dienstprojektadministratoren festzulegen.

    POST https://cloudresourcemanager.googleapis.com/v1/projects/HOST_PROJECT_ID:setIamPolicy
    {
      "bindings": [
        ...copy existing bindings
        {
          "members": [
            "serviceAccount:SERVICE_PROJECT_NUMBER@cloudservices.gserviceaccount.com"
          ],
          "role": "roles/compute.networkUser"
        },
      ],
      "etag": "ETAG",
      "version": 1,
      ...other existing policy details
    }
    

    Dabei gilt:

    • HOST_PROJECT_ID: die ID des Hostprojekts, das das freigegebene VPC-Netzwerk enthält.
    • SERVICE_PROJECT_NUMBER: die Nummer des Dienstprojekts, das das Dienstkonto enthält.
    • ETAG: eine eindeutige Kennung, die Sie beim Beschreiben der vorhandenen Richtlinie erhalten haben. Sie verhindert Konflikte, wenn mehrere Aktualisierungsanfragen gleichzeitig gesendet werden.

    Weitere Informationen finden Sie im Artikel zur Methode projects.setIamPolicy.

Freigegebene VPC verwenden

Sobald ein Administrator für freigegebene VPCs ein Hostprojekt aktiviert, die erforderlichen Dienstprojekte angehängt und die Dienstprojektadministratoren für alle Subnetze oder einige Subnetze des Hostprojekts festgelegt hat, können die Dienstprojektadministratoren in den Dienstprojekten die Subnetze des Hostprojekts verwenden, um Instanzen, Vorlagen und interne Load Balancer zu erstellen.

Alle in diesem Abschnitt beschriebenen Aufgaben müssen von einem Dienstprojektadministrator ausgeführt werden.

Beachten Sie, dass ein Administrator für freigegebene VPCs den Dienstprojektadministratoren nur die Rolle "Compute Network User" (roles/compute.networkUser ) entweder für das gesamte Hostprojekt oder nur für einige seiner Subnetze zuweist. Dienstprojektadministratoren sollten auch die anderen Rollen haben, die für die Verwaltung ihrer jeweiligen Dienstprojekte erforderlich sind. Zum Beispiel kann ein Dienstprojektadministrator auch Projektinhaber sein, zumindest aber sollte er für das Projekt die Rolle "Compute Instance Admin" (roles/compute.instanceAdmin) haben.

Verfügbare Subnetze auflisten

Dienstprojektadministratoren können die Subnetze auflisten, für die sie Berechtigungen haben. Die Vorgehensweise ist nachstehend beschrieben.

Console

Rufen Sie in der Google Cloud Console die Seite Freigegebene VPC auf.

Zu Shared VPC gehen

gcloud

  1. Falls noch nicht geschehen, authentifizieren Sie sich bei gcloud als Dienstprojektadministrator. Ersetzen Sie SERVICE_PROJECT_ADMIN durch den Namen des Dienstprojektadministrators:

    gcloud auth login SERVICE_PROJECT_ADMIN
    
  2. Führen Sie den folgenden Befehl aus und ersetzen Sie dabei HOST_PROJECT_ID durch die Projekt-ID des freigegebenen VPC-Hostprojekts:

    gcloud compute networks subnets list-usable --project HOST_PROJECT_ID
    

    Im folgenden Beispiel werden die verfügbaren Subnetze im Hostprojekt project-1 aufgelistet:

    $ gcloud compute networks subnets list-usable --project project-1
    
    PROJECT    REGION       NETWORK  SUBNET    RANGE          SECONDARY_RANGES
    project-1  us-west1     net-1    subnet-1  10.138.0.0/20
    project-1  us-central1  net-1    subnet-2  10.128.0.0/20  r-1 192.168.2.0/24
                                                              r-2 192.168.3.0/24
    project-1  us-east1     net-1    subnet-3  10.142.0.0/20
    

Weitere Informationen finden Sie in der SDK-Dokumentation zum Befehl list-usable.

API

Listen Sie die verfügbaren Subnetze im Hostprojekt auf. Stellen Sie die Anfrage als Dienstprojektadministrator.

GET https://compute.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/aggregated/subnetworks/listUsable

Ersetzen Sie HOST_PROJECT_ID durch die ID des Hostprojekts, das das freigegebene VPC-Netzwerk enthält.

Weitere Informationen finden Sie im Artikel zur Methode subnetworks.listUsable.

Statische interne IPv4- oder IPv6-Adresse reservieren

Dienstprojektadministratoren können in einem Subnetz eines freigegebenen VPC-Netzwerks eine interne IPv4- oder IPv6-Adresse reservieren. Das Konfigurationsobjekt für IP-Adressen wird im Dienstprojekt erstellt und dessen Wert stammt aus dem Bereich der IPv4-Adressen, die in dem jeweiligen freigegebenen Subnetz verfügbar sind.

Führen Sie die folgenden Schritte aus, um eine eigenständige interne IP-Adresse im Dienstprojekt zu reservieren.

Console

  1. Freigegebene VPC einrichten.
  2. Rufen Sie in der Google Cloud Console die Seite Freigegebene VPC auf.

    Zu Shared VPC gehen

  3. Melden Sie sich als Administrator für freigegebene VPC an.

  4. Wählen Sie das Dienstprojekt aus der Projektauswahl aus.

  5. Wechseln Sie zur Seite IP-Adressen, indem Sie VPC-Netzwerk > IP-Adressen auswählen.

  6. Klicken Sie auf Interne statische IP-Adresse reservieren.

  7. Geben Sie im Feld Name einen Namen für die IP-Adresse ein.

  8. Wählen Sie in der Liste IP-Version die erforderliche IP-Version aus:

    • Wählen Sie IPv4 aus, um eine statische interne IPv4-Adresse zu reservieren.
    • Wählen Sie IPv6 aus, um eine statische interne IPv6-Adresse zu reservieren.
  9. Klicken Sie auf die Schaltfläche Für mich freigegebene Netzwerke.

  10. Wählen Sie in den Listen Netzwerk und Subnetzwerk ein VPC-Netzwerk bzw. ein Subnetz aus.

  11. Geben Sie an, wie Sie die IP-Adresse reservieren möchten:

    • Wenn Sie bei IPv4-Adressen eine statische interne IPv4-Adresse angeben möchten, die Sie reservieren möchten, wählen Sie unter Statische IP-Adresse die Option Selbst auswählen aus und geben Sie dann eine benutzerdefinierte IP-Adresse ein. Andernfalls weist das System automatisch eine statische interne IPv4-Adresse im Subnetz zu.
    • Bei IPv6-Adressen weist das System automatisch eine statische interne IPv6-Adresse aus dem internen IPv6-Adressbereich des Subnetzes zu.
  12. Optional: Wenn Sie die statische interne IPv4-Adresse in verschiedenen Front-Ends freigeben möchten, wählen Sie unter Zweck die Option Freigegeben aus. Die Standardauswahl ist Nicht freigegeben.

  13. Klicken Sie auf Reservieren.

gcloud

  1. Falls noch nicht geschehen, authentifizieren Sie sich bei der Google Cloud CLI als Service Project Admin. Ersetzen Sie SERVICE_PROJECT_ADMIN durch den Namen des Service Project Admins:

    gcloud auth login SERVICE_PROJECT_ADMIN
    
  2. Führen Sie den Befehl compute addresses create aus.

    • Reservieren Sie IPv4-Adressen:

      gcloud compute addresses create IP_ADDR_NAME \
          --project SERVICE_PROJECT_ID \
          --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET \
          --region=REGION
          --ip-version=IPV4
      
    • Reservieren Sie IPv6-Adressen:

      gcloud compute addresses create IP_ADDR_NAME \
          --project SERVICE_PROJECT_ID \
          --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET \
          --region=REGION
          --ip-version=IPV6
      

    Dabei gilt:

    • IP_ADDR_NAME: ein Name für das IPv4-Adressobjekt
    • SERVICE_PROJECT_ID: die ID des Dienstprojekts.
    • HOST_PROJECT_ID: die ID des freigegebenen VPC-Hostprojekts.
    • REGION: die Region, die das freigegebene Subnetz enthält.
    • SUBNET: der Name des freigegebenen Subnetzes.

Weitere Informationen zum Erstellen von IP-Adressen finden Sie in der SDK-Dokumentation.

API

Verwenden Sie die Methode addresses.insert.

  • Reservieren Sie eine statische interne IPv4-Adresse als Dienstprojektadministrator:

    POST https://compute.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/regions/REGION/addresses
    {
    "name": "ADDRESS_NAME",
    "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME",
    "addressType": "INTERNAL"
    }
    

Dabei gilt:

  • ADDRESS_NAME: ein Name für die reservierte interne IP-Adresse.
  • HOST_PROJECT_ID: die ID des Projekts, das das freigegebene VPC-Netzwerk enthält.
  • REGION: die Region, in der sich die reservierte IPv4-Adresse befinden soll, und in der sich das freigegebene Subnetz befindet.
  • SERVICE_PROJECT_ID: die ID des Dienstprojekts, für das Sie die IPv4-Adresse reservieren.
  • SUBNET_NAME: der Name des freigegebenen Subnetzes.

Weitere Informationen finden Sie im Artikel zur Methode addresses.insert.

Terraform

Mit einem Terraform-Datenblock können Sie die Informationen des Hostsubnetzes angeben. Verwenden Sie dann eine Terraform-Ressource, um eine statische interne IPv4-Adresse zu reservieren. Wenn Sie das optionale Argument address weglassen, wird die verfügbare IPv4-Adresse ausgewählt und reserviert.

Geben Sie das Hostsubnetz an:

data "google_compute_subnetwork" "subnet" {
  name    = "my-subnet-123"
  project = var.project
  region  = "us-central1"
}

Reservieren Sie eine IPv4-Adresse aus dem Subnetz des Hostprojekts, die im Dienstprojekt verwendet werden soll:

resource "google_compute_address" "internal" {
  project      = var.service_project
  region       = "us-central1"
  name         = "int-ip"
  address_type = "INTERNAL"
  address      = "10.0.0.8"
  subnetwork   = data.google_compute_subnetwork.subnet.self_link
}

Informationen zum Anwenden oder Entfernen einer Terraform-Konfiguration finden Sie unter Grundlegende Terraform-Befehle.

Statische externe IPv4-Adresse reservieren

Eine Ressource in einem Dienstprojekt kann eine regionale statische externe IPv4-Adresse verwenden, die entweder im Dienstprojekt oder im Hostprojekt definiert ist. Daher kann eine Ressource in den angehängten Dienstprojekten eine regionale statische externe IPv4-Adresse verwenden, die im Hostprojekt reserviert ist.

Statische externe IPv6-Adresse reservieren

Dienstprojektadministratoren können in einem Dienstprojekt eine statische externe IPv6-Adresse reservieren. Das Konfigurationsobjekt für IPv6-Adressen wird im Dienstprojekt erstellt und dessen Wert stammt aus dem Bereich der IPv6-Adressen, die in dem jeweiligen freigegebenen Subnetz verfügbar sind.

Console

Sie können eine eigenständige externe IPv6-Adresse im Dienstprojekt mit der Google Cloud Console reservieren:

  1. Freigegebene VPC einrichten.
  2. Rufen Sie in der Google Cloud Console die Seite „Freigegebene VPC” auf.
    Zur Seite „Freigegebene VPC“
  3. Melden Sie sich als Administrator für freigegebene VPC an.
  4. Wählen Sie das Dienstprojekt aus der Projektauswahl aus.
  5. Wählen Sie auf der Seite IP-Adressen die Option VPC-Netzwerk > IP-Adressen aus.
  6. Klicken Sie auf Externe statische IP-Adresse reservieren.
  7. Wählen Sie einen Namen für die neue Adresse.
  8. Geben Sie an, ob die Netzwerkdienststufe Premium oder Standard ist. Die Reservierung der statischen IPv6-Adresse wird nur in der Premium-Stufe unterstützt.
  9. Wählen Sie unter IP-Version die Option IPv6 aus.
  10. Legen Sie fest, ob diese IP-Adresse regional oder global ist.
    • Wenn Sie eine statische IP-Adresse für einen globalen Load-Balancer reservieren, wählen Sie Global aus.
    • Wenn Sie eine statische IP-Adresse für eine Instanz oder einen regionalen Load Balancer reservieren, wählen Sie Regional und dann die Region aus, in der die Adresse erstellt werden soll.
  11. Wählen Sie Folgendes aus:
    • Netzwerke in diesem Projekt: Wählen Sie diese Option aus, wenn Sie eine externe IPv6-Adresse in einem Subnetz desselben VPC-Netzwerks (Virtual Private Cloud) reservieren möchten, in dem Sie die IPv6-Adresse reservieren.
    • Für mich freigegebene Netzwerke: Wählen Sie diese Option aus, wenn Sie eine externe IPv6-Adresse in einem Subnetz eines freigegebenen VPC-Netzwerks reservieren möchten.
  12. Wählen Sie je nach Auswahl Folgendes aus:

    • Netzwerk: das VPC-Netzwerk
    • Subnetzwerk: das Subnetz, aus dem die statische regionale IPv6-Adresse zugewiesen wird
    • Endpunkttyp: Wählen Sie VM-Instanz oder Network Load Balancer aus.
  13. Optional: Wenn Sie VM-Instanz als Endpunkttyp ausgewählt haben, wählen Sie eine VM-Instanz aus, an die die IPv6-Adresse angehängt werden soll.

  14. Klicken Sie auf Reservieren.

gcloud

  1. Falls noch nicht geschehen, authentifizieren Sie sich bei gcloud als Dienstprojektadministrator. Ersetzen Sie SERVICE_PROJECT_ADMIN durch den Namen des Dienstprojektadministrators:

    gcloud auth login SERVICE_PROJECT_ADMIN
    
  2. Führen Sie folgenden gcloud compute addresses create-Befehl aus:

    gcloud compute addresses create IP_ADDR_NAME \
        --project SERVICE_PROJECT_ID \
        --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET \
        --region=REGION \
        --ip-version=IPV6 \
        --endpoint-type=[VM | NETLB]
    

    Dabei gilt:

    • IP_ADDR_NAME: ein Name für das IPv6-Adressobjekt.
    • SERVICE_PROJECT_ID: die ID des Dienstprojekts.
    • HOST_PROJECT_ID: die ID des freigegebenen VPC-Hostprojekts.
    • SUBNET: der Name des freigegebenen Subnetzes.
    • REGION: die Region, die das freigegebene Subnetz enthält.

API

Verwenden Sie die Methode addresses.insert, um eine statische interne IPv6-Adresse als Dienstprojektadministrator zu reservieren:

POST https://compute.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/regions/REGION/addresses
{
  "name": "ADDRESS_NAME",
  "ipVersion": "IPV6",
  "ipv6EndpointType": "VM|LB",
  "networkTier": "PREMIUM",
  "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME",
  "addressType": "EXTERNAL"
}

Dabei gilt:

  • SERVICE_PROJECT_ID: die ID des Dienstprojekts, für das Sie die IPv6-Adresse reservieren.
  • REGION: die Region, in der sich die reservierte IPv6-Adresse und das freigegebene Subnetz befinden.
  • ADDRESS_NAME: ein Name für die reservierte statische externe IPv6-Adresse.
  • HOST_PROJECT_ID: die ID des Projekts, das das freigegebene VPC-Netzwerk enthält.
  • SUBNET_NAME: der Name des freigegebenen Subnetzes.

Instanz erstellen

Beachten Sie beim Erstellen einer Instanz mithilfe einer freigegebenen VPC Folgendes:

  • Das Standardverfahren zum Erstellen einer Instanz umfasst die Auswahl einer Zone, eines Netzwerks und eines Subnetzes. Das ausgewählte Subnetz und die ausgewählte Zone müssen sich in derselben Region befinden. Wenn ein Dienstprojektadministrator eine Instanz unter Verwendung eines Subnetzes aus einem freigegebenen VPC-Netzwerk erstellt, muss die für diese Instanz ausgewählte Zone in derselben Region liegen wie das ausgewählte Subnetz.

    Wenn Sie eine Instanz mit einer reservierten statischen internen IPv4-Adresse erstellen, sind das Subnetz und die Region bereits ausgewählt, wenn die statische IPv4-Adresse erstellt wird. In diesem Abschnitt finden Sie ein Beispiel, wie Sie mit gcloud eine Instanz mit einer statischen internen IPv4-Adresse erstellen.

  • Dienstprojektadministratoren können Instanzen nur in Subnetzen erstellen, für die ihnen Berechtigungen erteilt wurden. Informationen zum Ermitteln der verfügbaren Subnetze finden Sie unter Verfügbare Subnetze auflisten.

  • Wenn Google Cloud eine Anfrage zum Erstellen einer Instanz in einem Subnetz eines freigegebenen VPC-Netzwerks erhält, wird überprüft, ob das IAM-Hauptkonto, das die Anfrage stellt, über die Berechtigung zum Verwenden dieses freigegebenen Subnetzes verfügt. Wenn die Prüfung fehlschlägt, wird die Instanz nicht erstellt und Google Cloud gibt einen Berechtigungsfehler zurück. Wenn Sie Hilfe benötigen, wenden Sie sich an den Administrator der freigegebenen VPC.

  • Sie können eine Dual-Stack-Instanz erstellen, wenn Sie die Instanz in einem Dual-Stack-Subnetz erstellen. Dual-Stack-Subnetze werden nur in VPC-Netzwerken im benutzerdefinierten Modus unterstützt. Der IPv6-Zugriffstyp des Subnetzes bestimmt, ob die der VM zugewiesene IPv6-Adresse eine interne oder externe IPv6-Adresse ist.

Zum Erstellen von Dual-Stack-Instanzen in einem freigegebenen Subnetz verwenden Sie die Google Cloud CLI oder die API. Sie können keine Dual-Stack-Instanz in einem freigegebenen Subnetz mit der Google Cloud Console erstellen.

Console

  1. Freigegebene VPC einrichten.
  2. Rufen Sie in der Google Cloud Console die Seite Freigegebene VPC auf.

    Zu Shared VPC gehen

  3. Melden Sie sich als Administrator für freigegebene VPC an.

  4. Wählen Sie das Dienstprojekt aus der Projektauswahl aus.

  5. Wählen Sie Compute Engine > VM-Instanzen > Instanz erstellen aus, um die Seite Instanz erstellen aufzurufen.

  6. Legen Sie einen Namen für die Instanz fest.

  7. Wählen Sie unter Region eine Region aus, die ein freigegebenes Subnetzwerk enthält.

  8. Klicken Sie unter Erweiterte Optionen auf Netzwerk.

  9. Klicken Sie unter Netzwerkschnittstellen auf das Optionsfeld Für mich freigegebene Netzwerke.

  10. Wählen Sie in der Liste Freigegebenes Subnetzwerk das erforderliche Subnetz aus, in dem Sie die Instanz erstellen möchten:

    • Wählen Sie für IPv4-Adressen ein beliebiges Einzelstack-Subnetz aus.
    • Wählen Sie für IPv6-Adressen ein Dual-Stack-Subnetz mit dem erforderlichen IPv6-Zugriffstyp aus.
  11. Wählen Sie den IP-Stack-Typ aus:

    • Wählen Sie für IPv4-Adressen IPv4 (Einzelstack) aus.
    • Wählen Sie für IPv6-Adressen IPv4 und IPv6 (Dual-Stack) aus.
  12. Geben Sie weitere erforderliche Parameter für die Instanz ein.

  13. Klicken Sie auf Erstellen.

gcloud

  • Erstellen Sie eine Instanz mit einer sitzungsspezifischen internen IPv4-Adresse in einem freigegebenen Subnetz eines freigegebenen VPC-Netzwerks:

    gcloud compute instances create INSTANCE_NAME \
        --project SERVICE_PROJECT_ID \
        --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET \
        --zone ZONE
    

    Dabei gilt:

    • INSTANCE_NAME: der Name der Instanz.
    • SERVICE_PROJECT_ID: die ID des Dienstprojekts.
    • HOST_PROJECT_ID: die ID des freigegebenen VPC-Hostprojekts.
    • REGION: die Region, die das freigegebene Subnetz enthält.
    • SUBNET: der Name des freigegebenen Subnetzes.
    • ZONE: eine Zone in der angegebenen Region. .
  • Erstellen Sie eine Instanz mit einer reservierten statischen internen IPv4-Adresse in einem freigegebenen VPC-Netzwerk:

    1. Reservieren Sie eine statische interne IPv4-Adresse im Dienstprojekt aus dem Bereich der verfügbaren Adressen des Hostprojekts.
    2. Erstellen Sie die Instanz:

      gcloud compute instances create INSTANCE_NAME \
          --project SERVICE_PROJECT_ID \
          --private-network-ip IP_ADDR_NAME \
          --zone ZONE \
          --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET
      

      Dabei gilt:

      • INSTANCE_NAME: der Name der Instanz.
      • SERVICE_PROJECT_ID: die ID des Dienstprojekts.
      • IP_ADDR_NAME: der Name der statischen IP-Adresse.
      • ZONE: eine Zone in derselben Region wie IP_ADDR_NAME
      • HOST_PROJECT_ID: die ID des freigegebenen VPC-Hostprojekts.
      • REGION: die Region, die das freigegebene Subnetz enthält.
      • SUBNET: der Name des freigegebenen Subnetzes, das der statischen internen IPv4-Adresse zugeordnet ist.
  • Erstellen Sie eine Instanz mit einer sitzungsspezifischen internen IPv4-Adresse und einer sitzungsspezifischen IPv6-Adresse:

    gcloud compute instances create INSTANCE_NAME \
        --project SERVICE_PROJECT_ID \
        --stack-type IPV4_IPV6 \
        --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET \
        --zone ZONE
    

    Dabei gilt:

    • INSTANCE_NAME: der Name der Instanz.
    • SERVICE_PROJECT_ID: die ID des Dienstprojekts.
    • HOST_PROJECT_ID: die ID des freigegebenen VPC-Hostprojekts.
    • REGION: die Region, die das freigegebene Subnetz enthält.
    • SUBNET: der Name des freigegebenen Subnetzes.
    • ZONE: eine Zone in der angegebenen Region.
  • Erstellen Sie eine Instanz mit einer reservierten statischen externen IPv6-Adresse:

    gcloud compute instances create INSTANCE_NAME \
        --project SERVICE_PROJECT_ID \
        --stack-type IPV4_IPV6 \
        --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET \
        --ipv6-address IPV6_ADDRESS \
        --ipv6-prefix-length=96 \
        --ipv6-network-tier PREMIUM \
        --zone ZONE
    

    Dabei gilt:

    • INSTANCE_NAME: der Name der Instanz.
    • SERVICE_PROJECT_ID: die ID des Dienstprojekts.
    • HOST_PROJECT_ID: die ID des freigegebenen VPC-Hostprojekts.
    • REGION: die Region, die das freigegebene Subnetz enthält.
    • SUBNET: der Name des freigegebenen Subnetzes.
    • IPV6_ADDRESS: ist die IPv6-Adresse, die der VM zugewiesen werden soll.
    • ZONE: eine Zone in der angegebenen Region.

API

  • Geben Sie nur das Subnetz an, um eine Instanz mit einer sitzungsspezifischen internen IPv4-Adresse zu erstellen:

    POST https://compute.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/zones/ZONE/instances
    {
      "machineType": "MACHINE_TYPE",
      "name": "INSTANCE_NAME",
      "networkInterfaces": [
        {
          "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME"
        }
      ],
      "disks": [
        {
          "boot": true,
          "initializeParams": {
            "sourceImage": "SOURCE_IMAGE"
          }
        }
      ]
    }
    

    Dabei gilt:

    • INSTANCE_NAME: ein Name für die Instanz.
    • HOST_PROJECT_ID: die ID des Projekts, das das freigegebene VPC-Netzwerk enthält.
    • MACHINE_TYPE: ein Maschinentyp für die Instanz.
    • REGION: die Region, die das freigegebene Subnetz enthält.
    • SERVICE_PROJECT_ID: die ID des Dienstprojekts.
    • SOURCE_IMAGE: ein Image für die Instanz.
    • SUBNET: der Name des freigegebenen Subnetzes.
    • ZONE: eine Zone in der angegebenen Region.

    Weitere Informationen finden Sie im Artikel zur Methode instances.insert.

  • Geben Sie das Subnetz und den Namen der reservierten IPv4-Adresse an, um eine Instanz mit einer reservierten internen IPv4-Adresse zu erstellen:

    POST https://compute.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/zones/ZONE/instances
    {
      "machineType": "MACHINE_TYPE",
      "name": "INSTANCE_NAME",
      "networkInterfaces": [
        {
          "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME",
          "networkIP": "projects/SERVICE_PROJECT_ID/regions/REGION/addresses/ADDRESS_NAME"
        }
      ],
      "disks": [
        {
          "boot": true,
          "initializeParams": {
            "sourceImage": "SOURCE_IMAGE"
          }
        }
      ]
    }
    

    Dabei gilt:

    • ADDRESS_NAME: der Name der reservierten internen IPv4-Adresse.
    • INSTANCE_NAME: ein Name für die Instanz.
    • HOST_PROJECT_ID: die ID des Projekts, das das freigegebene VPC-Netzwerk enthält.
    • MACHINE_TYPE: ein Maschinentyp für die Instanz.
    • REGION: die Region, die das freigegebene Subnetz enthält.
    • SERVICE_PROJECT_ID: die ID des Dienstprojekts.
    • SOURCE_IMAGE: ein Image für die Instanz.
    • SUBNET: der Name des freigegebenen Subnetzes.
    • ZONE: eine Zone in der angegebenen Region.

    Weitere Informationen finden Sie im Artikel zur Methode instances.insert.

  • Geben Sie das Subnetz und den Stack-Typ an, um eine Instanz mit einer sitzungsspezifischen internen IPv4-Adresse und einer sitzungsspezifischen IPv6-Adresse zu erstellen:

    POST https://compute.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/zones/ZONE/instances
    {
      "machineType": "MACHINE_TYPE",
      "name": "INSTANCE_NAME",
      "networkInterfaces": [
        {
          "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME",
          "stackType": "IPv4_IPv6"
        }
      ],
      "disks": [
        {
          "boot": true,
          "initializeParams": {
            "sourceImage": "SOURCE_IMAGE"
          }
        }
      ]
    }
    

    Dabei gilt:

    • INSTANCE_NAME: ein Name für die Instanz.
    • HOST_PROJECT_ID: die ID des Projekts, das das freigegebene VPC-Netzwerk enthält.
    • MACHINE_TYPE: ein Maschinentyp für die Instanz.
    • REGION: die Region, die das freigegebene Subnetz enthält.
    • SERVICE_PROJECT_ID: die ID des Dienstprojekts.
    • SOURCE_IMAGE: ein Image für die Instanz.
    • SUBNET: der Name des freigegebenen Subnetzes.
    • ZONE: eine Zone in der angegebenen Region.

    Weitere Informationen finden Sie im Artikel zur Methode instances.insert.

Terraform

Mit einem Terraform-Datenblock können Sie die Informationen des Hostsubnetzes angeben. Verwenden Sie dann eine Terraform-Ressource, um eine VM-Instanz in einem Dienstprojekt zu erstellen.

Geben Sie das Hostsubnetz an:

data "google_compute_subnetwork" "subnet" {
  name    = "my-subnet-123"
  project = var.project
  region  = "us-central1"
}

Erstellen Sie eine VM-Instanz in einem Dienstprojekt mit einer sitzungsspezifischen IPv4-Adresse aus dem freigegebenen Subnetz des Hostprojekts:

resource "google_compute_instance" "ephemeral_ip" {
  project      = var.service_project
  zone         = "us-central1-a"
  name         = "my-vm"
  machine_type = "e2-medium"
  boot_disk {
    initialize_params {
      image = "debian-cloud/debian-9"
    }
  }
  network_interface {
    subnetwork = data.google_compute_subnetwork.subnet.self_link
  }
}

Erstellen Sie eine VM-Instanz in einem Dienstprojekt mit einer reservierten statischen IPv4-Adresse aus dem freigegebenen Subnetz des Hostprojekts:

resource "google_compute_instance" "reserved_ip" {
  project      = var.service_project
  zone         = "us-central1-a"
  name         = "reserved-ip-instance"
  machine_type = "e2-medium"
  boot_disk {
    initialize_params {
      image = "debian-cloud/debian-9"
    }
  }
  network_interface {
    subnetwork = data.google_compute_subnetwork.subnet.self_link
    network_ip = google_compute_address.internal.address
  }
}

Informationen zum Anwenden oder Entfernen einer Terraform-Konfiguration finden Sie unter Grundlegende Terraform-Befehle.

Instanzvorlage erstellen

Beachten Sie Folgendes, wenn Sie mithilfe einer freigegebenen VPC eine Instanzvorlage erstellen:

  • Wenn Sie eine Instanzvorlage erstellen, müssen Sie ein Netzwerk und ein Subnetz auswählen.

    • Vorlagen, die für die Verwendung in einem freigegebenen VPC-Netzwerk im benutzerdefinierten Modus erstellt werden, müssen sowohl das Netzwerk als auch ein Subnetz enthalten.

    • Bei Vorlagen, die für die Verwendung in einem freigegebenen VPC-Netzwerk im automatischen Modus erstellt werden, kann das Subnetz auch später festgelegt werden. In diesen Fällen wird ein Subnetz automatisch in derselben Region ausgewählt, in der sich auch eine beliebige verwaltete Instanzgruppe befindet, die die Vorlage verwendet. Netzwerke im automatischen Modus haben definitionsgemäß ein Subnetz in jeder Region.

  • Wenn ein IAM-Hauptkonto eine Instanzvorlage erstellt, führt Google Cloud keine Berechtigungsprüfung durch, um festzustellen, ob das Hauptkonto das angegebene Subnetz verwenden darf. Diese Berechtigungsprüfung erfolgt immer erst dann, wenn eine verwaltete Instanzgruppe angefordert wird, die die Vorlage verwendet.

  • Sie können eine Dual-Stack-Instanzvorlage erstellen, wenn Sie die Vorlage in einem Dual-Stack-Subnetz erstellen. Dual-Stack-Subnetze werden nur in VPC-Netzwerken im benutzerdefinierten Modus unterstützt. Der IPv6-Zugriffstyp des Subnetzes bestimmt, ob die der VM zugewiesene IPv6-Adresse eine interne oder externe IPv6-Adresse ist.

    Verwenden Sie zum Erstellen einer Dual-Stack-Instanzvorlage in einem freigegebenen Subnetz die Google Cloud CLI oder die API. Sie können keine Dual-Stack-Instanzvorlage in einem freigegebenen Subnetz mit der Google Cloud Console erstellen.

Console

  1. Freigegebene VPC einrichten.
  2. Rufen Sie in der Google Cloud Console die Seite „Freigegebene VPC” auf.
    Zur Seite "Freigegebene VPC"
  3. Melden Sie sich als Administrator für freigegebene VPC an.
  4. Wählen Sie das Dienstprojekt aus der Projektauswahl aus.
  5. Wählen Sie Compute Engine > Instanzvorlagen > Instanzvorlagen erstellen aus, um die Seite Instanzvorlage erstellen aufzurufen.
  6. Geben Sie einen Namen für die Instanzvorlage an.
  7. Klicken Sie unter Erweiterte Optionen auf Netzwerk.
  8. Klicken Sie unter Netzwerkschnittstellen auf das Optionsfeld Für mich freigegebene Netzwerke.
  9. Wählen Sie in der Liste Freigegebenes Subnetzwerk das erforderliche Subnetz aus, in dem Sie die Instanzvorlage erstellen möchten:
    • Wählen Sie für IPv4-Adressen ein beliebiges Einzelstack-Subnetz aus.
    • Wählen Sie für IPv6-Adressen ein Dual-Stack-Subnetz mit dem erforderlichen IPv6-Zugriffstyp aus.
  10. Wählen Sie den IP-Stack-Typ aus:
    • Wählen Sie für IPv4-Adressen IPv4 (Einzelstack) aus.
    • Wählen Sie für IPv6-Adressen IPv4 und IPv6 (Dual-Stack) aus.
  11. Geben Sie alle anderen notwendigen Parameter für die Instanzvorlage an.
  12. Klicken Sie auf Erstellen.

gcloud

  • So erstellen Sie eine reine IPv4-Instanzvorlage zur Verwendung in einem automatisch erstellten Subnetz eines freigegebenen VPC-Netzwerks im automatischen Modus:

    gcloud compute instance-templates create TEMPLATE_NAME \
        --project SERVICE_PROJECT_ID \
        --network projects/HOST_PROJECT_ID/global/networks/NETWORK
    

    Dabei gilt:

    • TEMPLATE_NAME: der Name der Vorlage.
    • SERVICE_PROJECT_ID: die ID des Dienstprojekts.
    • HOST_PROJECT_ID: die ID des freigegebenen VPC-Hostprojekts.
    • NETWORK: der Name des freigegebenen VPC-Netzwerks.
  • So erstellen Sie eine reine IPv4-Instanzvorlage für ein manuell erstelltes Subnetz in einem freigegebenen VPC-Netzwerk (im automatischen oder benutzerdefinierten Modus):

    gcloud compute instance-templates create TEMPLATE_NAME \
        --project SERVICE_PROJECT_ID \
        --region REGION \
        --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET
    

    Dabei gilt:

    • TEMPLATE_NAME: der Name der Vorlage.
    • SERVICE_PROJECT_ID: die ID des Dienstprojekts.
    • HOST_PROJECT_ID: die ID des freigegebenen VPC-Hostprojekts.
    • REGION: die Region, die das freigegebene Subnetz enthält.
    • SUBNET: der Name des freigegebenen Subnetzes.
  • So erstellen Sie eine Dual-Stack-Instanzvorlage, die ein Subnetz in einem freigegebenen VPC-Netzwerk im benutzerdefinierten Modus verwendet:

    gcloud compute instance-templates create TEMPLATE_NAME \
        --project SERVICE_PROJECT_ID \
        --stack-type IPV4_IPV6 \
        --region REGION \
        --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET
    

    Dabei gilt:

    • TEMPLATE_NAME: der Name der Vorlage.
    • SERVICE_PROJECT_ID: die ID des Dienstprojekts.
    • HOST_PROJECT_ID: die ID des freigegebenen VPC-Hostprojekts.
    • REGION: die Region, die das freigegebene Subnetz enthält.
    • SUBNET: der Name des freigegebenen Subnetzes.

API

  • Geben Sie das VPC-Netzwerk an, wenn Sie eine reine IPv4-Instanzvorlage erstellen möchten, die ein automatisch erstelltes Subnetz eines freigegebenen VPC-Netzwerks im automatischen Modus verwendet:

    POST https://compute.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/global/instanceTemplates
    {
    "properties": {
      "networkInterfaces": [
        {
          "network": "projects/HOST_PROJECT_ID/global/networks/NETWORK"
        }
      ]
    ...
    }
    

    Dabei gilt:

    • HOST_PROJECT_ID: die ID des Projekts, das das freigegebene VPC-Netzwerk enthält.
    • SERVICE_PROJECT_ID: die ID des Dienstprojekts.
    • NETWORK: der Name des freigegebenen VPC-Netzwerks.

    Weitere Informationen finden Sie im Artikel zur Methode instanceTemplates.insert.

  • Geben Sie das Subnetz an, um eine Nur-IPv4-Instanzvorlage zu erstellen, die ein manuell erstelltes Subnetz im freigegebenen VPC-Netzwerk im automatischen oder benutzerdefinierten Modus verwendet:

    POST https://compute.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/global/instanceTemplates
    {
    "properties": {
      "networkInterfaces": [
        {
          "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME"
        }
      ]
    ...
    }
    

    Dabei gilt:

    • HOST_PROJECT_ID: die ID des Projekts, das das freigegebene VPC-Netzwerk enthält.
    • REGION: die Region, die das freigegebene Subnetz enthält.
    • SERVICE_PROJECT_ID: die ID des Dienstprojekts.
    • SUBNET_NAME: der Name des freigegebenen Subnetzes.

    Weitere Informationen finden Sie im Artikel zur Methode instanceTemplates.insert.

  • Geben Sie das Subnetz und den Stack-Typ an, um eine Dual-Stack-Instanzvorlage zu erstellen, die ein Subnetz in einem freigegebenen VPC-Netzwerk im benutzerdefinierten Modus verwendet:

    POST https://compute.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/global/instanceTemplates
    {
    "properties": {
      "networkInterfaces": [
        {
          "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME",
          "stackType": "IPV4_IPV6"
        }
      ]
    ...
    }
    

    Dabei gilt:

    • HOST_PROJECT_ID: die ID des Projekts, das das freigegebene VPC-Netzwerk enthält.
    • REGION: die Region, die das freigegebene Subnetz enthält.
    • SERVICE_PROJECT_ID: die ID des Dienstprojekts.
    • SUBNET_NAME: der Name des freigegebenen Subnetzes.

    Weitere Informationen finden Sie im Artikel zur Methode instanceTemplates.insert.

Terraform

Mit einem Terraform-Datenblock können Sie die Informationen des Hostsubnetzes angeben. Verwenden Sie dann eine Terraform-Ressource, um eine VM-Instanzvorlage zu erstellen. Die IPv4-Adressen für die VMs stammen aus dem freigegebenen Subnetz des Hostprojekts.

Das Subnetz muss sich in derselben Region befinden, in der die VM-Instanzen erstellt werden.

Geben Sie das Hostsubnetz an:

data "google_compute_subnetwork" "subnet" {
  name    = "my-subnet-123"
  project = var.project
  region  = "us-central1"
}

Erstellen Sie im Dienstprojekt eine VM-Instanzvorlage:

resource "google_compute_instance_template" "default" {
  project      = var.service_project
  name         = "appserver-template"
  description  = "This template is used to create app server instances."
  machine_type = "n1-standard-1"
  disk {
    source_image = "debian-cloud/debian-9"
  }
  network_interface {
    subnetwork = data.google_compute_subnetwork.subnet.self_link
  }
}

Informationen zum Anwenden oder Entfernen einer Terraform-Konfiguration finden Sie unter Grundlegende Terraform-Befehle.

Erstellen Sie eine verwaltete Instanzgruppe.

Beachten Sie beim Erstellen einer verwalteten Instanzgruppe mit freigegebener VPC Folgendes:

  • Für verwaltete Instanzgruppen zur Verwendung mit einer freigegebenen VPC muss das Google APIs-Dienstkonto ein Dienstprojektadministrator sein, da Aufgaben wie die automatische Instanzerstellung per Autoscaling über dieses Dienstkonto ausgeführt werden.

  • Das Standardverfahren zum Erstellen einer verwalteten Instanzgruppe umfasst die Auswahl einer Zone oder Region (abhängig vom Gruppentyp) und die Auswahl einer Instanzvorlage. (Die Netzwerk- und Subnetzdetails sind an die Instanzvorlage gebunden.) Es können nur Instanzvorlagen verwendet werden, die auf Subnetze in derselben Region verweisen, die auch von der verwalteten Instanzgruppe verwendet wird.

  • Dienstprojektadministratoren können nur verwaltete Instanzgruppen erstellen, deren Mitgliedsinstanzen Subnetze verwenden, für die ihnen Berechtigungen erteilt wurden. Die Netzwerk- und Subnetzdetails sind an die Instanzvorlage gebunden. Daher können Dienstprojektadministratoren nur Vorlagen mit Verweisen auf Subnetze verwenden, zu deren Nutzung sie berechtigt sind.

  • Wenn Google Cloud eine Anfrage zum Erstellen einer verwalteten Instanzgruppe erhält, wird überprüft, ob das IAM-Hauptkonto, das die Anfrage stellt, die Berechtigung hat, das in der Instanzvorlage angegebene Subnetz (in derselben Region wie die Gruppe) zu verwenden. Wenn die Prüfung fehlschlägt, wird die verwaltete Instanzgruppe nicht erstellt und Google Cloud gibt einen Fehler zurück: Required 'compute.subnetworks.use' permission for 'projects/SUBNET_NAME.

    Listen Sie verfügbare Subnetze auf, um festzustellen, welche verwendet werden können. Kontaktieren Sie außerdem den Administrator der freigegebenen VPC, wenn das Dienstkonto zusätzlichen Zugriff benötigt. Weitere Informationen finden Sie unter Dienstkonten als Dienstprojektadministratoren.

Weitere Informationen finden Sie in der Compute Engine-Dokumentation unter Verwaltete Instanzgruppen erstellen.

HTTPS-Load-Balancer erstellen

Es gibt viele Möglichkeiten, externe Application Load Balancer in einem freigegebenen VPC-Netzwerk zu konfigurieren. Unabhängig vom Typ der Bereitstellung müssen sich alle Komponenten des Load-Balancers in derselben Organisation und im selben freigegebenen VPC-Netzwerk befinden.

Weitere Informationen zu unterstützten Architekturen für freigegebene VPCs finden Sie hier:

Internen Passthrough-Network Load Balancer erstellen

Das folgende Beispiel zeigt, was Sie beim Erstellen eines internen Network Load Balancer in einem freigegebenen VPC-Netzwerk beachten müssen. Dienstprojektadministratoren können einen internen Network Load Balancer erstellen, der ein Subnetz (im Hostprojekt) verwendet, auf das sie Zugriff haben. Die interne Weiterleitungsregel des Load-Balancers ist im Dienstprojekt definiert, aber seine Subnetzreferenz verweist auf ein Subnetz in einem freigegebenen VPC-Netzwerk des Hostprojekts.

Bevor Sie einen internen Passthrough-Network Load Balancer in einer freigegebenen VPC-Umgebung erstellen, lesen Sie sich die Informationen unter Architektur der freigegebenen VPC durch.

Console

  1. Öffnen Sie in der Google Cloud Console die Seite "Load-Balancing".
    Zur Seite „Load-Balancing“

  2. Erstellen Sie Ihren internen TCP/UDP-Load-Balancer und nehmen Sie die folgende Anpassung vor: Wählen Sie im Bereich Frontend-Dienste konfigurieren aus dem Menü Subnetz das gewünschte freigegebene VPC-Subnetz aus dem Bereich Von anderen Projekten freigegebene Netzwerke aus.

  3. Schließen Sie das Erstellen des Load-Balancers ab.

gcloud

Wenn Sie die interne Weiterleitungsregel erstellen, geben Sie im Hostprojekt ein Subnetz mit dem Flag --subnet an:

gcloud compute forwarding-rules create FR_NAME \
    --project SERVICE_PROJECT_ID \
    --load-balancing-scheme internal \
    --region REGION \
    --ip-protocol IP_PROTOCOL \
    --ports PORT,PORT,... \
    --backend-service BACKEND_SERVICE_NAME \
    --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET \
    --address INTERNAL_IP

Dabei gilt:

  • FR_NAME: der Name der Weiterleitungsregel.
  • SERVICE_PROJECT_ID: die ID des Dienstprojekts.
  • REGION: die Region, die das freigegebene Subnetz enthält.
  • IP_PROTOCOL: TCP oder UDP, entsprechend dem Protokoll des Backend-Dienstes des Load-Balancers.
  • PORT: der numerische Port oder die Liste der Ports für den Load-Balancer.
  • BACKEND_SERVICE_NAME: der Name des Backend-Dienstes (bereits im Rahmen der allgemeinen Vorgehensweise zum Erstellen eines internen Passthrough-Network Load Balancers erstellt).
  • HOST_PROJECT_ID: die ID des freigegebenen VPC-Hostprojekts.
  • SUBNET: der Name des freigegebenen Subnetzes.
  • INTERNAL_IP: eine interne IP-Adresse im freigegebenen Subnetz (wenn nicht angegeben, wird eine verfügbare automatisch ausgewählt).

Weitere Optionen finden Sie im Artikel zum Befehl gcloud compute forwarding-rules create.

API

Erstellen Sie die interne Weiterleitungsregel und geben Sie ein Subnetz im Hostprojekt an.

POST https://compute.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/regions/REGION/forwardingRules
{
  "name": "FR_NAME",
  "IPAddress": "IP_ADDRESS",
  "IPProtocol": "PROTOCOL",
  "ports": [ "PORT", ... ],
  "loadBalancingScheme": "INTERNAL",
  "subnetwork": "https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET",
  "network": "https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/global/networks/NETWORK_NAME",
  "backendService": "https://www.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/regions/us-west1/backendServices/BE_NAME",
  "networkTier": "PREMIUM"
}

Ersetzen Sie Folgendes:

  • BE_NAME: der Name des Backend-Dienstes (bereits im Rahmen der allgemeinen Vorgehensweise zum Erstellen eines internen Passthrough-Network Load Balancers erstellt).
  • FR_NAME ist ein Name für die Weiterleitungsregel.
  • HOST_PROJECT_ID ID des freigegebenen VPC-Hostprojekts.
  • IP_ADDRESS: eine interne IP-Adresse im freigegebenen Subnetz.
  • IP_PROTOCOL: TCP oder UDP, entsprechend dem Protokoll des Backend-Dienstes des Load-Balancers.
  • PORT: der numerische Port oder die Liste der Ports für den Load-Balancer.
  • REGION: die Region, die das freigegebene Subnetz enthält.
  • SERVICE_PROJECT_ID: die ID des Dienstprojekts.
  • SUBNET: der Name des freigegebenen Subnetzes.

Weitere Informationen finden Sie im Artikel zur Methode forwardingRules.insert.

Terraform

Sie können einen Terraform-Datenblock verwenden, um das Hostsubnetz und das Hostnetzwerk anzugeben. Verwenden Sie anschließend eine Terraform-Ressource, um die Weiterleitungsregel zu erstellen.

Hostnetzwerk angeben:

data "google_compute_network" "network" {
  name    = "my-network-123"
  project = var.project
}

Geben Sie das Hostsubnetz an:

data "google_compute_subnetwork" "subnet" {
  name    = "my-subnet-123"
  project = var.project
  region  = "us-central1"
}

Erstellen Sie im Dienstprojekt eine Weiterleitungsregel im Netzwerk und Subnetz des Hostprojekts:

resource "google_compute_forwarding_rule" "default" {
  project               = var.service_project
  name                  = "l4-ilb-forwarding-rule"
  backend_service       = google_compute_region_backend_service.default.id
  region                = "europe-west1"
  ip_protocol           = "TCP"
  load_balancing_scheme = "INTERNAL"
  all_ports             = true
  allow_global_access   = true
  network               = data.google_compute_network.network.self_link
  subnetwork            = data.google_compute_subnetwork.subnet.self_link
}

Informationen zum Anwenden oder Entfernen einer Terraform-Konfiguration finden Sie unter Grundlegende Terraform-Befehle.

Nächste Schritte