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.

Důležité

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. Návrh helm se posune vpřed s verzí. Doporučujeme použít verzi 3.7.2 nebo novější.

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 ✔️

Poznámka:

Od helmu 3 jsou příkazy az acr helm pro použití s klientem Helm 2 zastaralé. Před odebráním příkazu se poskytne oznámení minimálně o 3 měsících.

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:

Předpoklady

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.yamlspuš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-worldobor 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 a helm 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.