Standardmäßig in Artifact Registry gehosteter gcr.io

Hier erfahren Sie, wie Sie gcr.io-Repositories in Artifact Registry einrichten und welche Unterschiede zwischen Artifact Registry- und Container Registry-Berechtigungen und der Storage-Bucket-Konfiguration bestehen.

Die in diesem Dokument beschriebenen manuellen Schritte können mit dem automatischen Migrationstool ausgeführt werden. Wenn Sie das automatische Migrationstool verwenden möchten, um Ihre Projekte mit aktiver Container Registry-Nutzung auf Artifact Registry-Standard-Repositories oder gcr.io-Repositories umzustellen, lesen Sie Migration zu Artifact Registry automatisieren.

Einstellung von Container Registry

Google Cloud-Projekte, in denen Container Registry vor dem 15. Mai 2024 nicht verwendet wurde, unterstützen nur das Hosten und Verwalten von Images in Artifact Registry. Diese Änderung betrifft Folgendes:

  • Neu erstellte Projekte.
  • Vorhandene Projekte, für die Sie kein Image per Push an Container Registry übertragen haben.

In Organisationen, die Container Registry vor dem 8. Januar 2024 nicht verwendet haben, werden standardmäßig neue gcr.io-Repositories in Artifact Registry gehostet.

Wenn Sie die Artifact Registry API in diesen Projekten aktivieren, erstellt Artifact Registry automatisch die Erstellung von gcr.io-Repositories in Artifact Registry und leitet Anfragen an die Domain gcr.io an das entsprechende Artifact Registry-Repository weiter. Im Gegensatz zum bestehenden gcr.io-Domainsupport in Projekten, in denen Container Registry aktiv verwendet wird, erfolgt die Weiterleitung zu Artifact Registry automatisch.

Container Registry bleibt in Projekten verfügbar, in denen vor dem 15. Mai 2024 eine der folgenden Aktionen ausgeführt wurde:

  • Sie haben die Container Registry API im Projekt aktiviert.
  • Sie haben ein Image an einen Registry-Host im Projekt übertragen.

Zur Vorbereitung auf die bevorstehende Änderung empfehlen wir Ihnen Folgendes:

  • Folgen Sie der Anleitung in diesem Dokument, um Projekte zu konfigurieren, in denen Sie Container Registry nicht verwenden, damit sie für die automatische Verarbeitung von gcr.io-Anfragen bereit sind, wenn Änderungen wirksam werden.
  • Testen Sie den gcr.io-Domainsupport, um zu prüfen, ob die vorhandene Automatisierung weiterhin funktioniert.

gcr.io-Repositories, die in Artifact Registry gehostet werden, werden in denselben Multiregionen erstellt, die Container Registry unterstützt. Wenn Sie Ihre Bilder in anderen Regionen speichern möchten, müssen Sie zu Standard-Repositories in der Domain pkg.dev wechseln.

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zu gewähren, um die Berechtigungen zu erhalten, die Sie zum Einrichten von „gcr.io“-Repositories benötigen:

  • So erstellen Sie Artifact Registry-Repositories und gewähren Zugriff auf einzelne Repositories: Artifact Registry-Administrator (roles/artifactregistry.admin) für das Projekt
  • So rufen Sie die vorhandene Container Registry-Konfiguration auf, die auf Cloud Storage-Buckets angewendet wurde: Storage-Administrator (roles/storage.admin) für das Projekt
  • So gewähren Sie Repository-Zugriff auf Projektebene: Projekt-IAM-Administrator (roles/resourcemanager.projectIamAdmin) oder eine Rolle mit entsprechenden Berechtigungen wie Ordneradministrator (roles/resourcemanager.folderAdmin) oder Organisationsadministrator (roles/resourcemanager.organizationAdmin) für das Projekt, den Ordner oder die Organisation
  • So listen Sie aktivierte Dienste in einer Organisation auf: Cloud Asset Viewer (roles/cloudasset.viewer) für die Organisation

Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff verwalten.

Möglicherweise können Sie die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.

Hinweise

Sie können Projekte auflisten, in denen mindestens ein Image in Container Registry gespeichert ist. Anschließend können Sie sich anhand der Anleitung in diesem Dokument auf das Einrichten anderer Projekte zum Hosten von gcr.io-Anfragen in Artifact Registry konzentrieren.

