Helm-Diagramme in Artifact Registry speichern

Helm ist der Paketmanager für Kubernetes. Mit Artifact Registry können Sie Helm-Diagramme in Repositories im Docker-Format speichern und verwalten, um Kubernetes-Ressourcen zu versionieren und bereitzustellen. In dieser Kurzanleitung erstellen Sie ein privates Repository, verpacken und pushen ein Beispiel-Chart und stellen ein Release in einem Cluster bereit.

Hinweis

  1. Melden Sie sich in Ihrem Google Cloud -Konto an. Wenn Sie mit Google Cloudnoch nicht vertraut sind, erstellen Sie einfach ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.

  4. Verify that billing is enabled for your Google Cloud project.

  5. Enable the Artifact Registry, Google Kubernetes Engine APIs, if any are not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the APIs

  6. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  7. If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.

  8. Verify that billing is enabled for your Google Cloud project.

  9. Enable the Artifact Registry, Google Kubernetes Engine APIs, if any are not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the APIs

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen für Ihr Projekt die IAM-Rolle Artifact Registry Administrator (roles/artifactregistry.admin) zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Erstellen und Verwalten von Helm-Charts in Artifact Registry Docker-Paket-Repositories benötigen. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

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

Shell auswählen

Sie können diese Kurzanleitung entweder in Cloud Shell oder in Ihrer lokalen Shell ausführen.

Cloud Shell
Cloud Shell ist eine Shell-Umgebung für die Verwaltung von Ressourcen, die in Google Cloudgehostet werden. Dort sind Docker, Helm und die Google Cloud CLI, die primäre Befehlszeile für Google Cloud, vorinstalliert.
Lokale Shell
Wenn Sie Ihre lokale Shell bevorzugen, müssen Sie Docker und die gcloud CLI in Ihrer Umgebung installieren.

Cloud Shell starten

So starten Sie Cloud Shell:

  1. Zur Google Cloud Console.

    Google Cloud Console

  2. Klicken Sie auf den Button Cloud Shell aktivieren:  .

    In einem Frame im unteren Teil der Console wird eine Cloud Shell-Sitzung geöffnet. Mit dieser Shell führen Sie gcloud-Befehle aus.

  3. Installieren Sie Helm 3.8.0 oder höher. In früheren Versionen von Helm ist die Unterstützung von Diagrammen im OCI-Format eine experimentelle Funktion.

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

Lokale Shell einrichten

So installieren Sie die gcloud CLI und Helm:

  1. Installieren Sie die gcloud CLI. Führen Sie den Befehl gcloud components update aus, um eine vorhandene Installation zu aktualisieren.

  2. Installieren Sie Helm 3.8.0 oder höher. In früheren Versionen von Helm ist die Unterstützung von Diagrammen im OCI-Format eine experimentelle Funktion.

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

Repository erstellen

Erstellen Sie ein Docker-Repository zum Speichern des Beispielcharts für diese Kurzanleitung.

Console

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

    Zur Seite „Repositories“

  2. Klicken Sie auf Repository erstellen.

  3. Geben Sie quickstart-helm-repo als Repository-Namen an.

  4. Wählen Sie „Docker“ als Format aus.

  5. Wählen Sie unter Standorttyp die Option Region und dann den Standort us-west1 aus.

  6. Klicken Sie auf Erstellen.

Das Repository wird der Repository-Liste hinzugefügt.

gcloud

  1. Führen Sie den folgenden Befehl aus, um ein neues Docker-Repository mit dem Namen quickstart-helm-repo am Speicherort us-west1 mit der Beschreibung „docker repository“ zu erstellen.

    gcloud artifacts repositories create quickstart-helm-repo --repository-format=docker \
    --location=us-west1 --description="Helm repository"
    
  2. Führen Sie den folgenden Befehl aus, um zu prüfen, ob Ihr Repository erstellt wurde:

    gcloud artifacts repositories list
    

Weitere Informationen zu Artifact Registry-Befehlen erhalten Sie mit dem Befehl gcloud artifacts.

Diagramm erstellen

Für diese Kurzanleitung erstellen Sie ein Beispieldiagramm mit dem Namen hello-chart.

  1. Wechseln Sie in das Verzeichnis, in dem Sie das Diagramm erstellen möchten.
  2. Führen Sie den folgenden Befehl aus, um das Diagramm zu erstellen:

    helm create hello-chart
    

    Helm erstellt ein Verzeichnis mit dem Namen hello-chart mit einem Standardsatz von Diagrammdateien. Eine der Dateien ist Chart.yaml, die Informationen zum Chart enthält.

  3. Verpacken Sie das Diagramm in einem Archiv.

    helm package hello-chart/
    

    Helm erstellt ein Archiv mit dem Namen hello-chart-0.1.0.tgz, wobei der Diagrammname und die Versionsnummer aus Chart.yaml verwendet werden.

Authentifizierung beim Repository

Bevor Sie Images per Push übertragen oder installieren können, muss Helm sich bei Artifact Registry authentifizieren.

Helm kann vorhandene Registry-Einstellungen aus einer Docker-Konfigurationsdatei verwenden. Wenn Sie Docker noch nicht für die Verwendung mit Artifact Registry konfiguriert haben, können Sie sich für diese Kurzanleitung mit einem Zugriffstoken authentifizieren.

Weitere Informationen zur Authentifizierung finden Sie unter Authentifizierung für Helm einrichten.

Mit Ihrer Docker-Konfiguration authentifizieren

Standardmäßig unterstützt Helm Registriereinstellungen in der Docker-Konfigurationsdatei config.json. Helm findet Registrierungseinstellungen entweder am Standardspeicherort oder am Speicherort, der durch die Umgebungsvariable DOCKER_CONFIG angegeben wird.

