Pushen und Pullen von Helm-Charts in Azure Container RegistryPush and pull Helm charts to an Azure container registry

Sie können den Open Source-Paket-Manager von Helm verwenden, um Anwendungen für Kubernetes ohne großen Aufwand zu verwalten und bereitzustellen.To quickly manage and deploy applications for Kubernetes, you can use the open-source Helm package manager. Bei Helm werden Anwendungspakete als Charts definiert, die gesammelt und in einem Helm-Chartrepository gespeichert werden.With Helm, application packages are defined as charts, which are collected and stored in a Helm chart repository.

In diesem Artikel erfahren Sie, wie Sie mithilfe von Helm 3-Befehlen Helm-Chartrepositorys in einer Azure Container Registry-Instanz hosten.This article shows you how to host Helm charts repositories in an Azure container registry, using Helm 3 commands. In vielen Szenarien würden Sie für Ihre selbst entwickelten Anwendungen eigene Charts erstellen und hochladen.In many scenarios, you would build and upload your own charts for the applications you develop. Weitere Informationen zum Erstellen eigener Helm-Charts finden Sie unter Entwicklerhandbuch für Chartvorlagen.For more information on how to build your own Helm charts, see the Chart Template Developer's Guide. Sie können auch ein vorhandenes Helm-Chart aus einem anderen Helm-Repository speichern.You can also store an existing Helm chart from another Helm repo.

Wichtig

Die Unterstützung von Helm-Charts in Azure Container Registry befindet sich derzeit in der Vorschauphase.Support for Helm charts in Azure Container Registry is currently in preview. Wenn Sie Vorschauversionen nutzen möchten, müssen Sie die zusätzlichen Nutzungsbedingungen akzeptieren.Previews are made available to you on the condition that you agree to the supplemental terms of use. Einige Aspekte dieses Features werden bis zur allgemeinen Verfügbarkeit unter Umständen noch geändert.Some aspects of this feature may change prior to general availability (GA).

Helm 3 oder Helm 2?Helm 3 or Helm 2?

Zum Speichern, Verwalten und Installieren von Helm-Charts verwenden Sie einen Helm-Client und die Helm-Befehlszeilenschnittstelle.To store, manage, and install Helm charts, you use a Helm client and the Helm CLI. Zu den Hauptversionen des Helm-Clients zählen Helm 3 und Helm 2.Major releases of the Helm client include Helm 3 and Helm 2. Ausführliche Informationen zu den Versionsunterschieden finden Sie in den häufig gestellten Fragen (FAQ) zur Version.For details on the version differences, see the version FAQ.

Helm 3 sollte zum Hosten von Helm-Charts in Azure Container Registry verwendet werden.Helm 3 should be used to host Helm charts in Azure Container Registry. Mit Helm 3 haben Sie folgende Möglichkeiten:With Helm 3, you:

  • Erstellen von Helm-Repositorys in Azure Container RegistryCan create one or more Helm repositories in an Azure container registry
  • Speichern von Helm 3-Charts in einer Registrierung als OCI-Artefakte.Store Helm 3 charts in a registry as OCI artifacts. Die Helm 3-Unterstützung für OCI ist momentan experimentell.Currently, Helm 3 support for OCI is experimental.
  • Authentifizieren bei Ihrer Registrierung mithilfe des Befehls helm registry loginAuthenticate with your registry using the helm registry login command.
  • Pushen, Pullen und Verwalten von Helm-Charts in einer Registrierung mithilfe von Befehlen vom Typ helm chart in der Helm-BefehlszeilenschnittstelleUse helm chart commands in the Helm CLI to push, pull, and manage Helm charts in a registry
  • Verwenden Sie helm install, um Charts aus einem lokalen Repositorycache in einem Kubernetes-Cluster zu installieren.Use helm install to install charts to a Kubernetes cluster from a local repository cache.

Hinweis

Ab Helm 3 gelten az acr helm-Befehle für die Verwendung mit dem Helm 2-Client als veraltet.As of Helm 3, az acr helm commands for use with the Helm 2 client are being deprecated. Siehe die Produktroadmap.See the product roadmap. Wenn Sie zuvor Helm 2-Charts bereitgestellt haben, lesen Sie Migrating Helm v2 to v3 (Migrieren von Helm v2 zu v3).If you've previously deployed Helm 2 charts, see Migrating Helm v2 to v3.