Führen Sie den folgenden Befehl aus, um die Container Registry-Nutzung in Ihrer Google Cloud-Organisation zu ermitteln.

  gcloud container images list-gcr-usage \
      --organization=ORGANIZATION

Ersetzen Sie ORGANIZATION durch Ihre Google Cloud-Organisations-ID.

Sie können auch die Container Registry-Nutzung für Ihr Projekt oder Ordner auflisten. Weitere Informationen zur Ermittlung der Container Registry-Nutzung finden Sie unter Container Registry-Nutzung prüfen.

API aktivieren

Aktivieren Sie die Artifact Registry API, damit Anfragen an die Domain gcr.io automatisch von Artifact Registry verarbeitet werden, wenn das automatische gcr.io-Hosting aktiv ist.

  1. Führen Sie dazu diesen Befehl aus:

    gcloud services enable \
        artifactregistry.googleapis.com
    
  2. Wenn Sie die Container Registry API normalerweise in einem VPC Service Controls-Dienstperimeter platzieren, müssen Sie auch die Artifact Registry API im Perimeter platzieren. Eine Anleitung dazu finden Sie unter Repositories in einem Dienstperimeter sichern.

Berechtigungen für Repositories erteilen

Container Registry verwendet Cloud Storage-Rollen, um den Zugriff zu steuern. Artifact Registry hat eigene IAM-Rollen. Diese Rollen unterscheiden sich in Lese-, Schreib- und Repository-Verwaltungsrollen deutlicher als Container Registry.

Mit dem Rollenzuordnungstool können Sie vorhandene Berechtigungen für Storage-Buckets schnell vorgeschlagenen Artifact Registry-Rollen zuordnen.

Alternativ können Sie in der Google Cloud Console eine Liste der Hauptkonten mit Zugriff auf Storage-Buckets aufrufen.

  1. Wechseln Sie in der Cloud Console zur Seite Cloud Storage-Buckets.

    Buckets aufrufen

  2. Klicken Sie auf den Storage-Bucket für den Registry-Host, den Sie ansehen möchten. In den Bucket-Namen ist PROJECT-ID Ihre Google Cloud-Projekt-ID.

    • gcr.io: artifacts.PROJECT-ID.appspot.com
    • asia.gcr.io: asia.artifacts.PROJECT-ID.appspot.com
    • eu.gcr.io: eu.artifacts.PROJECT-ID.appspot.com
    • us.gcr.io: us.artifacts.PROJECT-ID.appspot.com
  3. Klicken Sie auf den Tab Berechtigungen.

  4. Klicken Sie auf dem Tab "Berechtigungen" auf den Unter-Tab Nach Rolle ansehen.

  5. Maximieren Sie eine Rolle, um die Hauptkonten anzusehen, denen diese Rolle zugewiesen ist.

Die Liste enthält IAM-Rollen, die direkt für den Bucket gewährt wurden, und Rollen, die vom übergeordneten Projekt übernommen wurden. Je nach Rolle können Sie die Artifact Registry-Rolle auswählen, die am besten zugewiesen werden soll.

Cloud Storage und einfache Rollen

Gewähren Sie Nutzern und Dienstkonten, die derzeit auf Container Registry zugreifen, Zugriff auf Artifact Registry-Repositories. Bei Cloud Storage-Rollen, die vom übergeordneten Projekt übernommen wurden, sollten Sie prüfen, ob das Hauptkonto derzeit Container Registry verwendet. Einige Hauptkonten greifen möglicherweise nur auf andere Cloud Storage-Buckets zu, die nichts mit Container Registry zu tun haben.

Die einfachen Rollen „Inhaber“, „Bearbeiter“ und „Betrachter“, die bereits vor IAM vorhanden waren, haben eingeschränkten Zugriff auf Storage-Buckets. Sie gewähren nicht grundsätzlich den gesamten Zugriff auf Cloud Storage-Ressourcen, der ihre Namen implizieren, und bieten zusätzliche Berechtigungen für andere Google Cloud-Dienste. Prüfen Sie, welche Nutzer und Dienstkonten Zugriff auf Artifact Registry benötigen, und verwenden Sie die Tabelle Rollenzuordnung, um die richtigen Rollen zu gewähren, wenn der Artifact Registry-Zugriff angemessen ist.

