Images von anderen Projekten verwenden

Auf dieser Seite wird beschrieben, wie Sie Ihr Projekt so konfigurieren, dass Deployment Manager mithilfe von Images von Betriebssystemen, die zu anderen Projekten gehören, VM-Instanzen in Compute Engine erstellen kann.

Angenommen Sie haben ein Projekt mit dem Namen "Awesome Project", bei dem Deployment Manager VM-Instanzen erstellt und verwaltet. Nehmen wir weiterhin an, dass Sie private Images verwenden, die zu einem anderen Projekt mit dem Namen "Database Images" gehören. Um Zugriff auf diese Images zu erlauben, muss der Inhaber von "Database Images" dem Google APIs-Dienstkonto die IAM-Rolle roles/compute.imageUser zuweisen. "Awesome Project" kann dann die Images des Projekts "Database Images" verwenden.

Mit dieser Vorgehensweise können Sie auch verwalteten Instanzgruppen Zugriff auf die Images von anderen Projekten gewähren.

Vorbereitung

Beschränkungen

Die Nutzung dieser Funktion unterliegt folgenden Einschränkungen:

  • Die Rolle roles/compute.imageUser befindet sich derzeit in der Betaversion.
  • Sie können die Rolle compute.imageUser nur auf Projektebene zuweisen.
  • Die Zuteilung der Rolle compute.imageUser gewährt den Zugriff auf alle Images des jeweiligen Projekts. Es ist nicht möglich, spezifische Images freizugeben.
  • Es ist nicht möglich, diese Rolle allAuthenticatedUsers oder allUsers zuzuweisen.

Zugriff auf Images gewähren

Um Zugriff auf Images zu gewähren, die zu einem anderen Projekt gehören, muss der Inhaber des Projekts, zu dem die Images gehören, dem Google APIs-Dienstkonto des Projekts, das die Images verwenden will, Zugriff gewähren.

  1. Rufen Sie die Seite "IAM" in der GCP Console des Projekts auf, das Zugriff auf private Images eines anderen Projekts benötigt.

    Zur Seite "IAM"

  2. Wählen Sie bei Aufforderung Ihr Projekt aus der Liste aus. Denken Sie daran, das Projekt auszuwählen, das den Zugriff auf die Images in einem anderen Projekt benötigt.
  3. Suchen Sie nach dem Google API-Dienstkonto, dessen E-Mail-Adresse das folgende Format aufweist:

    [PROJECT_NUMBER]@cloudservices.gserviceaccount.com
    
  4. Notieren Sie die oben angeführte E-Mail-Adresse. Als nächstes kann ein Projektinhaber des Projekts, bei dem die gewünschten Images vorhanden sind, dem Google APIs-Dienstkonto die Rolle roles/compute.imageUser zuweisen.

    Konsole

    1. Gehen Sie in der Konsole der Google Cloud Platform auf die "IAM"-Seite des Projekts, das die gewünschten Images enthält.

      Zur Seite "IAM"

    2. Wählen Sie das Projekt aus der Projektliste aus.
    3. Klicken Sie auf Hinzufügen, um ein neues Mitglied hinzuzufügen.
    4. Geben Sie die E-Mail-Adresse des Dienstkontos in das Mitglieder-Feld ein.
    5. Erweitern Sie die Drop-down-Liste Rollen und wählen Sie Compute Engine > Compute Image-Nutzer (Beta) aus.
    6. Klicken Sie auf Hinzufügen, um das Konto hinzuzufügen.

    gcloud

    Fügen Sie mit dem Befehlszeilentool gcloud eine Bindung an die Cloud IAM-Richtlinie für das Projekt hinzu:

    gcloud projects add-iam-policy-binding [PROJECT_ID] \
        --member serviceAccount:[SERVICE_ACCOUNT_EMAIL] --role roles/compute.imageUser

    Dabei gilt:

    • [PROJECT_ID] ist die ID des Projekts mit den Images, die Sie freigeben möchten.
    • [SERVICE_ACCOUNT_EMAIL] ist die E-Mail-Adresse des Dienstkontos.

    Beispiel:

    gcloud projects add-iam-policy-binding database-images \
        --member serviceAccount:123456789012@cloudservices.gserviceaccount.com  \
        --role roles/compute.imageUser

    API

    Stellen Sie in der API eine POST-Anfrage an folgende URL, wobei [PROJECT_ID] die ID des Projekts ist, dessen Images Sie freigeben möchten.

    POST https://cloudresourcemanager.googleapis.com/v1/projects/$[PROJECT_ID]:setIamPolicy
    

    Der Anfragetext soll eine Liste der Bindungen, die für dieses Projekt gelten sollen, enthalten. Die Nutzerrolle roles/compute.imageUser sollte Teil der Bindung sein. Beispiel:

    {
       "policy": {
           "version": "0",
           "bindings": [
           {
               "role": "roles/owner",
               "members": [
                   "user:example@gmail.com"
               ]
           },
           {
               "role": "roles/compute.imageUser",
               "members": [
                   "serviceAccount:123456789012@cloudservices.gservbiceaccount.com"
               ]
           }
           ]
       }
    

    }

Images von anderen Projekten in Ihrer Konfiguration verwenden

Sobald einem Projekt Zugriff auf die Images eines anderen Projekts gewährt wurde, können Nutzer des Projekts die Images verwenden, indem Sie die Projekt-ID in ihren Vorlagen und Konfigurationen des Projekts angeben, zu dem die Images gehören:

image: projects/[PROJECT_ID]/global/images/[IMAGE_NAME]

Falls die Projekt-ID beispielsweise database-images ist, könnten Sie den folgenden Image-URI in Ihrer Konfiguration angeben:

resources:
- name: a-special-vm
  type: compute.v1.instances
  properties:
    machineType: zones/us-central1-a/machineTypes/f1-micro
    image: projects/database-images/global/images/example-database-image
    ...

Wie geht es weiter?

Hat Ihnen diese Seite weitergeholfen? Teilen Sie uns Ihr Feedback mit:

Feedback geben zu...

Cloud Deployment Manager-Dokumentation