VoraussetzungenPrerequisites

Die folgenden Ressourcen sind für das Szenario in diesem Artikel erforderlich:The following resources are needed for the scenario in this article:

  • Eine Azure Container Registry-Instanz in Ihrem Azure-Abonnement.An Azure container registry in your Azure subscription. Erstellen Sie bei Bedarf eine Registrierung im Azure-Portal oder über die Azure-Befehlszeilenschnittstelle.If needed, create a registry using the Azure portal or the Azure CLI.
  • Version 3.1.0 oder höher des Helm-Clients: Führen Sie helm version aus, um Ihre aktuelle Version zu ermitteln.Helm client version 3.1.0 or later - Run helm version to find your current version. Weitere Informationen zum Installieren und Aktualisieren von Helm finden Sie unter Installieren von Helm.For more information on how to install and upgrade Helm, see Installing Helm.
  • Ein Kubernetes-Cluster, in dem Sie später ein Helm-Chart installieren.A Kubernetes cluster where you will install a Helm chart. Erstellen Sie bei Bedarf einen Azure Kubernetes Service-Cluster.If needed, create an Azure Kubernetes Service cluster.
  • Version 2.0.71 oder höher der Azure-Befehlszeilenschnittstelle: Führen Sie az --version aus, um die Version zu ermitteln.Azure CLI version 2.0.71 or later - Run az --version to find the version. Informationen zum Durchführen einer Installation oder eines Upgrades finden Sie bei Bedarf unter Installieren der Azure CLI.If you need to install or upgrade, see Install Azure CLI.

Aktivieren der OCI-UnterstützungEnable OCI support

Verwenden Sie den Befehl helm version, um zu überprüfen, ob Sie Helm 3 installiert haben:Use the helm version command to verify that you have installed Helm 3:

helm version

Legen Sie die folgende Umgebungsvariable fest, um die OCI-Unterstützung im Helm 3-Client zu aktivieren.Set the following environment variable to enable OCI support in the Helm 3 client. Diese Unterstützung ist derzeit experimentell.Currently, this support is experimental.

export HELM_EXPERIMENTAL_OCI=1

Erstellen eines BeispielchartsCreate a sample chart

Erstellen Sie mithilfe der folgenden Befehle ein Testchart:Create a test chart using the following commands:

mkdir helmtest

cd helmtest
helm create hello-world

Wechseln Sie für dieses einfache Beispiel zunächst in den Ordner templates, und löschen Sie den Inhalt des Ordners:As a basic example, change directory to the templates folder and first delete the contents there:

cd hello-world/templates
rm -rf *

Erstellen Sie im Ordner templates eine Datei namens configmap.yaml, indem Sie den folgenden Befehl ausführen:In the templates folder, create a file called configmap.yaml, by running the following command:

cat <<EOF > configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: hello-world-configmap
data:
  myvalue: "Hello World"
EOF

Weitere Informationen zum Erstellen und Ausführen dieses Beispiels finden Sie in der Helm-Dokumentation unter Erste Schritte.For more about creating and running this example, see Getting Started in the Helm Docs.

Speichern des Charts im lokalen RegistrierungscacheSave chart to local registry cache

Wechseln Sie in das Unterverzeichnis hello-world.Change directory to the hello-world subdirectory. Führen Sie anschließend helm chart save aus, um eine Kopie des Charts lokal zu speichern und einen Alias mit dem vollqualifizierten Namen der Registrierung (nur Kleinbuchstaben) sowie des Zielrepositorys und des Tags zu erstellen.Then, run helm chart save to save a copy of the chart locally and also create an alias with the fully qualified name of the registry (all lowercase) and the target repository and tag.

Im folgenden Beispiel lautet der Registrierungsname mycontainerregistry, das Zielrepository ist hello-world, und das Zielcharttag ist v1. Ersetzen Sie diese Werte jedoch durch Werte für Ihre Umgebung:In the following example, the registry name is mycontainerregistry, the target repo is hello-world, and the target chart tag is v1, but substitute values for your environment:

cd ..
helm chart save . hello-world:v1
helm chart save . mycontainerregistry.azurecr.io/helm/hello-world:v1

Führen Sie helm chart list aus, um zu überprüfen, ob die Charts im lokalen Registrierungscache gespeichert wurden.Run helm chart list to confirm you saved the charts in the local registry cache. Die Ausgabe Die Ausgabe lautet in etwa wie folgt:Output is similar to:

