Nabízení a stažení grafů Helm do registru kontejneru Azure
Pokud chcete rychle spravovat a nasazovat aplikace pro Kubernetes, můžete použít open source 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ě grafů Helm v registru kontejnerů Azure pomocí příkazů Helm 3 a ukládání grafů jako artefaktů OCI. V mnoha scénářích byste sestavovat a nahrávat vlastní grafy pro aplikace, které vyvíjíte. Další informace o tom, jak vytvářet vlastní charty Helm, najdete v příručce pro vývojáře šablon chartů. Můžete také uložit existující chart Helm z jiného úložiště Helm.
Důležité
Tento článek se od verze 3.7.1 aktualizoval o příkazy Helm 3. Helm 3.7.1 obsahuje změny příkazů Helm CLI a podporu OCI představené v dřívějších verzích Helmu 3.
Helm 3 nebo Helm 2?
K ukládání, správě a instalaci grafů Helm se používají příkazy v rozhraní příkazového řádku Helm. Mezi hlavní verze Helmu patří 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í grafů Helm v Azure Container Registry. S Helmem 3:
- Může ukládat a spravovat grafy Helm v úložištích v registru kontejnerů Azure.
- Uložte do registru grafy Helm jako artefakty OCI. Azure Container Registry poskytuje podporu ga pro artefakty OCI, včetně diagramů Helm.
- Ověřte se v registru pomocí
helm registry loginpříkazuaz acr loginnebo . - Použití
helmpříkazů k nabízení, stažení a správě grafů Helm v registru - Slouží
helm installk instalaci grafů do clusteru Kubernetes z registru.
Podpora funkcí
Azure Container Registry podporuje konkrétní 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í příkazů a okna Úložiště az acr repository v 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 zobrazí oznámení s předstihem minimálně na 3 měsíce.
Kompatibilita verzí chartů
Následující verze chartu Helm mohou být uloženy v Azure Container Registry a instalovat je 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 Azure Container Registry, doporučujeme migrovat na Helm 3. Přečtěte si:
- Migrace Helmu 2 na 3 v dokumentaci k Helmu
- Migrace registru pro uložení artefaktů Helm OCIdá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í Azure Portal nebo Azure CLI.
- Klient Helm verze 3.7.1 nebo novější – Spuštěním
helm versionvyhledejte aktuální verzi. Další informace o tom, jak nainstalovat a upgradovat Helm, najdete v tématu Instalace Nástroje Helm. Pokud upgradujete ze starší verze Nástroje Helm 3, prohlédněte si poznámky k verzi. - Cluster Kubernetes, kde nainstalujete chart Helm. V případě potřeby vytvořte cluster Azure Kubernetes Service .
- Azure CLI verze 2.0.71 nebo novější – Verzi
az --versionzjistíte spuštěním . Pokud potřebujete instalaci nebo upgrade, přečtěte si téma Instalace Azure CLI.
Povolení podpory OCI
Pomocí příkazu helm version ověřte, že máte nainstalovaný Helm 3:
helm version
Pokud chcete povolit podporu OCI v klientovi Helm 3, nastavte následující proměnnou prostředí. V současné době je tato podpora experimentální a může se změnit.
export HELM_EXPERIMENTAL_OCI=1
Nastavte následující proměnné prostředí pro cílový registr. Název ACR_NAME registru 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
Vytvořte testovací graf pomocí následujících příkazů:
mkdir helmtest
cd helmtest
helm create hello-world
Jako základní příklad změňte adresář na složku a nejprve templates odstraňte jeho obsah:
cd hello-world/templates
rm -rf *
Spuštěním následujícího příkazu ve složce templates vytvořte soubor s názvem configmap.yaml :
cat <<EOF > configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: hello-world-configmap
data:
myvalue: "Hello World"
EOF
Další informace o vytvoření a spuštění tohoto příkladu najdete v Začínáme v dokumentu Helm.
Uložení grafu do místního archivu
Změňte adresář na hello-world podadresář . Potom spuštěním helm package uložte graf do místního archivu.
V následujícím příkladu se graf uloží s názvem a verzí v Chart.yaml souboru .
cd ..
helm package .
Výstup se podobá tomuto:
Successfully packaged chart and saved it to: /my/path/hello-world-0.1.0.tgz
Ověření pomocí registru
Spusťte helm registry login příkaz k ověření v registru. Můžete předat přihlašovací údaje registru vhodné pro váš scénář, jako jsou přihlašovací údaje objektu služby, identita uživatele nebo token v rámci úložiště.
- Ověřte se pomocí Azure Active Directory služby s oprávněními pro čtení a nabízení (role AcrPush) v 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 acrpull \ --query "password" --output tsv) USER_NAME=$(az ad sp list --display-name $SERVICE_PRINCIPAL_NAME --query "[].appId" --output tsv) - Ověřte se pomocí své individuální identity Azure AD, abyste pomocí tokenu AD nasadili a vyžádal grafy Helm.
USER_NAME="00000000-0000-0000-0000-000000000000" PASSWORD=$(az acr login --name $ACR_NAME --expose-token --output tsv --query accessToken) - Ověřování pomocí tokenu v oboru úložiště (Preview).
USER_NAME="helm-token" 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
Nabízení grafu do registru jako artefaktu OCI
Spuštěním příkazu helm push v rozhraní příkazového řádku Helm 3 nas nabízeného archivu chartu do plně kvalifikovaného cílového úložiště. V následujícím příkladu je cílový obor názvů úložiště helm/hello-world a chart je označený 0.1.0 :
helm push hello-world-0.1.0.tgz oci://$ACR_NAME.azurecr.io/helm
Po úspěšném nas nabízeném oznámení se výstup podobá 1:
Pushed: <registry>.azurecr.io/helm/hello-world:0.1.0
digest: sha256:5899db028dcf96aeaabdadfa5899db02589b2899b025899b059db02
Zobrazení seznamu grafů v úložišti
Stejně jako u imagí uložených v registru kontejnerů Azure můžete pomocí příkazů úložiště az acr zobrazit úložiště hostující vaše grafy a značky a manifesty chartů.
Například spuštěním příkazu az acr repository show 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 repository show-manifests zobrazte podrobnosti chartu uloženého v úložišti. Příklad:
az acr repository show-manifests \
--name $ACR_NAME \
--repository helm/hello-world --detail
Výstup, zkrácený v tomto příkladu, ukazuje configMediaType : 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
Spuštěním helm install spusťte a nainstalujte chart Helm, který jste nasadili do registru. Značka chartu se předává pomocí --version parametru . 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 chartu je podobný:
NAME: myhelmtest
LAST DEPLOYED: Tue Oct 4 16:59:51 2021
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
Pokud chcete instalaci ověřit, spusťte helm get manifest příkaz .
helm get manifest myhelmtest
Příkaz vrátí data YAML v souboru configmap.yaml šablony.
Spuštěním helm uninstall odinstalujte verzi chartu v clusteru:
helm uninstall myhelmtest
Pull chart to local archive (Vyžádat graf do místního archivu)
Volitelně můžete vyžádat graf z registru kontejneru do místního archivu pomocí helm pull . Značka chartu se předává pomocí --version parametru . 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 chart z registru kontejneru, použijte příkaz az acr repository delete. Spusťte následující příkaz a po zobrazení výzvy operaci potvrďte:
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 příkazů , doporučujeme upgradovat na az acr helm klienta Helm 3. Pak postupujte podle těchto kroků a uložte grafy jako artefakty OCI do registru.
Důležité
- Po dokončení migrace z úložiště chartů ve stylu Helm 2 (založeného na index.yaml) do úložišť artefaktů OCI použijte ke správě grafů rozhraní Příkazového řádku Helm a
az acr repositorypříkazy. Viz předchozí části tohoto článku. - Úložiště artefaktů Helm OCI nelze zjistit pomocí příkazů Helm, jako jsou a
helm searchhelm repo list. Další informace o příkazech Helm používaných k ukládání grafů jako artefaktů OCI najdete v dokumentaci k Nástroji Helm.
Povolení podpory OCI
Ujistěte se, že používáte klienta Helm 3:
helm version
Povolte podporu OCI v klientovi Helm 3. V současné době je tato podpora experimentální a může se změnit.
export HELM_EXPERIMENTAL_OCI=1
Zobrazení seznamu aktuálních grafů
Vypište grafy aktuálně uložené 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í archivy pull chartu
Pro každý graf v tomto úložiště si místně stáhněte archiv chartu a poznamenejte si název souboru:
helm pull myregisry/ingress-nginx
ls *.tgz
Vytvoří se místní archiv ingress-nginx-3.20.1.tgz chartů, například .
Nabízení grafů jako artefaktů OCI do registru
Přihlaste se k registru:
az acr login --name $ACR_NAME
Nasaujte každý archiv chartu do registru. Příklad:
helm push ingress-nginx-3.20.1.tgz oci://$ACR_NAME.azurecr.io/helm
Po nasazování chartu ověřte, že je uložený v registru:
az acr repository list --name $ACR_NAME
Po nasazování všech grafů volitelně odeberte z registru úložiště chartů ve stylu Helm 2. Tím se sníží úložiště v registru:
helm repo remove $ACR_NAME
Další kroky
- Další informace o vytváření a nasazování grafů Helm najdete v tématu Vývoj grafů Helm.
- Další informace o instalaci aplikací pomocí Helmu v Azure Kubernetes Service (AKS).
- Diagramy Helm je možné použít jako součást procesu sestavení kontejneru. Další informace najdete v tématu Použití Úlohy služby Azure Container Registry.