Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Om du snabbt vill hantera och distribuera program för Kubernetes kan du använda Helm-pakethanteraren med öppen källkod. Med Helm definieras programpaket som diagram som samlas in och lagras i en Helm-diagramlagringsplats.
Den här artikeln visar hur du är värd för Helm-diagramlagringsplatser i ett Azure-containerregister med hjälp av Helm 3-kommandon och lagring av diagram som OCI-artefakter. I många scenarier skulle du skapa och ladda upp egna diagram för de program som du utvecklar. Mer information om hur du skapar egna Helm-diagram finns i utvecklarhandboken för diagrammallar. Du kan också lagra ett befintligt Helm-diagram från en annan Helm-lagringsplats.
Anmärkning
Den här artikeln har uppdaterats med Helm 3-kommandon. Helm 3.7 innehåller ändringar av Helm CLI-kommandon och OCI-stöd som introducerades i tidigare versioner av Helm 3. Avsiktligt helm
utvecklas med versionsuppdateringar. Vi rekommenderar att du använder 3.7.2 eller senare.
Viktigt!
- I november 2020 upphörde supporten för Helm 2. I september förra året meddelade vi att Azure Container Registry från och med den 30 mars 2025 inte längre stöder Helm 2- och Helm-lagringsplatser. Vi har dock beslutat att förlänga den här tidslinjen för att ge kunderna mer tid att slutföra migreringen. Vi rekommenderar att du övergår till Helm 3 och lagrar Helm-diagram som OCI-artefakter omedelbart.
- Azure CLI-kommandot az acr helm push har dragits tillbaka. Detta förhindrar att nya Helm-diagram skickas till äldre Helm-lagringsplatser.
- Från och med den 15 september 2025 dras Azure CLI-kommandogruppen az acr helm tillbaka. Detta avslutar äldre Helm-lagringsplatsfunktioner i Azure Container Registry.
- Alla Helm-diagram som inte lagras som en OCI-artefakt tas bort från Azure Container Registry från och med den 15 september 2025.
- Lär dig hur du hittar alla Helm-diagram som lagras på en Helm-lagringsplats här: az acr helm list. Om Helm-diagrammet du använder visas lagras det på en äldre Helm-lagringsplats och riskerar att tas bort.
Om du vill lagra, hantera och installera Helm-diagram använder du kommandon i Helm CLI. Större Helm-versioner är Helm 3 och Helm 2. Mer information om versionsskillnader finns i vanliga frågor och svar om versionen.
Migrera från Helm 2 till Helm 3
Om du tidigare har lagrat och distribuerat diagram med Hjälp av Helm 2 och Azure Container Registry rekommenderar vi att du migrerar till Helm 3. Se:
- Migrera Helm 2 till 3 enligt Helm-dokumentationen.
- Migrera registret för att lagra Helm OCI-artefakter senare i den här artikeln
Helm 3 ska användas som värd för Helm-diagram i Azure Container Registry. Med Helm 3 kan du:
- Kan lagra och hantera Helm-diagram i lagringsplatser i ett Azure-containerregister
- Lagra Helm-diagram i registret som OCI-artefakter. Azure Container Registry har GA-stöd för OCI-artefakter, inklusive Helm-diagram.
- Autentisera med registret med hjälp av
helm registry login
kommandot elleraz acr login
. - Använd
helm
kommandon för att skicka, hämta och hantera Helm-scheman i ett register. - Använd
helm install
för att installera diagram till ett Kubernetes-kluster från registret.
Funktionalitetssupport
Azure Container Registry stöder specifika hanteringsfunktioner för Helm-diagram beroende på om du använder Helm 3 (aktuell) eller Helm 2 (inaktuell).
Egenskap | Helm 2 | Helm 3 |
---|---|---|
Hantera diagram med hjälp av az acr helm kommandon |
✔️ | |
Lagra diagram som OCI-artefakter | ✔️ | |
Hantera diagram med hjälp av az acr repository kommandon och bladet Lagringsplatser i Azure-portalen |
✔️ |
Diagramversionskompatibilitet
Följande Helm-diagramversioner kan lagras i Azure Container Registry och kan installeras av Helm 2- och Helm 3-klienterna.
Utgåva | Helm 2 | Helm 3 |
---|---|---|
apiVersion v1 | ✔️ | ✔️ |
apiVersion v2 | ✔️ |
Förutsättningar
Följande resurser behövs för scenariot i den här artikeln:
- Ett Azure-containerregister i din Azure-prenumeration. Om det behövs skapar du ett register med hjälp av Azure-portalen eller Azure CLI.
-
Helm-klientversion 3.7 eller senare – Kör
helm version
för att hitta den aktuella versionen. Mer information om hur du installerar och uppgraderar Helm finns i Installera Helm. Om du uppgraderar från en tidigare version av Helm 3, gå igenom versionsanteckningarna. - Ett Kubernetes-kluster där du installerar ett Helm-diagram. Om det behövs kan du skapa ett AKS-kluster med hjälp av Azure CLI, använda Azure PowerShell eller använda Azure-portalen.
-
Azure CLI version 2.0.71 eller senare – Kör
az --version
för att hitta versionen. Om du behöver installera eller uppgradera, se Installera Azure CLI.
Konfigurera Helm-klienten
helm version
Använd kommandot för att kontrollera att du har installerat Helm 3:
helm version
Anmärkning
Den angivna versionen måste vara minst 3.8.0, eftersom OCI-stöd i tidigare versioner var experimentellt.
Ange följande miljövariabler för målregistret. ACR_NAME är registrets resursnamn. Om ACR-register-URL:en är myregistry.azurecr.io anger du ACR_NAME till myregistry
set ACR_NAME=<container-registry-name>
Skapa ett exempeldiagram
Skapa ett testdiagram med följande kommandon:
mkdir helmtest
cd helmtest
helm create hello-world
Som ett grundläggande exempel ändrar du katalogen till templates
mappen och tar först bort innehållet där:
cd hello-world/templates
rm -rf *
templates
Skapa en fil med namnet configmap.yaml
i mappen genom att köra följande kommando:
cat <<EOF > configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: hello-world-configmap
data:
myvalue: "Hello World"
EOF
Mer information om hur du skapar och kör det här exemplet finns i Komma igång i Helm Docs.
Spara diagrammet i det lokala arkivet
Ändra katalogen till underkatalogen hello-world
.
helm package
Kör sedan för att spara diagrammet i ett lokalt arkiv.
I följande exempel sparas diagrammet med namnet och versionen i Chart.yaml
.
cd ..
helm package .
Utdata ser ut som följande:
Successfully packaged chart and saved it to: /my/path/hello-world-0.1.0.tgz
Autentisera med registret
Kör helm registry login
för att autentisera med registret. Du kan skicka registerautentiseringsuppgifter som är lämpliga för ditt scenario, till exempel autentiseringsuppgifter för tjänstens huvudnamn, användaridentitet eller en token med lagringsplatsomfattning.
- Autentisera med Microsoft Entra service principal med behörigheter för att dra och skicka till registret.
- Om registret är aktiverat för Microsoft Entra-attributbaserad åtkomstkontroll (ABAC) för att hantera Microsoft Entra-baserade lagringsplatsbehörigheter måste du använda
Container Registry Repository Writer
rollen. Annars använder du den äldreAcrPush
rollen om registret inte är aktiverat för ABAC.
SERVICE_PRINCIPAL_NAME=<acr-helm-sp> ACR_REGISTRY_ID=$(az acr show --name $ACR_NAME --query id --output tsv) ROLE="Container Registry Repository Writer" # for ABAC-enabled registries. Otherwise use AcrPush for non-ABAC registries. PASSWORD=$(az ad sp create-for-rbac --name $SERVICE_PRINCIPAL_NAME \ --scopes $(az acr show --name $ACR_NAME --query id --output tsv) \ --role "$ROLE" \ --query "password" --output tsv) USER_NAME=$(az identity show -n $SERVICE_PRINCIPAL_NAME -g $RESOURCE_GROUP_NAME --subscription $SUBSCRIPTION_ID --query "clientId" -o tsv)
- Om registret är aktiverat för Microsoft Entra-attributbaserad åtkomstkontroll (ABAC) för att hantera Microsoft Entra-baserade lagringsplatsbehörigheter måste du använda
- Autentisera med din enskilda Microsoft Entra-identitet för att skicka och hämta Helm-diagram med hjälp av en AD-token.
USER_NAME="00000000-0000-0000-0000-000000000000" PASSWORD=$(az acr login --name $ACR_NAME --expose-token --output tsv --query accessToken)
- Autentisera med en lagringsplatsbegränsad token med icke-Entra-tokenbaserade behörigheter för lagringsplatsen.
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)
- Ange sedan autentiseringsuppgifterna till
helm registry login
.helm registry login $ACR_NAME.azurecr.io \ --username $USER_NAME \ --password $PASSWORD
Push-diagram till registret som OCI-artefakt
helm push
Kör kommandot i Helm 3 CLI för att skicka diagramarkivet till den fullständigt kvalificerade mållagringsplatsen. Avgränsa orden i diagramnamnen och använd endast gemener och siffror. I följande exempel är helm/hello-world
mållagringsplatsens namnområde , och diagrammet är taggat 0.1.0
:
helm push hello-world-0.1.0.tgz oci://$ACR_NAME.azurecr.io/helm
Efter en lyckad push ser utdata ut så här:
Pushed: <registry>.azurecr.io/helm/hello-world:0.1.0
digest: sha256:5899db028dcf96aeaabdadfa5899db02589b2899b025899b059db02
Lista diagram i arkivet
Precis som med bilder som lagras i ett Azure-containerregister kan du använda az acr repository-kommandon för att visa register som är värdar för dina diagram samt diagramtaggar och manifest.
Kör till exempel az acr repository show för att se egenskaperna för lagringsplatsen som du skapade i föregående steg:
az acr repository show \
--name $ACR_NAME \
--repository helm/hello-world
Utdata ser ut som följande:
{
"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
}
Kör kommandot az acr manifest list-metadata för att se information om diagrammet som lagras på lagringsplatsen. Till exempel:
az acr manifest list-metadata \
--registry $ACR_NAME \
--name helm/hello-world
Utdata, förkortade i det här exemplet, visar en configMediaType
av application/vnd.cncf.helm.config.v1+json
:
[
{
[...]
"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"
]
Installera Helm-diagram
Kör helm install
för att installera Helm-diagrammet som du skickade till registret. Diagramtaggen skickas med hjälp av parametern --version
. Ange ett versionsnamn, till exempel myhelmtest, eller skicka parametern --generate-name
. Till exempel:
helm install myhelmtest oci://$ACR_NAME.azurecr.io/helm/hello-world --version 0.1.0
Utdata efter lyckad diagraminstallation liknar:
NAME: myhelmtest
LAST DEPLOYED: Tue Oct 4 16:59:51 2021
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
Kör helm get manifest
-kommandot för att verifiera installationen.
helm get manifest myhelmtest
Kommandot returnerar YAML-data i mallfilen configmap.yaml
.
Kör helm uninstall
för att avinstallera diagramversionen i klustret:
helm uninstall myhelmtest
Hämta diagram till lokalt arkiv
Du kan också hämta ett diagram från containerregistret till ett lokalt arkiv med hjälp av helm pull
. Diagramtaggen skickas med hjälp av parametern --version
. Om det finns ett lokalt arkiv på den aktuella sökvägen skriver det här kommandot över det.
helm pull oci://$ACR_NAME.azurecr.io/helm/hello-world --version 0.1.0
Ta bort diagram från registret
Om du vill ta bort ett diagram från containerregistret använder du kommandot az acr repository delete . Kör följande kommando och bekräfta åtgärden när du uppmanas att göra det:
az acr repository delete --name $ACR_NAME --image helm/hello-world:0.1.0
Migrera registret för att lagra Helm OCI-artefakter
Om du tidigare har konfigurerat Ditt Azure-containerregister som en diagramlagringsplats med hjälp av Helm 2 och az acr helm
kommandona rekommenderar vi att du uppgraderar till Helm 3-klienten. Följ sedan de här stegen för att lagra diagrammen som OCI-artefakter i registret.
Viktigt!
- När du har slutfört migreringen från ett Helm 2-format (index.yaml-baserat) diagramlagringsplats till OCI-artefaktlagringsplatser använder du Helm CLI och
az acr repository
kommandon för att hantera diagrammen. Se föregående avsnitt i den här artikeln. - Helm OCI-artefaktlagringsplatserna kan inte identifieras med hjälp av Helm-kommandon som
helm search
ochhelm repo list
. Mer information om Helm-kommandon som används för att lagra diagram som OCI-artefakter finns i Helm-dokumentationen.
Aktivera OCI-stöd (aktiverat som standard i Helm v3.8.0)
Kontrollera att du använder Helm 3-klienten:
helm version
Om du använder Helm v3.8.0 eller senare är detta aktiverat som standard. Om du använder en lägre version kan du aktivera OCI-stöd för att ange miljövariabeln:
export HELM_EXPERIMENTAL_OCI=1
Visa en lista över aktuella diagram
Lista de diagram som för närvarande lagras i registret, här med namnet myregistry:
helm search repo myregistry
Utdata visar diagrammen och diagramversionerna:
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...
[...]
Lagra diagramarkiv lokalt
För varje diagram på lagringsplatsen hämtar du diagramarkivet lokalt och noterar filnamnet:
helm pull myregisry/ingress-nginx
ls *.tgz
Ett lokalt diagramarkiv som ingress-nginx-3.20.1.tgz
skapas.
Skicka diagram som OCI-artefakter till registret
Logga in på registret:
az acr login --name $ACR_NAME
Skicka varje diagramarkiv till registret. Exempel:
helm push ingress-nginx-3.20.1.tgz oci://$ACR_NAME.azurecr.io/helm
När du har push-överfört ett diagram bekräftar du att det lagras i registret:
az acr repository list --name $ACR_NAME
Efter att ha skjutit över alla diagram kan du valfritt ta bort Helm 2-diagramförrådet från registret. Detta minskar lagringen i registret:
helm repo remove $ACR_NAME
Nästa steg
- Mer information om hur du skapar och distribuerar Helm-diagram finns i Utveckla Helm-diagram.
- Läs mer om att installera program med Helm i Azure Kubernetes Service (AKS).
- Helm-diagram kan användas som en del av containerbyggprocessen. Mer information finns i Använda Azure Container Registry Tasks.