REF                                                      NAME            VERSION DIGEST  SIZE            CREATED
hello-world:v1                                           hello-world       0.1.0   5899db0 3.2 KiB        2 minutes 
mycontainerregistry.azurecr.io/helm/hello-world:v1       hello-world       0.1.0   5899db0 3.2 KiB        2 minutes

Authentifizieren bei der RegistrierungAuthenticate with the registry

Führen Sie in der Helm 3-Befehlszeilenschnittstelle den Befehl helm registry login aus, um sich bei der Registrierung zu authentifizieren, und verwenden Sie geeignete Anmeldeinformationen für Ihr Szenario.Run the helm registry login command in the Helm 3 CLI to authenticate with the registry using credentials appropriate for your scenario.

Erstellen Sie beispielsweise einen Azure Active Directory-Dienstprinzipal mit Pull- und Pushberechtigungen (AcrPush-Rolle) für die Registrierung.For example, create an Azure Active Directory service principal with pull and push permissions (AcrPush role) to the registry. Geben Sie anschließend die Dienstprinzipal-Anmeldeinformationen für helm registry login an.Then supply the service principal credentials to helm registry login. Im folgenden Beispiel wird das Kennwort mithilfe einer Umgebungsvariablen angegeben:The following example supplies the password using an environment variable:

echo $spPassword | helm registry login mycontainerregistry.azurecr.io \
  --username <service-principal-id> \
  --password-stdin

Pushen eines Charts in die RegistrierungPush chart to registry

Führen Sie den Befehl helm chart push in der Helm 3-Befehlszeilenschnittstelle aus, um das Chart in das vollqualifizierte Zielrepository zu pushen:Run the helm chart push command in the Helm 3 CLI to push the chart to the fully qualified target repository:

helm chart push mycontainerregistry.azurecr.io/helm/hello-world:v1

Nach einem erfolgreichen Push ähnelt die Ausgabe der folgenden:After a successful push, output is similar to:

The push refers to repository [mycontainerregistry.azurecr.io/helm/hello-world]
ref:     mycontainerregistry.azurecr.io/helm/hello-world:v1
digest:  5899db028dcf96aeaabdadfa5899db025899db025899db025899db025899db02
size:    3.2 KiB
name:    hello-world
version: 0.1.0

Auflisten von Diagrammen im RepositoryList charts in the repository

Wie bei in Azure Container Registry gespeicherten Images können Sie mithilfe von az acr repository-Befehlen die Depots anzeigen, in denen Ihre Charts gehostet werden, sowie die Charttags und -manifeste.As with images stored in an Azure container registry, you can use az acr repository commands to show the repositories hosting your charts, and chart tags and manifests.

Führen Sie z. B. az acr repository show aus, um die Eigenschaften des im vorherigen Schritt erstellten Repositorys anzuzeigen:For example, run az acr repository show to see the properties of the repo you created in the previous step:

az acr repository show \
  --name mycontainerregistry \
  --repository helm/hello-world

Die Ausgabe Die Ausgabe lautet in etwa wie folgt:Output is similar to:

{
  "changeableAttributes": {
    "deleteEnabled": true,
    "listEnabled": true,
    "readEnabled": true,
    "writeEnabled": true
  },
  "createdTime": "2020-03-20T18:11:37.6701689Z",
  "imageName": "helm/hello-world",
  "lastUpdateTime": "2020-03-20T18:11:37.7637082Z",
  "manifestCount": 1,
  "registry": "mycontainerregistry.azurecr.io",
  "tagCount": 1
}

Führen Sie den Befehl az acr repository show-manifests aus, um die Details des im Repository gespeicherten Charts anzuzeigen.Run the az acr repository show-manifests command to see details of the chart stored in the repository. Beispiel:For example:

az acr repository show-manifests \
  --name mycontainerregistry \
  --repository helm/hello-world --detail

Die Ausgabe (in diesem Beispiel abgekürzt) zeigt application/vnd.cncf.helm.config.v1+json als configMediaType an:Output, abbreviated in this example, shows a configMediaType of application/vnd.cncf.helm.config.v1+json:

[
  {
    [...]
    "configMediaType": "application/vnd.cncf.helm.config.v1+json",
    "createdTime": "2020-03-20T18:11:37.7167893Z",
    "digest": "sha256:0c03b71c225c3ddff53660258ea16ca7412b53b1f6811bf769d8c85a1f0663ee",
    "imageSize": 3301,
    "lastUpdateTime": "2020-03-20T18:11:37.7167893Z",
    "mediaType": "application/vnd.oci.image.manifest.v1+json",
    "tags": [
      "v1"
    ]

Pullen eines Charts in den lokalen CachePull chart to local cache

Um ein Helm-Chart in Kubernetes zu installieren, muss sich das Chart im lokalen Cache befinden.To install a Helm chart to Kubernetes, the chart must be in the local cache. Führen Sie in diesem Beispiel zuerst helm chart remove aus, um das vorhandene lokale Chart mit dem Namen mycontainerregistry.azurecr.io/helm/hello-world:v1 zu entfernen:In this example, first run helm chart remove to remove the existing local chart named mycontainerregistry.azurecr.io/helm/hello-world:v1:

helm chart remove mycontainerregistry.azurecr.io/helm/hello-world:v1

Führen Sie helm chart pull aus, um das Chart aus Azure Container Registry in Ihren lokalen Cache herunterzuladen:Run helm chart pull to download the chart from the Azure container registry to your local cache:

helm chart pull mycontainerregistry.azurecr.io/helm/hello-world:v1

Exportieren von Helm-ChartsExport Helm chart

Wenn Sie mit dem Chart weiterarbeiten möchten, exportieren Sie es mithilfe von helm chart export in ein lokales Verzeichnis.To work further with the chart, export it to a local directory using helm chart export. Exportieren Sie z. B. das Chart, das Sie in das Verzeichnis install gepullt haben:For example, export the chart you pulled to the install directory:

helm chart export mycontainerregistry.azurecr.io/helm/hello-world:v1 \
  --destination ./install

Um Informationen zum exportierten Chart im Repository anzuzeigen, führen Sie den Befehl helm show chart in dem Verzeichnis aus, in das Sie das Chart exportiert haben.To view information for the exported chart in the repo, run the helm show chart command in the directory where you exported the chart.

cd install
helm show chart hello-world

Helm gibt ausführliche Informationen zur aktuellen Version Ihres Charts zurück, wie in der folgenden Beispielausgabe zu sehen:Helm returns detailed information about the latest version of your chart, as shown in the following sample output:

apiVersion: v2
appVersion: 1.16.0
description: A Helm chart for Kubernetes
name: hello-world
type: application
version: 0.1.0    

Installieren von Helm-ChartsInstall Helm chart

Führen Sie helm install aus, um das Helm-Chart, das Sie in den lokalen Cache gepullt und exportiert haben, zu installieren.Run helm install to install the Helm chart you pulled to the local cache and exported. Geben Sie einen Releasenamen (beispielsweise myhelmtest) an, oder übergeben Sie den Parameter --generate-name.Specify a release name such as myhelmtest, or pass the --generate-name parameter. Beispiel:For example:

helm install myhelmtest ./hello-world

Die Ausgabe nach erfolgreicher Chartinstallation sieht in etwa wie folgt aus:Output after successful chart installation is similar to:

NAME: myhelmtest
LAST DEPLOYED: Fri Mar 20 14:14:42 2020
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None

Führen Sie den Befehl helm get manifest aus, um die Installation zu überprüfen.To verify the installation, run the helm get manifest command.

helm get manifest myhelmtest

Der Befehl gibt die YAML-Daten in der Vorlagendatei configmap.yaml zurück.The command returns the YAML data in your configmap.yaml template file.

Führen Sie helm uninstall aus, um das Chart-Release in Ihrem Cluster zu deinstallieren:Run helm uninstall to uninstall the chart release on your cluster:

helm uninstall myhelmtest

Löschen eines Charts aus der RegistrierungDelete chart from the registry

Wenn Sie ein Chart aus der Containerregistrierung löschen möchten, verwenden Sie den Befehl az acr repository delete.To delete a chart from the container registry, use the az acr repository delete command. Führen Sie den folgenden Befehl aus, und bestätigen Sie den Vorgang, wenn Sie dazu aufgefordert werden:Run the following command and confirm the operation when prompted:

az acr repository delete --name mycontainerregistry --image helm/hello-world:v1

Nächste SchritteNext steps