In der folgenden Tabelle werden Artifact Registry-Rollen anhand der Berechtigungen zugeordnet, die durch vordefinierte Cloud Storage-Rollen für den Container Registry-Zugriff gewährt werden.

Erforderlicher Zugriff Aktuelle Rolle Artifact Registry-Rolle Wo wird die Rolle gewährt?
Nur Bilder abrufen (schreibgeschützt) Storage-Objekt-Betrachter
(roles/storage.objectViewer)
Artifact Registry-Leser
(roles/artifactregistry.reader)
Artifact Registry-Repository oder Google Cloud-Projekt
  • Images hoch- und herunterladen (Lese- und Schreibzugriff)
  • Bilder löschen
Autor alter Storage-Buckets
(roles/storage.legacyBucketWriter)
Artifact Registry-Repository-Administrator
(roles/artifactregistry.repoAdmin)
Artifact Registry-Repository oder Google Cloud-Projekt
Erstellen Sie ein gcr.io-Repository in Artifact Registry, wenn ein Image zum ersten Mal per Push an einen gcr.io-Hostnamen in einem Projekt übertragen wird. Storage-Administrator
(roles/storage.admin)
Artifact Registry-Repository-Administrator für die Erstellung per Push
(roles/artifactregistry.createOnPushRepoAdmin)
Google Cloud-Projekt
Repositories erstellen, verwalten und löschen Storage-Administrator
(roles/storage.admin)
Artifact Registry-Administrator
(roles/artifactregistry.Admin)
Google Cloud-Projekt
Vom Projekt übernommene Dienst-Agent-Rollen

Standarddienstkonten für Google Cloud-Dienste haben eigene Rollen auf Projektebene. Der Dienst-Agent für Cloud Run hat beispielsweise die Rolle „Cloud Run-Dienst-Agent“.

In den meisten Fällen enthalten diese Dienst-Agent-Rollen entsprechende Standardberechtigungen für Container Registry und Artifact Registry. Sie müssen keine zusätzlichen Änderungen vornehmen, wenn Sie Artifact Registry im selben Projekt wie Ihren vorhandenen Container Registry-Dienst ausführen.

Weitere Informationen zu den Berechtigungen in Dienst-Agent-Rollen finden Sie in der Referenz zu Dienst-Agent-Rollen.

Benutzerdefinierte Rollen

Die Tabelle Rollenzuordnung hilft Ihnen bei der Entscheidung, welche Rolle Nutzern oder Dienstkonten je nach erforderlicher Zugriffsebene zugewiesen werden soll.

Eine Anleitung zum Gewähren von Artifact Registry-Rollen finden Sie unter Rollen und Berechtigungen konfigurieren.

Storage-Bucket-Konfiguration

Wenn Sie ein Repository in Artifact Registry erstellen, erstellt Artifact Registry keine entsprechenden Cloud Storage-Buckets in Ihrem Projekt. Wenn Sie die Automatisierung für Container Registry verwenden, die direkt mit Storage-Buckets interagiert, müssen Sie diese aktualisieren, um die entsprechenden Änderungen am Artifact Registry-Repository vorzunehmen.

Wenn Sie beispielsweise Cloud Storage-Berechtigungen für Storage-Buckets für Container Registry programmatisch gewähren, müssen Sie diese Automatisierung aktualisieren, um Artifact Registry-Berechtigungen für die Artifact Registry-Repositories zu erteilen, die Images für die Domain gcr.io hosten.

In Artifact Registry legen Sie die Verschlüsselungsmethode für gespeicherte Daten in einem Repository statt in einem Storage-Bucket fest. Beim automatischen gcr.io-Hosting in Artifact Registry werden gcr.io-Repositories erstellt, die mit Google-eigenen und von Google verwalteten Schlüsseln verschlüsselt sind. Wenn Sie vom Kunden verwaltete Verschlüsselungsschlüssel (CMEKs) verwenden möchten, müssen Sie die gcr.io-Repositories selbst erstellen und CMEK beim Erstellen als Verschlüsselungsmethode angeben.

