Pushen und Pullen von Helm-Charts in 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. Bei Helm werden Anwendungspakete als Charts definiert, die gesammelt und in einem Helm-Chartrepository gespeichert werden.
In diesem Artikel erfahren Sie, wie Sie mithilfe von Helm 3-Befehlen und durch Speichern von Charts als OCI-Artefakte Helm-Chartrepositorys in einer Azure-Containerregistrierung hosten. In vielen Szenarien würden Sie für Ihre selbst entwickelten Anwendungen eigene Charts erstellen und hochladen. Weitere Informationen zum Erstellen eigener Helm-Charts finden Sie unter Entwicklerhandbuch für Chartvorlagen. Sie können auch ein vorhandenes Helm-Chart aus einem anderen Helm-Repository speichern.
Hinweis
Zur Aktualisierung wurden Helm 3-Befehle in diesen Artikel aufgenommen. Helm 3.7 enthält Änderungen an Helm CLI-Befehlen und der OCI-Unterstützung, die in früheren Versionen von Helm 3 eingeführt wurden. Standardmäßig wird helm
bei jedem Versionsupdate erhöht. Es wird empfohlen, 3.7.2 oder höher zu verwenden.
Wichtig
- Im November 2020 erreichte Helm 2 das Ende der Lebensdauer. Ab dem 30. März 2025 unterstützt Azure Container Registry Helm 2 nicht mehr. Daher wird auch die ältere Funktionen „Helm-Repositorys“ eingestellt. Es wird empfohlen, sofort auf Helm 3 umzustellen.
- Ab dem 21. Januar 2025 wird der CLI-Befehl az acr helm push eingestellt, um zu verhindern, dass neue Helm-Charts an Helm-Legacyrepositorys gepusht werden.
- Ab dem 30. März 2025 wird die CLI-Befehlsgruppe az acr helm eingestellt. Damit werden alle Legacyfunktionen für Helm-Repositorys in Azure Container Registry beendet.
- Alle Helm-Charts, die nicht als OCI-Artefakt gespeichert sind, werden am 30. März 2025 aus Azure Container Registry gelöscht.
- Erfahren Sie, wie Sie alle Helm-Charts ermitteln, die in einem Helm-Repository gespeichert sind: az acr helm list. Wenn das von Ihnen verwendete Helm-Chart aufgeführt ist, wird es in einem Helm-Legacyrepository gespeichert und wird möglicherweise gelöscht.
Helm 3 oder Helm 2?
Zum Speichern, Verwalten und Installieren von Helm-Charts verwenden Sie Befehle in der Helm-Befehlszeilenschnittstelle. Hauptreleases von Helm umfassen Helm 3 und Helm 2. Ausführliche Informationen zu den Versionsunterschieden finden Sie in den häufig gestellten Fragen (FAQ) zur Version.
Helm 3 sollte zum Hosten von Helm-Charts in Azure Container Registry verwendet werden. Mit Helm 3 haben Sie folgende Möglichkeiten:
- Speichern und Verwalten von Helm-Charts in Repositorys in einer Azure-Containerregistrierung.
- Speichern von Helm-Charts in einer Registrierung als OCI-Artefakte. Azure Container Registry bietet allgemeine Unterstützung für OCI-Artefakte, einschließlich Helm-Charts.
- Authentifizieren bei Ihrer Registrierung mithilfe des Befehls
helm registry login
oderaz acr login
. - Pushen, Pullen und Verwalten von Helm-Charts in einer Registrierung mithilfe von
helm
-Befehlen. - Verwenden Sie
helm install
, um Charts aus der Registrierung in einem Kubernetes-Cluster zu installieren.
Featureunterstützung
Azure Container Registry unterstützt bestimmte Verwaltungsfeatures für Helm-Charts, je nachdem, ob Sie Helm 3 (aktuell) oder Helm 2 (veraltet) verwenden.
Komponente | Helm 2 | Helm 3 |
---|---|---|
Verwalten von Charts mithilfe von az acr helm -Befehlen |
✔️ | |
Speichern von Charts als OCI-Artefakte | ✔️ | |
Verwalten von Charts mithilfe von az acr repository -Befehlen und über das Blatt Repositorys im Azure-Portal |
✔️ |
Kompatibilität von Chartversionen
Die folgenden Helm-Chartversionen können in Azure Container Registry gespeichert und von den Helm 2- und Helm 3-Clients installiert werden.
Version | Helm 2 | Helm 3 |
---|---|---|
apiVersion v1 | ✔️ | ✔️ |
apiVersion v2 | ✔️ |
Migrieren von Helm 2 zu Helm 3
Wenn Sie zuvor Charts mithilfe von Helm 2 und Azure Container Registry gespeichert und bereitgestellt haben, empfiehlt sich eine Migration zu Helm 3. Thema
- Migrieren von Helm 2 zu 3 in der Helm-Dokumentation
- Migrieren Ihrer Registrierung zum Speichern von Helm-OCI-Artefakten weiter unten in diesem Artikel
Voraussetzungen
Die folgenden Ressourcen sind für das Szenario in diesem Artikel erforderlich:
- Eine Azure Container Registry-Instanz in Ihrem Azure-Abonnement. Erstellen Sie bei Bedarf eine Registrierung im Azure-Portal oder über die Azure-Befehlszeilenschnittstelle.
- Version 3.7 oder höher des Helm-Clients: Führen Sie
helm version
aus, um Ihre aktuelle Version zu ermitteln. Weitere Informationen zum Installieren und Aktualisieren von Helm finden Sie unter Installieren von Helm. Wenn Sie ein Upgrade von einer früheren Version von Helm 3 durchführen, lesen Sie die Versionshinweise. - Ein Kubernetes-Cluster, in dem Sie später ein Helm-Chart installieren. Erstellen Sie bei Bedarf einen AKS-Cluster mithilfe der Azure-Befehlszeilenschnittstelle, mithilfe von Azure PowerShell oder über das Azure-Portal.
- Version 2.0.71 oder höher der Azure-Befehlszeilenschnittstelle: Führen Sie
az --version
aus, um die Version zu ermitteln. Informationen zum Durchführen einer Installation oder eines Upgrades finden Sie bei Bedarf unter Installieren der Azure CLI.
Einrichten eines Helm-Clients
Verwenden Sie den Befehl helm version
, um zu überprüfen, ob Sie Helm 3 installiert haben:
helm version
Hinweis
Die angegebene Version muss mindestens 3.8.0 sein, da die OCI-Unterstützung in früheren Versionen experimentell war.
Legen Sie die folgenden Umgebungsvariablen für die Zielregistrierung fest. Der ACR_NAME ist der Name der Registrierungsressource. Wenn die URL der ACR-Registrierung myregistry.azurecr.io ist, legen Sie ACR_NAME auf myregistry fest.
ACR_NAME=<container-registry-name>
Erstellen eines Beispielcharts
Erstellen Sie mithilfe der folgenden Befehle ein Testchart:
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:
cd hello-world/templates
rm -rf *
Erstellen Sie im Ordner templates
eine Datei namens configmap.yaml
, indem Sie den folgenden Befehl ausführen:
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.
Speichern eines Charts im lokalen Archiv
Wechseln Sie in das Unterverzeichnis hello-world
. Führen Sie dann helm package
aus, um das Chart in einem lokalen Archiv zu speichern.
Im folgenden Beispiel wird das Chart mit dem Namen und der Version in Chart.yaml
gespeichert.
cd ..
helm package .
Die Ausgabe Die Ausgabe lautet in etwa wie folgt:
Successfully packaged chart and saved it to: /my/path/hello-world-0.1.0.tgz
Authentifizieren bei der Registrierung
Führen Sie helm registry login
aus, um sich bei der Registrierung zu authentifizieren. Sie können für Ihr Szenario geeignete Registrierungsanmeldeinformationen übergeben, z. B. Anmeldeinformationen für den Dienstprinzipal, die Benutzeridentität oder ein Token für den Repositorygültigkeitsbereich.
- Authentifizieren Sie sich für die Registrierung mit einem Microsoft Entra-Dienstprinzipal mit Pull- und Pushberechtigung (Rolle „AcrPush“).
SERVICE_PRINCIPAL_NAME=<acr-helm-sp> ACR_REGISTRY_ID=$(az acr show --name $ACR_NAME --query id --output tsv) PASSWORD=$(az ad sp create-for-rbac --name $SERVICE_PRINCIPAL_NAME \ --scopes $(az acr show --name $ACR_NAME --query id --output tsv) \ --role acrpush \ --query "password" --output tsv) USER_NAME=$(az identity show -n $SERVICE_PRINCIPAL_NAME -g $RESOURCE_GROUP_NAME --subscription $SUBSCRIPTION_ID --query "clientId" -o tsv)
- Sie können sich bei der Registrierung auch mit Ihrer persönlichen Microsoft Entra-Identität anmelden, um Helm-Charts mit einem AD-Token zu pushen und zu pullen.
USER_NAME="00000000-0000-0000-0000-000000000000" PASSWORD=$(az acr login --name $ACR_NAME --expose-token --output tsv --query accessToken)
- Authentifizieren mit einem Token für den Repositorygültigkeitsbereich (Vorschau).
USER_NAME="helmtoken" PASSWORD=$(az acr token create -n $USER_NAME \ -r $ACR_NAME \ --scope-map _repositories_admin \ --only-show-errors \ --query "credentials.passwords[0].value" -o tsv)
- Stellen Sie die Anmeldeinformationen für
helm registry login
bereit.helm registry login $ACR_NAME.azurecr.io \ --username $USER_NAME \ --password $PASSWORD
Pushen eines Charts als OCI-Artefakt in die Registrierung
Führen Sie den Befehl helm push
in der Helm 3-Befehlszeilenschnittstelle aus, um das Chartarchiv in das vollqualifizierte Zielrepository zu pushen. Trennen Sie die Wörter in den Diagrammnamen, und verwenden Sie nur Kleinbuchstaben und Zahlen. Im folgenden Beispiel lautet der Ziel-Repositorynamespace helm/hello-world
, und das Chart ist mit 0.1.0
gekennzeichnet:
helm push hello-world-0.1.0.tgz oci://$ACR_NAME.azurecr.io/helm
Nach einem erfolgreichen Push ähnelt die Ausgabe der folgenden:
Pushed: <registry>.azurecr.io/helm/hello-world:0.1.0
digest: sha256:5899db028dcf96aeaabdadfa5899db02589b2899b025899b059db02
Auflisten von Diagrammen im 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.
Führen Sie z. B. az acr repository show aus, um die Eigenschaften des im vorherigen Schritt erstellten Repositorys anzuzeigen:
az acr repository show \
--name $ACR_NAME \
--repository helm/hello-world
Die Ausgabe Die Ausgabe lautet in etwa wie folgt:
{
"changeableAttributes": {
"deleteEnabled": true,
"listEnabled": true,
"readEnabled": true,
"writeEnabled": true
},
"createdTime": "2021-10-05T12:11:37.6701689Z",
"imageName": "helm/hello-world",
"lastUpdateTime": "2021-10-05T12:11:37.7637082Z",
"manifestCount": 1,
"registry": "mycontainerregistry.azurecr.io",
"tagCount": 1
}
Führen Sie den Befehl az acr manifest list-metadata aus, um die Details des im Repository gespeicherten Diagramms anzuzeigen. Beispiel:
az acr manifest list-metadata \
--registry $ACR_NAME \
--name helm/hello-world
Die Ausgabe (in diesem Beispiel abgekürzt) zeigt application/vnd.cncf.helm.config.v1+json
als configMediaType
an:
[
{
[...]
"configMediaType": "application/vnd.cncf.helm.config.v1+json",
"createdTime": "2021-10-05T12:11:37.7167893Z",
"digest": "sha256:0c03b71c225c3ddff53660258ea16ca7412b53b1f6811bf769d8c85a1f0663ee",
"imageSize": 3301,
"lastUpdateTime": "2021-10-05T12:11:37.7167893Z",
"mediaType": "application/vnd.oci.image.manifest.v1+json",
"tags": [
"0.1.0"
]
Installieren von Helm-Charts
Führen Sie helm install
aus, um das Helm-Chart zu installieren, das Sie in die Registrierung gepusht haben. Das Charttag wird mithilfe des Parameters --version
übergeben. Geben Sie einen Releasenamen (beispielsweise myhelmtest) an, oder übergeben Sie den Parameter --generate-name
. Beispiel:
helm install myhelmtest oci://$ACR_NAME.azurecr.io/helm/hello-world --version 0.1.0
Die Ausgabe nach erfolgreicher Chartinstallation sieht in etwa wie folgt aus:
NAME: myhelmtest
LAST DEPLOYED: Tue Oct 4 16:59:51 2021
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
Führen Sie den Befehl helm get manifest
aus, um die Installation zu überprüfen.
helm get manifest myhelmtest
Der Befehl gibt die YAML-Daten in der Vorlagendatei configmap.yaml
zurück.
Führen Sie helm uninstall
aus, um das Chart-Release in Ihrem Cluster zu deinstallieren:
helm uninstall myhelmtest
Pullen eines Charts in das lokale Archiv
Optional können Sie ein Chart mithilfe von helm pull
aus der Containerregistrierung in ein lokales Archiv pullen. Das Charttag wird mithilfe des Parameters --version
übergeben. Wenn ein lokales Archiv im aktuellen Pfad vorhanden ist, wird es durch diesen Befehl überschrieben.
helm pull oci://$ACR_NAME.azurecr.io/helm/hello-world --version 0.1.0
Löschen eines Charts aus der Registrierung
Wenn Sie ein Chart aus der Containerregistrierung löschen möchten, verwenden Sie den Befehl az acr repository delete. Führen Sie den folgenden Befehl aus, und bestätigen Sie den Vorgang, wenn Sie dazu aufgefordert werden:
az acr repository delete --name $ACR_NAME --image helm/hello-world:0.1.0
Migrieren Ihrer Registrierung zum Speichern von Helm-OCI-Artefakten
Wenn Sie Ihre Azure-Containerregistrierung zuvor mit Helm 2 und den az acr helm
-Befehlen als Chartrepository eingerichtet haben, wird empfohlen, ein Upgrade auf den Helm 3-Client auszuführen. Führen Sie dann die folgenden Schritte aus, um die Charts als OCI-Artefakte in Ihrer Registrierung zu speichern.
Wichtig
- Nachdem Sie die Migration von einem Helm 2-Chartrepository (index.yaml-basiert) zu OCI-Artefaktrepositorys abgeschlossen haben, verwenden Sie die Helm-Befehlszeilenschnittstelle und die
az acr repository
-Befehle, um die Charts zu verwalten. Informationen hierzu finden Sie in den früheren Abschnitten dieses Artikels. - Die Helm-OCI-Artefaktrepositorys können nicht mit Helm-Befehlen wie
helm search
undhelm repo list
gefunden werden. Weitere Informationen zu Helm-Befehlen zum Speichern von Charts als OCI-Artefakte finden Sie in der Helm-Dokumentation.
Aktivieren der OCI-Unterstützung (standardmäßig in Helm v3.8.0 aktiviert)
Stellen Sie sicher, dass Sie den Helm 3-Client verwenden:
helm version
Wenn Sie Helm v3.8.0 oder höher verwenden, ist dies standardmäßig aktiviert. Wenn Sie eine niedrigere Version verwenden, können Sie die OCI-Supporteinstellung durch Festlegen der Umgebungsvariable aktivieren:
export HELM_EXPERIMENTAL_OCI=1
Auflisten aktueller Charts
Listen Sie die Charts auf, die derzeit in der Registrierung gespeichert sind, hier als myregistry benannt:
helm search repo myregistry
Die Ausgabe zeigt die Charts und Chartversionen:
NAME CHART VERSION APP VERSION DESCRIPTION
myregistry/ingress-nginx 3.20.1 0.43.0 Ingress controller for Kubernetes...
myregistry/wordpress 9.0.3 5.3.2 Web publishing platform for building...
[...]
Lokales Pullen von Chartarchiven
Pullen Sie für jedes Chart im Repository das Chartarchiv lokal, und notieren Sie sich den Dateinamen:
helm pull myregisry/ingress-nginx
ls *.tgz
Ein lokales Chartarchiv wie ingress-nginx-3.20.1.tgz
wird erstellt.
Pushen von Charts als OCI-Artefakte in eine Registrierung
Melden Sie sich bei der Registrierung an:
az acr login --name $ACR_NAME
Pushen Sie jedes Chartarchiv in die Registrierung. Beispiel:
helm push ingress-nginx-3.20.1.tgz oci://$ACR_NAME.azurecr.io/helm
Vergewissern Sie sich nach dem Pushen eines Charts, dass es in der Registrierung gespeichert ist:
az acr repository list --name $ACR_NAME
Entfernen Sie nach dem Pushen aller Charts optional das Helm 2-Chartrepository aus der Registrierung. Dadurch wird der beanspruchte Speicher in Ihrer Registrierung reduziert:
helm repo remove $ACR_NAME
Nächste Schritte
- Weitere Informationen zum Erstellen und Bereitstellen von Helm-Charts finden Sie unter Charts.
- Weitere Informationen zum Installieren von Anwendungen mit Helm in Azure Kubernetes Service (AKS) finden Sie hier.
- Helm-Diagramme können als Teil des Containererstellungsprozesses verwendet werden. Weitere Informationen finden Sie unter Verwenden von Azure Container Registry Tasks.