Wenn Sie Docker mit einem Credential Helper konfiguriert haben, um sich bei Artifact Registry zu authentifizieren, verwendet Helm Ihre vorhandene Konfiguration für Artifact Registry-Docker-Repositories.

Mit einem Zugriffstoken authentifizieren

So authentifizieren Sie sich mit einem Zugriffstoken:

  1. Rufen Sie ein Zugriffstoken als Anmeldedaten ab, wenn Sie sich mit Helm bei Artifact Registry authentifizieren.

    Linux/macOS

    Führen Sie dazu diesen Befehl aus:

    gcloud auth print-access-token | helm registry login -u oauth2accesstoken \
    --password-stdin us-west1-docker.pkg.dev
    

    Windows

    Führen Sie dazu diesen Befehl aus:

    gcloud auth print-access-token
    ya29.8QEQIfY_...
    
    helm registry login -u oauth2accesstoken -p "ya29.8QEQIfY_..." \
    us-west1-docker.pkg.dev/PROJECT-ID/REPOSITORY
    

    Dabei gilt:

    • oauth2accesstoken ist der Nutzername, der zur Authentifizierung mit einem Zugriffstoken verwendet werden soll.
    • gcloud auth print-access-token ist der gcloud-Befehl zum Abrufen des Zugriffstokens. Ihr Zugriffstoken ist das Passwort für die Authentifizierung.

Helm ist jetzt bei Artifact Registry authentifiziert. Sie können das Diagramm jetzt in das Repository hochladen.

Chart in Artifact Registry hochladen

Nachdem Sie das Diagrammarchiv erstellt und sich im Artifact Registry-Repository authentifiziert haben, können Sie das Diagramm in das Repository hochladen.

Führen Sie den folgenden Befehl aus, um das Diagramm zu übertragen:

helm push hello-chart-0.1.0.tgz oci://us-west1-docker.pkg.dev/PROJECT/quickstart-helm-repo

Ersetzen Sie PROJECT durch Ihre Google Cloud Projekt-ID.

Helm verwendet Werte aus Chart.yaml für das Bild:

  • Der Diagrammname ist der Bildname: hello-chart
  • Die Diagrammversion ist das Bild-Tag: 0.1.0

Helm gibt eine Ausgabe ähnlich dem folgenden Beispiel zurück:

Login Succeeded
Pushed: us-west1-docker.pkg.dev/my-project/quickstart-helm-repo/hello-chart:0.1.0
Digest: sha256:67a72...

Führen Sie den folgenden Befehl aus, um zu prüfen, ob das Diagramm jetzt im Repository gespeichert ist:

gcloud artifacts docker images list us-west1-docker.pkg.dev/PROJECT/quickstart-helm-repo

Die Befehlsausgabe sieht dann ungefähr so aus:

Listing items under project my-project, location us-west1, repository quickstart-helm-repo.

IMAGE: us-west1-docker.pkg.dev/my-project/quickstart-helm-repo/hello-chart
DIGEST: sha256:67a72...
CREATE_TIME: 2021-11-08T22:59:57
UPDATE_TIME: 2021-11-08T22:59:57

Sie können jetzt ein Release mit dem in Artifact Registry gespeicherten Diagramm bereitstellen.

Diagramm bereitstellen

In Helm wird eine bereitgestellte Instanz Ihrer Anwendung als Release bezeichnet. Nachdem Sie Ihr Repository der Helm-Konfiguration hinzugefügt haben, können Sie eine Version Ihres Diagramms bereitstellen.

  1. Erstellen Sie mit dem folgenden Befehl einen Cluster namens chart-cluster für Ihre Bereitstellung:

    gcloud container clusters create --zone us-west1-a chart-cluster
    

    Wenn der Cluster erstellt wurde, gibt der Befehl eine Zusammenfassung wie im folgenden Beispiel zurück:

    kubeconfig entry generated for chart-cluster.
    NAME: chart-cluster
    LOCATION: us-west1-a
    MASTER_VERSION: 1.20.10-gke.1600
    MASTER_IP: 34.66.36.211
    MACHINE_TYPE: e2-medium
    NODE_VERSION: 1.20.10-gke.1600
    NUM_NODES: 3
    STATUS: RUNNING
    
  2. Rufen Sie die Clusteranmeldedaten ab, damit kubectl auf den Cluster zugreifen kann:

    gcloud container clusters get-credentials --zone us-west1-a chart-cluster
    
  3. Führen Sie den folgenden Befehl aus, um eine Version von hello-chart mit den lokal extrahierten Diagrammdateien bereitzustellen:

    helm install hello-chart oci://us-west1-docker.pkg.dev/PROJECT/quickstart-helm-repo/hello-chart --version 0.1.0
    

    Der Befehl gibt eine Zusammenfassung der Bereitstellung zurück:

    NAME: hello-chart
    LAST DEPLOYED: Mon Nov  8 23:15:13 2021
    NAMESPACE: default
    STATUS: deployed
    REVISION: 1
    

Sie haben mit dem Chart, das Sie erstellt und in Artifact Registry übertragen haben, erfolgreich ein Release bereitgestellt.

Bereinigen

Mit den folgenden Schritten vermeiden Sie, dass Ihrem Google Cloud -Konto die auf dieser Seite verwendeten Ressourcen in Rechnung gestellt werden:

  1. Löschen Sie das von Ihnen erstellte Repository mit dem folgenden Befehl:

    gcloud artifacts repositories delete quickstart-helm-repo --location=us-west1
    
  2. Löschen Sie den von Ihnen erstellten Cluster:

    gcloud container clusters delete --zone=us-west1-a chart-cluster
    

Nächste Schritte