Nasdílení a vyžádání chartů Helm do registru kontejnerů Azure
Pokud chcete rychle spravovat a nasazovat aplikace pro Kubernetes, můžete použít opensourcový správce balíčků Helm. S Helmem se balíčky aplikací definují jako grafy, které se shromažďují a ukládají v úložišti chartů Helm.
Tento článek ukazuje, jak hostovat úložiště chartů Helm v registru kontejnerů Azure pomocí příkazů Helm 3 a ukládání grafů jako artefaktů OCI. V mnoha scénářích byste vytvořili a nahráli vlastní grafy pro aplikace, které vyvíjíte. Další informace o tom, jak vytvořit vlastní charty Helm, najdete v Příručce pro vývojáře šablon grafů. Můžete také uložit existující chart Helm z jiného úložiště Helm.
Poznámka:
Tento článek byl aktualizován příkazy Helm 3. Helm 3.7 zahrnuje změny příkazů Rozhraní příkazového řádku Helm a podporu OCI zavedenou ve starších verzích Helmu 3. helm
Návrhem se aktualizuje verze. Doporučujeme použít verzi 3.7.2 nebo novější.
Důležité
- V listopadu 2020 dosáhl Helm 2 konce životnosti. Od 30. března 2025 už Azure Container Registry nebude podporovat Helm 2. Proto budou vyřazeny i starší funkce "úložiště Helm". Doporučujeme přejít na Helm 3 okamžitě.
- Od 21. ledna 2025 se příkaz rozhraní příkazového řádku az acr helm push vyřadí, aby se zabránilo odesílání nových grafů Helm do starších úložišť Helm.
- Od 30. března 2025 se skupina příkazů rozhraní příkazového řádku az acr helm vyřadí a ukončí všechny starší funkce úložiště Helm ve službě Azure Container Registry.
- Všechny grafy Helmu, které nejsou uložené jako artefakt OCI, se ze služby Azure Container Registry odstraní 30. března 2025.
- Tady se dozvíte, jak najít všechny grafy Helm uložené v úložišti Helm: az acr helm list. Pokud je graf Helm, který používáte, uvedený, je uložený ve starší verzi úložiště Helm a je ohrožen odstraněním.
Helm 3 nebo Helm 2?
K ukládání, správě a instalaci chartů Helm se používají příkazy v rozhraní příkazového řádku Helm. Hlavní verze Helmu zahrnují Helm 3 a Helm 2. Podrobnosti o rozdílech verzí najdete v nejčastějších dotazech k verzi.
Helm 3 by se měl použít k hostování chartů Helm ve službě Azure Container Registry. S Helmem 3:
- Může ukládat a spravovat charty Helm v úložištích v registru kontejnerů Azure.
- Ukládejte grafy Helmu do registru jako artefakty OCI. Azure Container Registry poskytuje podporu ga pro artefakty OCI, včetně chartů Helm.
- Pomocí příkazu nebo
az acr login
ověřeníhelm registry login
pomocí registru. - Použití
helm
příkazů k nasdílení, vyžádání a správě chartů Helm v registru - Slouží
helm install
k instalaci grafů do clusteru Kubernetes z registru.
Podpora funkcí
Azure Container Registry podporuje specifické funkce správy chartů Helm v závislosti na tom, jestli používáte Helm 3 (aktuální) nebo Helm 2 (zastaralé).
Funkce | Helm 2 | Helm 3 |
---|---|---|
Správa grafů pomocí az acr helm příkazů |
✔️ | |
Ukládání grafů jako artefaktů OCI | ✔️ | |
Správa grafů pomocí az acr repository příkazů a okna Úložiště na webu Azure Portal |
✔️ |
Kompatibilita verzí grafu
Následující verze chartu Helm je možné uložit ve službě Azure Container Registry a nainstalovat je můžou klienti Helm 2 a Helm 3.
Verze | Helm 2 | Helm 3 |
---|---|---|
apiVersion v1 | ✔️ | ✔️ |
apiVersion v2 | ✔️ |
Migrace z Helmu 2 na Helm 3
Pokud jste dříve uložili a nasadili grafy pomocí Helmu 2 a služby Azure Container Registry, doporučujeme migrovat na Helm 3. Přečtěte si:
- Migrace Helmu 2 na 3 v dokumentaci Helmu
- Migrace registru pro ukládání artefaktů Helm OCI, dále v tomto článku
Požadavky
Pro scénář v tomto článku jsou potřeba následující zdroje informací:
- Registr kontejnerů Azure ve vašem předplatném Azure. V případě potřeby vytvořte registr pomocí webu Azure Portal nebo Azure CLI.
- Klient Helm verze 3.7 nebo novější – Spuštěním
helm version
vyhledejte aktuální verzi. Další informace o instalaci a upgradu Helmu najdete v tématu Instalace Nástroje Helm. Pokud upgradujete ze starší verze Helmu 3, projděte si poznámky k verzi. - Cluster Kubernetes, ve kterém nainstalujete chart Helm. V případě potřeby vytvořte cluster AKS pomocí Azure CLI, azure PowerShellu nebo webu Azure Portal.
- Azure CLI verze 2.0.71 nebo novější – Verzi vyhledejte spuštěním spuštění
az --version
. Pokud potřebujete instalaci nebo upgrade, přečtěte si téma Instalace Azure CLI.
Nastavení klienta Helm
helm version
Pomocí příkazu ověřte, že máte nainstalovaný Helm 3:
helm version
Poznámka:
Uvedená verze musí být alespoň 3.8.0, protože podpora OCI v dřívějších verzích byla experimentální.
Nastavte následující proměnné prostředí pro cílový registr. ACR_NAME je název prostředku registru. Pokud je adresa URL registru ACR myregistry.azurecr.io, nastavte ACR_NAME na myregistry.
ACR_NAME=<container-registry-name>
Vytvoření ukázkového grafu
Pomocí následujících příkazů vytvořte testovací graf:
mkdir helmtest
cd helmtest
helm create hello-world
Jako základní příklad změňte adresář na templates
složku a nejprve odstraňte jeho obsah:
cd hello-world/templates
rm -rf *
templates
Ve složce vytvořte soubor s názvem configmap.yaml
spuštěním následujícího příkazu:
cat <<EOF > configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: hello-world-configmap
data:
myvalue: "Hello World"
EOF
Další informace o vytváření a spouštění tohoto příkladu najdete v tématu Začínáme v dokumentaci Helmu.
Uložení grafu do místního archivu
Změňte adresář na hello-world
podadresář. Pak spuštěním příkazu helm package
uložte graf do místního archivu.
V následujícím příkladu je graf uložen s názvem a verzí v Chart.yaml
.
cd ..
helm package .
Výstup se podobá tomuto:
Successfully packaged chart and saved it to: /my/path/hello-world-0.1.0.tgz
Ověřování pomocí registru
Spusťte helm registry login
ověření pomocí registru. Můžete předat přihlašovací údaje registru vhodné pro váš scénář, jako jsou přihlašovací údaje instančního objektu, identita uživatele nebo token s oborem úložiště.
- Ověřte se pomocí instančního objektu Microsoft Entra s oprávněními pro vyžádání obsahu a nabízení (role AcrPush) do registru.
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)
- Ověřte se pomocí své individuální identity Microsoft Entra a nasdílejte grafy Helm a stáhněte je pomocí tokenu AD.
USER_NAME="00000000-0000-0000-0000-000000000000" PASSWORD=$(az acr login --name $ACR_NAME --expose-token --output tsv --query accessToken)
- Ověřte se pomocí tokenu s vymezeným úložištěm (Preview).
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)
- Pak zadejte přihlašovací údaje do
helm registry login
.helm registry login $ACR_NAME.azurecr.io \ --username $USER_NAME \ --password $PASSWORD
Nasdílení grafu do registru jako artefaktU OCI
Spuštěním helm push
příkazu v rozhraní příkazového řádku Helm 3 odešlete archiv grafu do plně kvalifikovaného cílového úložiště. Slova v názvech grafu oddělte a používejte jenom malá písmena a číslice. V následujícím příkladu je helm/hello-world
obor názvů cílového úložiště a graf je označen 0.1.0
:
helm push hello-world-0.1.0.tgz oci://$ACR_NAME.azurecr.io/helm
Po úspěšném nasdílení změn je výstup podobný následujícímu:
Pushed: <registry>.azurecr.io/helm/hello-world:0.1.0
digest: sha256:5899db028dcf96aeaabdadfa5899db02589b2899b025899b059db02
Výpis grafů v úložišti
Stejně jako u imagí uložených v registru kontejnerů Azure můžete pomocí příkazů az acr repository zobrazit úložiště hostující vaše grafy a značky a manifesty grafů.
Spuštěním příkazu az acr repository například zobrazte vlastnosti úložiště, které jste vytvořili v předchozím kroku:
az acr repository show \
--name $ACR_NAME \
--repository helm/hello-world
Výstup se podobá tomuto:
{
"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
}
Spuštěním příkazu az acr manifest list-metadata zobrazte podrobnosti grafu uloženého v úložišti. Příklad:
az acr manifest list-metadata \
--registry $ACR_NAME \
--name helm/hello-world
Výstup, zkrácený v tomto příkladu, ukazujeconfigMediaType
: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"
]
Instalace chartu Helm
Spusťte helm install
instalaci chartu Helm, který jste odeslali do registru. Značka grafu se předává pomocí parametru --version
. Zadejte název verze, například myhelmtest, nebo předejte --generate-name
parametr. Příklad:
helm install myhelmtest oci://$ACR_NAME.azurecr.io/helm/hello-world --version 0.1.0
Výstup po úspěšné instalaci grafu je podobný následujícímu:
NAME: myhelmtest
LAST DEPLOYED: Tue Oct 4 16:59:51 2021
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
Instalaci ověříte spuštěním helm get manifest
příkazu.
helm get manifest myhelmtest
Příkaz vrátí data YAML v configmap.yaml
souboru šablony.
Spusťte helm uninstall
odinstalaci verze grafu v clusteru:
helm uninstall myhelmtest
Pull chart to local archive
Volitelně můžete načíst graf z registru kontejneru do místního archivu pomocí helm pull
. Značka grafu se předává pomocí parametru --version
. Pokud v aktuální cestě existuje místní archiv, tento příkaz ho přepíše.
helm pull oci://$ACR_NAME.azurecr.io/helm/hello-world --version 0.1.0
Odstranění grafu z registru
Pokud chcete odstranit graf z registru kontejneru, použijte příkaz az acr repository delete . Po zobrazení výzvy spusťte následující příkaz a potvrďte operaci:
az acr repository delete --name $ACR_NAME --image helm/hello-world:0.1.0
Migrace registru pro ukládání artefaktů Helm OCI
Pokud jste dříve nastavili registr kontejneru Azure jako úložiště chartů pomocí Nástroje Helm 2 a az acr helm
příkazů, doporučujeme upgradovat na klienta Helm 3. Pak podle těchto kroků uložte grafy jako artefakty OCI ve vašem registru.
Důležité
- Po dokončení migrace z úložiště chartů typu Helm 2 (index.yaml) do úložišť artefaktů OCI použijte ke správě grafů rozhraní příkazového řádku Helm a
az acr repository
příkazů. Viz předchozí části tohoto článku. - Úložiště artefaktů Helm OCI nejsou zjistitelná pomocí příkazů Helmu, jako
helm search
jsou například ahelm repo list
. Další informace o příkazech Helmu sloužících k ukládání grafů jako artefaktů OCI najdete v dokumentaci Helmu.
Povolení podpory OCI (ve výchozím nastavení v Helmu v3.8.0)
Ujistěte se, že používáte klienta Helm 3:
helm version
Pokud používáte Helm v3.8.0 nebo novější, je tato možnost ve výchozím nastavení povolená. Pokud používáte nižší verzi, můžete povolit nastavení proměnné prostředí s podporou OCI:
export HELM_EXPERIMENTAL_OCI=1
Výpis aktuálních grafů
Zobrazí seznam grafů aktuálně uložených v registru s názvem myregistry:
helm search repo myregistry
Výstup zobrazuje grafy a verze grafů:
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...
[...]
Místní archivace pull chartů
Pro každý graf v úložišti stáhněte archiv grafu místně a poznamenejte si název souboru:
helm pull myregisry/ingress-nginx
ls *.tgz
Místní archiv grafu, jako ingress-nginx-3.20.1.tgz
je například vytvoření.
Nabízení grafů jako artefaktů OCI do registru
Přihlaste se k registru:
az acr login --name $ACR_NAME
Nasdílení archivu jednotlivých grafů do registru Příklad:
helm push ingress-nginx-3.20.1.tgz oci://$ACR_NAME.azurecr.io/helm
Po nasdílením grafu ověřte, že je uložený v registru:
az acr repository list --name $ACR_NAME
Po nasdílením všech grafů volitelně odeberte úložiště chartů Helm 2 z registru. Tím se sníží úložiště ve vašem registru:
helm repo remove $ACR_NAME
Další kroky
- Další informace o tom, jak vytvářet a nasazovat charty Helm, najdete v tématu Vývoj chartů Helm.
- Přečtěte si další informace o instalaci aplikací s Helmem ve službě Azure Kubernetes Service (AKS).
- Charty Helm je možné použít jako součást procesu sestavení kontejneru. Další informace najdete v tématu Použití úloh služby Azure Container Registry.