Helm-diagramok leküldése és lekérése egy Azure-tárolóregisztrációs adatbázisba

A Kubernetes-alkalmazások gyors kezeléséhez és üzembe helyezéséhez használhatja a nyílt forráskódú Helm-csomagkezelőt. A Helm használatával az alkalmazáscsomagok diagramokként vannak definiálva, amelyeket egy Helm-diagramtárházban gyűjtünk össze és tárolunk.

Ez a cikk bemutatja, hogyan üzemeltethet Helm-diagramtárakat egy Azure-tárolóregisztrációs adatbázisban Helm 3-parancsokkal, és hogyan tárolhat diagramokat OCI-összetevőkként. Sok esetben saját diagramokat hozhat létre és tölthet fel a fejlesztendő alkalmazásokhoz. A saját Helm-diagramok készítésével kapcsolatos további információkért tekintse meg a diagramsablon fejlesztői útmutatóját. Egy meglévő Helm-diagramot egy másik Helm-adattárból is tárolhat.

Fontos

Ez a cikk Helm 3-parancsokkal lett frissítve. A Helm 3.7 tartalmazza a Helm CLI-parancsok módosításait és a Helm 3 korábbi verzióiban bevezetett OCI-támogatást. A tervezés helm előrehalad a verzióval. Javasoljuk, hogy a 3.7.2-s vagy újabb verziót használja.

Helm 3 vagy Helm 2?

A Helm-diagramok tárolásához, kezeléséhez és telepítéséhez parancsokat kell használnia a Helm CLI-ben. A Helm főbb kiadásai közé tartozik a Helm 3 és a Helm 2. A verzióeltérésekkel kapcsolatos részletekért tekintse meg a verzióval kapcsolatos gyakori kérdéseket.

A Helm 3 használatával Helm-diagramokat kell üzemeltetni az Azure Container Registryben. A Helm 3-at a következőkkel használhatja:

  • Helm-diagramokat tárolhat és kezelhet adattárakban egy Azure-tárolóregisztrációs adatbázisban
  • A Helm-diagramok tárolása a beállításjegyzékben OCI-összetevőkként. Az Azure Container Registry ga-támogatást nyújt az OCI-összetevőkhöz, beleértve a Helm-diagramokat is.
  • Hitelesítés a beállításjegyzékkel a vagy az acr login parancs helm registry login használatával.
  • Parancsok használata helm Helm-diagramok leküldéséhez, lekéréséhez és kezeléséhez egy beállításjegyzékben
  • Diagramok helm install telepítése kubernetes-fürtökre a beállításjegyzékből.

Szolgáltatások támogatása

Az Azure Container Registry bizonyos Helm-diagramkezelési funkciókat támogat attól függően, hogy a Helm 3 (jelenlegi) vagy a Helm 2 (elavult) verziót használja-e.

Szolgáltatás Helm 2 Helm 3
Diagramok kezelése parancsokkal az acr helm ✔️
Diagramok tárolása OCI-összetevőkként ✔️
Diagramok kezelése parancsokkal az acr repository és az Adattárak panellel az Azure Portalon ✔️

Megjegyzés:

A Helm 3-as verziójától az az acr helm-parancsok elavultak a Helm 2-ügyfélhez. A parancs eltávolítását megelőzően legalább 3 hónapos értesítést küldünk.

A diagram verziókompatibilitása

Az alábbi Helm-diagramverziók tárolhatók az Azure Container Registryben, és a Helm 2 és a Helm 3 ügyfelek telepíthetők.

Verzió Helm 2 Helm 3
apiVersion v1 ✔️ ✔️
apiVersion v2 ✔️

Migrálás a Helm 2-ről a Helm 3-ra

Ha korábban a Helm 2 és az Azure Container Registry használatával tárolt és üzembe helyezett diagramokat, javasoljuk, hogy migráljon a Helm 3-ba. See:

Előfeltételek

A cikk forgatókönyvéhez a következő erőforrásokra van szükség:

  • Azure-tárolóregisztrációs adatbázis az Azure-előfizetésben. Szükség esetén hozzon létre egy beállításjegyzéket az Azure Portal vagy az Azure CLI használatával.
  • Helm-ügyfél 3.7-es vagy újabb verziója – Futtassa helm version az aktuális verzió megkereséséhez. A Helm telepítésével és frissítésével kapcsolatos további információkért lásd a Helm telepítését ismertető témakört. Ha a Helm 3 korábbi verziójáról frissít, tekintse át a kibocsátási megjegyzéseket.
  • Egy Kubernetes-fürt , ahol Helm-diagramot fog telepíteni. Szükség esetén hozzon létre egy AKS-fürtöt az Azure CLI,az Azure PowerShell vagy az Azure Portal használatával.
  • Azure CLI 2.0.71-es vagy újabb verzió – Futtassa az --version a verzió megkereséséhez. Ha telepíteni vagy frissíteni szeretne: Az Azure CLI telepítése.

