Authentifizierung für Helm einrichten

Auf dieser Seite wird beschrieben, wie Sie Helm für die Authentifizierung bei Artifact Registry-Repositories konfigurieren.

Hinweise

  1. Falls kein Repository für Ihre Diagramme vorhanden ist, erstellen Sie ein neues Repository. Wählen Sie Docker als Repository-Format aus.
  2. Installieren Sie die Google Cloud CLI und initialisieren Sie sie mit folgendem Befehl:

    gcloud init
  3. (Optional) Konfigurieren Sie die Standardeinstellungen für gcloud-Befehle.
  4. Installieren Sie Helm 3.8.0 oder höher. In früheren Versionen von Helm ist die Unterstützung für Diagramme im OCI-Format eine experimentelle Funktion.

    Führen Sie helm version aus, um Ihre Version zu prüfen.

Authentifizierungsmethode auswählen

In den meisten Fällen empfehlen wir die Verwendung eines Dienstkontos für die Authentifizierung bei Artifact Registry.

Die Dienstkonten für Anwendungen, die normalerweise in Artifact Registry eingebunden sind, wie Cloud Build oder Cloud Run, werden standardmäßig Berechtigungen für Repositories im selben Projekt konfiguriert. Für diese Anwendungen müssen Sie die Docker-Authentifizierung nicht konfigurieren.

Die folgenden Authentifizierungsmethoden sind verfügbar:

Für Docker konfigurierte Artifact Registry-Anmeldedaten verwenden
Standardmäßig kann sich Helm mit den Anmeldedaten authentifizieren, die Sie für Docker verwenden.
Zugriffstoken
Standardanmeldedaten für Anwendungen stellen kurzlebige Zugriffstokens bereit, mit denen ein Dienstkonto auf Ihre Google Cloud-Ressourcen zugreift.
JSON-Schlüsseldatei

Ein vom Nutzer verwaltetes Schlüsselpaar, das Sie als Anmeldedaten für ein Dienstkonto verwenden können. Da die Anmeldedaten langlebig sind, ist es die unsicherste Option aller verfügbaren Authentifizierungsmethoden.

Verwenden Sie nach Möglichkeit ein Zugriffstoken, um das Risiko eines unbefugten Zugriffs auf Ihre Artefakte zu verringern.

Docker-Konfiguration verwenden

Standardmäßig unterstützt Helm Registry-Einstellungen in der Docker-Konfigurationsdatei config.json. Helm findet Registrierungseinstellungen entweder am Standardspeicherort oder am durch die Umgebungsvariable DOCKER_CONFIG angegebenen Speicherort.

Wenn Sie Docker mit Credential Helper für die Authentifizierung bei Artifact Registry konfiguriert haben, verwendet Helm Ihre vorhandene Konfiguration für Artifact Registry-Docker-Repositories.

Zugriffstoken

Zugriffstokens sind kurzlebige Tokens, die Zugriff auf Ihre Google Cloud-Ressourcen gewähren. Da das Token kurzlebig ist, sollten Sie es weniger als eine Stunde bevor Sie es zur Verbindung mit Artifact Registry-Repositories verwenden, anfordern.

Google Cloud ruft mithilfe der Standardanmeldedaten für Anwendungen ein Zugriffstoken ab.

So verwenden Sie ein Zugriffstoken:

  1. Erstellen Sie ein Dienstkonto, das im Namen Ihrer Anwendung agieren soll, oder wählen Sie ein vorhandenes Dienstkonto für die Automatisierung aus.

    Sie benötigen den Speicherort der Dienstkonto-Schlüsseldatei, um damit die Authentifizierung bei Artifact Registry einzurichten. Auf der Seite „Dienstkonten“ können Sie die Schlüssel vorhandener Konten aufrufen und neue Schlüssel erstellen.

    Zur Seite „Dienstkonten“

  2. Gewähren Sie dem Dienstkonto die entsprechende Artifact Registry-Rolle, um den Zugriff auf das Repository zu ermöglichen.

  3. Weisen Sie der Variablen GOOGLE_APPLICATION_CREDENTIALS den Speicherort des Dienstkontoschlüssels zu, damit die Artifact Registry-Credential Helper Ihren Schlüssel beim Herstellen einer Verbindung zu Repositories abrufen können.

    export GOOGLE_APPLICATION_CREDENTIALS=KEY-FILE
    

    Dabei ist KEY-FILE der Pfad zur Schlüsseldatei des Dienstkontos.

  4. Rufen Sie zur Authentifizierung bei Artifact Registry mit Docker ein Zugriffstoken ab.

    Linux/macOS

    Führen Sie dazu diesen Befehl aus:

    gcloud auth application-default print-access-token | helm registry login -u oauth2accesstoken \
    --password-stdin https://LOCATION-docker.pkg.dev
    

    Windows

    Führen Sie dazu diesen Befehl aus:

    gcloud auth application-default print-access-token
    ya29.8QEQIfY_...
    
    helm registry login -u oauth2accesstoken -p "ya29.8QEQIfY_..." \
    https://LOCATION-docker.pkg.dev
    

    Dabei gilt:

    • oauth2accesstoken ist der Nutzername, der zur Authentifizierung mit einem Zugriffstoken verwendet werden soll.
    • gcloud auth application-default print-access-token ist der gcloud-Befehl zum Abrufen des Zugriffstokens für das Dienstkonto. Ihr Zugriffstoken ist das Passwort für die Authentifizierung.
    • LOCATION ist der regionale oder multiregionale Standort des Repositorys, an dem das Image gespeichert ist.

