gcr.io ist standardmäßig in Artifact Registry gehostet

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

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

In Google Cloud-Projekten, für die Container Registry vor dem 15. Mai 2024 nicht verwendet wurde, können nur noch Images in Artifact Registry gehostet und verwaltet werden. Diese Änderung betrifft Folgendes:

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

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

Wenn Sie die Artifact Registry API in diesen Projekten aktivieren, erstellt Artifact Registry automatisch gcr.io-Repositories in Artifact Registry und leitet Anfragen an die gcr.io-Domain an das entsprechende Artifact Registry-Repository weiter. Im Gegensatz zum vorhandenen Support für gcr.io-Domains in Projekten mit aktiver Container Registry-Nutzung erfolgt die Weiterleitung zu Artifact Registry automatisch.

Container Registry ist weiterhin in Projekten verfügbar, bei 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 auf einen Registry-Host im Projekt hochgeladen.

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 automatisch gcr.io-Anfragen verarbeiten können, wenn Änderungen wirksam werden.
  • Testen Sie den gcr.io-Domainsupport, um zu prüfen, ob Ihre vorhandene Automatisierung weiterhin funktioniert.

gcr.io-Repositories, die in Artifact Registry gehostet werden, werden in denselben Mehrfachregionen erstellt, die von Container Registry unterstützt werden. Wenn Sie Ihre Images in anderen Regionen speichern möchten, müssen Sie zu den 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 können Sie die auf Cloud Storage-Storage-Buckets angewendete Container Registry-Konfiguration ansehen und verwalten: Storage-Administrator (roles/storage.admin) für das Projekt
  • So gewähren Sie Zugriff auf das Repository 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. Sie können sich dann anhand der Anleitung in diesem Dokument darauf konzentrieren, andere Projekte zum Hosten von gcr.io-Anfragen in Artifact Registry einzurichten.

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

  gcloud containers 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 Ihren 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 gcr.io-Domain automatisch von Artifact Registry verarbeitet werden, wenn das automatische gcr.io-Hosting wirksam wird.

  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, die Lese-, Schreib- und Repository-Verwaltungsrollen deutlicher trennen als Container Registry.

Mit dem Tool für die Rollenzuordnung lassen sich vorhandene Berechtigungen, die für Storage-Buckets gewährt wurden, schnell den 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 den Tab „Berechtigungen“ und dann auf den Untertab Nach Rolle anzeigen.

  5. Maximieren Sie eine Rolle, um die Hauptkonten mit dieser Rolle anzusehen.

Die Liste enthält IAM-Rollen, die direkt für den Bucket zugewiesen wurden, und Rollen, die aus dem übergeordneten Projekt übernommen wurden. Je nach Rolle können Sie die am besten geeignete Artifact Registry-Rolle zum Gewähren auswählen.

Cloud Storage und einfache Rollen

Gewähren Sie Nutzern und Dienstkonten, die derzeit auf Container Registry zugreifen, Zugriff auf Artifact Registry-Repositories. Prüfen Sie für Cloud Storage-Rollen, die vom übergeordneten Projekt übernommen wurden, 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 vor IAM vorhanden waren, haben eingeschränkten Zugriff auf Storage-Buckets. Sie gewähren nicht grundsätzlich alle Zugriffsrechte für Cloud Storage-Ressourcen, die aus ihrem Namen hervorgeht, und bieten nicht 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 für die Rollenzuordnung, um die richtigen Rollen zuzuweisen, wenn der Artifact Registry-Zugriff angemessen ist.

In der folgenden Tabelle werden Artifact Registry-Rollen basierend auf den Berechtigungen zugeordnet, die von vordefinierten Cloud Storage-Rollen für den Container Registry-Zugriff gewährt werden.

Erforderlicher Zugriff Aktuelle Rolle Artifact Registry-Rolle Wo kann die Rolle gewährt werden?
Nur Images abrufen (schreibgeschützt) Storage-Objekt-Betrachter
(roles/storage.objectViewer)
Artifact Registry-Leser
(roles/artifactregistry.reader)
Artifact Registry-Repository oder Google Cloud-Projekt
  • Images übertragen und abrufen (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 in Artifact Registry ein gcr.io-Repository, wenn ein Image zum ersten Mal an einen gcr.io-Hostnamen in einem Projekt übertragen wird. Storage-Administrator
(roles/storage.admin)
Artifact Registry-Repository-Administrator bei Push-Erstellung
(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 werden eigene Rollen auf Projektebene gewährt. 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 Ihr vorhandener 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 für die Rollenzuordnung hilft Ihnen bei der Entscheidung, welche Rolle Nutzern oder Dienstkonten je nach der benötigten Zugriffsebene zugeteilt 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 eine Automatisierung für Container Registry haben, die direkt mit Storage-Buckets interagiert, müssen Sie sie 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 gewähren, die Images für die Domain gcr.io hosten.

In Artifact Registry legen Sie die Verschlüsselungsmethode für gespeicherte Daten in einem Repository anstelle eines Storage-Buckets fest. Beim automatischen gcr.io-Hosting in Artifact Registry werden gcr.io-Repositories erstellt, die mit von Google verwalteten Verschlüsselungsschlüsseln verschlüsselt sind. Wenn Sie vom Kunden verwaltete Verschlüsselungsschlüssel (Customer-Managed Encryption Keys, CMEK) verwenden möchten, müssen Sie die gcr.io-Repositories selbst erstellen und dabei CMEK 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 werden, und gewähren Sie Berechtigungen zur Verwendung des Schlüssels. Weitere Informationen finden Sie unter 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 Name des Artifact Registry-Repositorys
      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üsselung des Repository-Inhalts mit einem von Google verwalteten Verschlüsselungsschlü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 Name des Artifact Registry-Repositorys
      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 von Repository-Inhalten 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 in einem Testprojekt den gcr.io-Domainsupport 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.