So erstellen Sie manuell ein gcr.io-Repository:

  1. Wenn Sie CMEK verwenden, erstellen Sie den Schlüssel, den Sie mit diesem Repository verwenden möchten, und gewähren Sie Berechtigungen zur Verwendung des Schlüssels. Siehe Vom Kunden verwaltete Verschlüsselungsschlüssel aktivieren.

  2. Fügen Sie das Repository hinzu:

    Console

    1. Öffnen Sie in der Cloud Console die Seite Repositories.

      Zur Seite „Repositories“

    2. Klicken Sie auf Repository erstellen.

    3. Geben Sie den Repository-Namen an.

      Container Registry-Hostname Artifact Registry-Repository-Name
      gcr.io gcr.io
      asia.gcr.io asia.gcr.io
      eu.gcr.io eu.gcr.io
      us.gcr.io us.gcr.io
    4. Geben Sie Docker als Repository-Format an.

    5. Geben Sie unter Standorttyp den multiregionalen Standort für das Repository an:

      Container Registry-Hostname Speicherort des Artifact Registry-Repositorys
      gcr.io us
      asia.gcr.io asia
      eu.gcr.io europe
      us.gcr.io us
    6. Fügen Sie eine Beschreibung für das Repository hinzu. Geben Sie keine sensiblen Daten an, da Repository-Beschreibungen nicht verschlüsselt sind.

    7. Wählen Sie im Abschnitt Verschlüsselung den Verschlüsselungsmechanismus für das Repository aus.

      • Von Google verwalteter Schlüssel: Verschlüsselt Repository-Inhalte mit einem von Google verwalteten und einem von Google verwalteten Schlüssel.
      • Vom Kunden verwalteter Schlüssel: Verschlüsselung des Repository-Inhalts mit einem Schlüssel, den Sie über Cloud Key Management Service steuern. Eine grundlegende Einrichtungsanleitung finden Sie unter Vom Kunden verwalteten Schlüssel für Repositories einrichten.
    8. Klicken Sie auf Erstellen.

    gcloud

    Führen Sie den folgenden Befehl aus, um ein neues Repository zu erstellen:

    gcloud artifacts repositories create REPOSITORY \
        --repository-format=docker \
        --location=LOCATION \
        --description=DESCRIPTION \
        --kms-key=KMS-KEY
    

    Ersetzen Sie die folgenden Werte:

    • REPOSITORY ist der Name des Repositorys.

      Container Registry-Hostname Artifact Registry-Repository-Name
      gcr.io gcr.io
      asia.gcr.io asia.gcr.io
      eu.gcr.io eu.gcr.io
      us.gcr.io us.gcr.io
    • LOCATION ist der multiregionale Speicherort für das Repository:

      Container Registry-Hostname Speicherort des Artifact Registry-Repositorys
      gcr.io us
      asia.gcr.io asia
      eu.gcr.io europe
      us.gcr.io us
    • DESCRIPTION ist eine Beschreibung des Repositorys. Geben Sie keine sensiblen Daten an, da Repository-Beschreibungen nicht verschlüsselt sind.

    • KMS-KEY ist der vollständige Pfad zum Cloud KMS-Verschlüsselungsschlüssel, wenn Sie einen vom Kunden verwalteten Verschlüsselungsschlüssel zum Verschlüsseln des Repository-Inhalts verwenden. Der Pfad hat folgendes Format:

      projects/KMS-PROJECT/locations/KMS-LOCATION/keyRings/KEY-RING/cryptoKeys/KEY
      

      Ersetzen Sie die folgenden Werte:

      • KMS-PROJECT ist das Projekt, in dem Ihr Schlüssel gespeichert ist.
      • KMS-LOCATION ist der Speicherort des Schlüssels.
      • KEY-RING ist der Name des Schlüsselbunds.
      • KEY ist der Name des Schlüssels.

    Sie können prüfen, ob das Repository erstellt wurde, indem Sie Ihre Repositories mit dem folgenden Befehl auflisten:

    gcloud artifacts repositories list
    

Nächste Schritte

Richten Sie den gcr.io-Domainsupport in einem Testprojekt ein, um zu prüfen, ob die vorhandene Automatisierung und Einbindung in Dienste wie Cloud Build, Google Kubernetes Engine oder Cloud Functions wie erwartet funktioniert.