Helm ist jetzt bei Artifact Registry authentifiziert.

JSON-Schlüsseldatei

Jeder, der Zugriff auf einen gültigen privaten Schlüssel für ein Dienstkonto hat, kann über das Dienstkonto auf Ressourcen zugreifen. Beachten Sie, dass der Lebenszyklus des Schlüsselzugriffs auf das Dienstkonto (und damit die Daten, auf die das Dienstkonto Zugriff hat) vom Lebenszyklus des Nutzers unabhängig ist, der den Schlüssel heruntergeladen hat.

Verwenden Sie die folgenden Richtlinien, um den Zugriff auf Ihre Repositories einzuschränken:

  • Erstellen Sie dedizierte Dienstkonten, die nur für die Interaktion mit Repositories verwendet werden.
  • Gewähren Sie die jeweilige Artifact Registry-Rolle für den vom Dienstkonto erforderlichen Zugriff. Beispielsweise benötigt ein Dienstkonto, das nur Artefakte herunterlädt, nur die Rolle Artifact Registry-Leser.
  • Konfigurieren Sie die Berechtigungen für Ihre dedizierten Dienstkonten für jedes Repository und nicht auf Projektebene. Anschließend können Sie den Zugriff basierend auf dem Repository-Kontext festlegen. Beispielsweise kann ein Dienstkonto für Entwicklungs-Builds die Rolle Artifact Registry-Leser für ein Produktions-Repository und die Artifact Registry-Autor-Rolle für ein Staging-Repository haben.
  • Folgen Sie den Best Practices zum Verwalten von Dienstkontoschlüsseln.

So erstellen Sie ein neues Dienstkonto und einen Dienstkontoschlüssel nur für die Verwendung mit Artifact Registry-Repositories:

  1. Erstellen Sie ein Dienstkonto, das im Namen Ihrer Anwendung agieren soll, oder wählen Sie ein vorhandenes Dienstkonto für die Automatisierung aus.

    Sie benötigen den Speicherort der Dienstkonto-Schlüsseldatei, um damit die Authentifizierung bei Artifact Registry einzurichten. Auf der Seite „Dienstkonten“ können Sie die Schlüssel vorhandener Konten aufrufen und neue Schlüssel erstellen.

    Zur Seite „Dienstkonten“

  2. Sie können den gesamten Inhalt der Schlüsseldatei optional base64-codieren.

    Linux

    base64 FILE-NAME > NEW-FILE-NAME
    

    macOS

    base64 -i FILE-NAME -o NEW-FILE-NAME
    

    Windows

    Base64.exe -e FILE-NAME > NEW-FILE-NAME
    

    Dabei ist FILE-NAME der ursprüngliche Schlüsseldatei und NEW-FILE-NAME Ihre base64-codierte Schlüsseldatei.

  3. Gewähren Sie dem Dienstkonto die entsprechende Artifact Registry-Rolle, um den Zugriff auf das Repository zu ermöglichen.

  4. Verwenden Sie den Dienstkontoschlüssel zur Authentifizierung:

    Linux/MacOS

    Führen Sie dazu diesen Befehl aus:

    cat KEY-FILE | helm registry login -u KEY-TYPE --password-stdin \
    https://LOCATION-docker.pkg.dev
    

    Windows

    Führen Sie dazu diesen Befehl aus:

    helm registry login -u KEY-TYPE --password-stdin https://LOCATION-docker.pkg.dev < KEY-FILE
    

    Wo

    • KEY-TYPE ist einer der folgenden Werte:
      • _json_key, wenn Sie den Dienstkontoschlüssel im JSON-Format verwenden, wie er beim Erstellen der Datei angegeben wurde.
      • _json_key_base64, wenn Sie den gesamten Inhalt der Datei base64-codiert haben.
    • KEY-FILE ist der Name der Dienstkonto-Schlüsseldatei im JSON-Format.
    • LOCATION ist der regionale oder multiregionale Speicherort des Repositorys, an dem das Image gespeichert wird.

Helm ist jetzt bei Artifact Registry authentifiziert.

Nächste Schritte