Helm-ügyfél beállítása

helm version A parancs használatával ellenőrizze, hogy telepítette-e a Helm 3-at:

helm version

Megjegyzés:

A jelzett verziónak legalább 3.8.0-snak kell lennie, mivel a korábbi verziók OCI-támogatása kísérleti volt.

Állítsa be a következő környezeti változókat a célregisztrációs adatbázishoz. A ACR_NAME a beállításjegyzék erőforrásának neve. Ha az ACR-beállításjegyzék URL-címe myregistry.azurecr.io, állítsa a ACR_NAME a myregistry értékre

ACR_NAME=<container-registry-name>

Mintadiagram létrehozása

Hozzon létre egy tesztdiagramot a következő parancsokkal:

mkdir helmtest

cd helmtest
helm create hello-world

Alapszintű példaként módosítsa a könyvtárat a templates mappára, és először törölje ott a tartalmat:

cd hello-world/templates
rm -rf *

templates A mappában hozzon létre egy , nevű configmap.yamlfájlt a következő parancs futtatásával:

cat <<EOF > configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: hello-world-configmap
data:
  myvalue: "Hello World"
EOF

A példa létrehozásáról és futtatásáról további információt a Helm Docs első lépései című témakörben talál.

Diagram mentése helyi archívumba

Módosítsa a könyvtárat az hello-world alkönyvtárra. Ezután futtassa helm package a diagram helyi archívumba mentéséhez.

Az alábbi példában a diagramot a program a következő névvel és verzióval Chart.yamlmenti:

cd ..
helm package .

A kimenet a következőhöz hasonló:

Successfully packaged chart and saved it to: /my/path/hello-world-0.1.0.tgz

Hitelesítés a beállításjegyzékkel

Futtatás helm registry login a beállításjegyzékkel való hitelesítéshez. A beállításjegyzékben a forgatókönyvnek megfelelő hitelesítő adatokat adhat át, például a szolgáltatásnév hitelesítő adatait, a felhasználói identitást vagy egy tárház hatókörű jogkivonatot.

  • Hitelesítés a Microsoft Entra szolgáltatásnévvel lekéréses és leküldéses engedélyekkel (AcrPush szerepkörrel) a beállításjegyzékbe.
    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)
    
  • Hitelesítse magát az egyéni Microsoft Entra-identitással a Helm-diagramok leküldéséhez és lekéréséhez egy AD-jogkivonat használatával.
    USER_NAME="00000000-0000-0000-0000-000000000000"
    PASSWORD=$(az acr login --name $ACR_NAME --expose-token --output tsv --query accessToken)
    
  • Hitelesítés tárház hatókörű jogkivonattal (előzetes verzió).
    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)
    
  • Ezután adja meg a hitelesítő adatokat.helm registry login
    helm registry login $ACR_NAME.azurecr.io \
      --username $USER_NAME \
      --password $PASSWORD
    

Diagram leküldése a beállításjegyzékbe OCI-összetevőként

Futtassa a helm push Helm 3 parancssori felületének parancsát a diagramarchívum teljes körűen minősített céladattárba való leküldéséhez. Különítse el a diagramnevekben szereplő szavakat, és csak kisbetűket és számokat használjon. Az alábbi példában a céladattár névtere a helm/hello-worldkövetkező, a diagram pedig címkézett 0.1.0:

helm push hello-world-0.1.0.tgz oci://$ACR_NAME.azurecr.io/helm

Sikeres leküldés után a kimenet a következőhöz hasonló:

Pushed: <registry>.azurecr.io/helm/hello-world:0.1.0
digest: sha256:5899db028dcf96aeaabdadfa5899db02589b2899b025899b059db02

Diagramok listázása az adattárban

Az Azure-tárolóregisztrációs adatbázisban tárolt képekhez hasonlóan az az acr-adattár parancsaival is megjelenítheti a diagramokat, valamint a diagramcímkéket és -jegyzékeket tároló adattárakat.

Futtassa például az az acr-adattár showt az előző lépésben létrehozott adattár tulajdonságainak megtekintéséhez:

az acr repository show \
  --name $ACR_NAME \
  --repository helm/hello-world

A kimenet a következőhöz hasonló:

{
  "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
}

Futtassa az az acr manifest list-metadata parancsot az adattárban tárolt diagram részleteinek megtekintéséhez. Például:

az acr manifest list-metadata \
  --registry $ACR_NAME \
  --name helm/hello-world

Az ebben a példában rövidített kimenet a következőt configMediaTypeapplication/vnd.cncf.helm.config.v1+jsonjeleníti meg:

[
  {
    [...]
    "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"
    ]

Helm-diagram telepítése

Futtassa helm install a beállításjegyzékbe leküldött Helm-diagram telepítését. A rendszer a paraméterrel adja át a diagramcímkét --version . Adjon meg egy kiadási nevet, például a myhelmtestet, vagy adja meg a paramétert --generate-name . Például:

helm install myhelmtest oci://$ACR_NAME.azurecr.io/helm/hello-world --version 0.1.0

A sikeres diagramtelepítés utáni kimenet a következőhöz hasonló:

NAME: myhelmtest
LAST DEPLOYED: Tue Oct  4 16:59:51 2021
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None

A telepítés ellenőrzéséhez futtassa a helm get manifest parancsot.

helm get manifest myhelmtest

A parancs a sablonfájl YAML-adatait configmap.yaml adja vissza.

Futtassa helm uninstall a diagram kiadásának eltávolításához a fürtön:

helm uninstall myhelmtest

Diagram lekérése a helyi archívumba

Igény szerint lekérhet egy diagramot a tárolóregisztrációs adatbázisból egy helyi archívumba a használatával helm pull. A rendszer a paraméterrel adja át a diagramcímkét --version . Ha az aktuális útvonalon helyi archívum található, ez a parancs felülírja azt.

helm pull oci://$ACR_NAME.azurecr.io/helm/hello-world --version 0.1.0

Diagram törlése a beállításjegyzékből

Ha törölni szeretne egy diagramot a tárolóregisztrációs adatbázisból, használja az az acr-adattár törlési parancsát. Futtassa a következő parancsot, és erősítse meg a műveletet, amikor a rendszer kéri:

az acr repository delete --name $ACR_NAME --image helm/hello-world:0.1.0

A beállításjegyzék migrálása Helm OCI-összetevők tárolására

Ha korábban diagramtárként állította be az Azure Container Registryt a Helm 2 és a az acr helm parancsok használatával, javasoljuk, hogy frissítsen a Helm 3-ügyfélre. Ezután kövesse az alábbi lépéseket a diagramok OCI-összetevőkként való tárolásához a beállításjegyzékben.

Fontos

  • Miután elvégezte a Helm 2-stílusú (index.yaml-alapú) diagramtárakból OCI-összetevők adattáraiba való migrálást, a Helm CLI-vel és az acr repository a parancsokkal kezelheti a diagramokat. Lásd a cikk korábbi szakaszait.
  • A Helm OCI-összetevő-adattárak nem felderíthetők Helm-parancsokkal, például helm search és helm repo list. A diagramok OCI-összetevőkként való tárolására használt Helm-parancsokról a Helm dokumentációjában talál további információt.

OCI-támogatás engedélyezése (alapértelmezés szerint engedélyezve a Helm 3.8.0-s verzióban)

Győződjön meg arról, hogy a Helm 3-ügyfelet használja:

helm version

Ha a Helm 3.8.0-s vagy újabb verzióját használja, ez alapértelmezés szerint engedélyezve van. Ha alacsonyabb verziót használ, engedélyezheti az OCI támogatását a környezeti változó beállításához:

export HELM_EXPERIMENTAL_OCI=1

Aktuális diagramok listázása

Sorolja fel a beállításjegyzékben jelenleg tárolt diagramokat, itt a myregistry nevet:

helm search repo myregistry

A kimenet a diagramokat és a diagramverziókat jeleníti meg:

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...
[...]

Helyi lekéréses diagramarchívumok

Az adattár minden diagramjához húzza le helyben a diagramarchívumot, és jegyezze fel a fájlnevet:

helm pull myregisry/ingress-nginx
ls *.tgz

Létrejön egy helyi diagramarchívum, például ingress-nginx-3.20.1.tgz .

Diagramok leküldése OCI-összetevőkként a beállításjegyzékbe

Jelentkezzen be a beállításjegyzékbe:

az acr login --name $ACR_NAME

Minden diagramarchívum leküldése a beállításjegyzékbe. Példa:

helm push ingress-nginx-3.20.1.tgz oci://$ACR_NAME.azurecr.io/helm

A diagramok leküldése után győződjön meg arról, hogy a beállításjegyzékben van tárolva:

az acr repository list --name $ACR_NAME

Az összes diagram leküldése után szükség esetén távolítsa el a Helm 2 stílusú diagramtárházat a beállításjegyzékből. Ezzel csökkenti a tárolóhelyet a beállításjegyzékben:

helm repo remove $ACR_NAME

Következő lépések

  • A Helm-diagramok létrehozásáról és üzembe helyezéséről további információt a Helm-diagramok fejlesztése című témakörben talál.
  • További információ az alkalmazások Helmrel való telepítéséről az Azure Kubernetes Service-ben (AKS).
  • A Helm-diagramok a tároló buildelési folyamatának részeként használhatók. További információ: Az Azure Container Registry-feladatok használata.