Helm-grafieken pushen en naar een Azure-containerregister halen
Als u snel toepassingen voor Kubernetes wilt beheren en implementeren, kunt u de opensource Helm-pakketbeheer gebruiken. Met Helm worden toepassingspakketten gedefinieerd als grafieken, die worden verzameld en opgeslagen in een Helm-grafiekopslagplaats.
In dit artikel wordt beschreven hoe u Helm-grafieken in een Azure-containerregister host met behulp van Helm 3-opdrachten en grafieken opslaat als OCI-artefacten. In veel scenario's zou u uw eigen grafieken maken en uploaden voor de toepassingen die u ontwikkelt. Zie de ontwikkelaarshandleiding voor grafieksjablonen voor meer informatie over het bouwen van uw eigen Helm-grafieken. U kunt ook een bestaande Helm-grafiek opslaan vanuit een andere Helm-repo.
Belangrijk
Dit artikel is bijgewerkt met Helm 3-opdrachten vanaf versie 3.7.1. Helm 3.7.1 bevat wijzigingen in Helm CLI-opdrachten en OCI-ondersteuning die zijn geïntroduceerd in eerdere versies van Helm 3.
Helm 3 of Helm 2?
Als u Helm-grafieken wilt opslaan, beheren en installeren, gebruikt u opdrachten in de Helm CLI. Belangrijke Helm-releases zijn Helm 3 en Helm 2. Zie de veelgestelde vragen over de versie voor meer informatie over de versieverschillen.
Helm 3 moet worden gebruikt voor het hosten van Helm-grafieken in Azure Container Registry. Met Helm 3 kunt u:
- Kan Helm-grafieken opslaan en beheren in opslagplaatsen in een Azure-containerregister
- Sla Helm-grafieken op in uw register als OCI-artefacten. Azure Container Registry biedt ga-ondersteuning voor OCI-artefacten, waaronder Helm-grafieken.
- Verifieert u met uw register met behulp van
helm registry loginde opdrachtaz acr loginof . - Opdrachten gebruiken om Helm-grafieken in een register te
helmpushen, op te halen en te beheren - Gebruik om grafieken vanuit het register te installeren op
helm installeen Kubernetes-cluster.
Functieondersteuning
Azure Container Registry biedt ondersteuning voor specifieke Beheerfuncties voor Helm-grafieken, afhankelijk van of u Helm 3 (huidig) of Helm 2 (afgeschaft) gebruikt.
| Functie | Helm 2 | Helm 3 |
|---|---|---|
Grafieken beheren met behulp van az acr helm opdrachten |
✔️ | |
| Grafieken opslaan als OCI-artefacten | ✔️ | |
Grafieken beheren az acr repository met behulp van opdrachten en de blade Opslagplaatsen in Azure Portal |
✔️ |
Notitie
Vanaf Helm 3 worden az acr helm-opdrachten voor gebruik met de Helm 2-client afgeschaft. De kennisgeving is minimaal drie maanden van tevoren beschikbaar voordat de opdracht wordt verwijderd.
Compatibiliteit van grafiekversies
De volgende Helm-grafiekversies kunnen worden opgeslagen in Azure Container Registry en kunnen worden geïnstalleerd door de Helm 2- en Helm 3-clients.
| Versie | Helm 2 | Helm 3 |
|---|---|---|
| apiVersion v1 | ✔️ | ✔️ |
| apiVersion v2 | ✔️ |
Migreren van Helm 2 naar Helm 3
Als u eerder grafieken hebt opgeslagen en geïmplementeerd met behulp van Helm 2 en Azure Container Registry, raden we u aan om te migreren naar Helm 3. Zie:
- Helm 2 naar 3 migreren in de Helm-documentatie.
- Migreert uw register om Helm OCI-artefacten op teslaan, verder in dit artikel
Vereisten
De volgende resources zijn nodig voor het scenario in dit artikel:
- Een Azure-containerregister in uw Azure-abonnement. Maak zo nodig een register met behulp van de Azure Portal of de Azure CLI.
- Helm-clientversie 3.7.1 of hoger: voer uit om
helm versionuw huidige versie te vinden. Zie Helm installeren voor meer informatie over het installeren en upgraden van Helm. Als u een upgrade van een eerdere versie van Helm 3 hebt uitgevoerd, bekijkt u de opmerkingen bij de release. - Een Kubernetes-cluster waarin u een Helm-grafiek installeert. Maak, indien nodig, een Azure Kubernetes Service cluster.
- Azure CLI versie 2.0.71 of hoger: voer uit
az --versionom de versie te vinden. Zie Azure CLI installeren als u de CLI wilt installeren of een upgrade wilt uitvoeren.
OCI-ondersteuning inschakelen
Gebruik de helm version opdracht om te controleren of u Helm 3 hebt geïnstalleerd:
helm version
Stel de volgende omgevingsvariabele in om OCI-ondersteuning in te stellen in de Helm 3-client. Deze ondersteuning is momenteel experimenteel en kan worden gewijzigd.
export HELM_EXPERIMENTAL_OCI=1
Stel de volgende omgevingsvariabelen in voor het doelregister. De ACR_NAME is de naam van de registerresource. Als de ACR-register-URL is myregistry.azurecr.io, stelt u de ACR_NAME in op myregistry
ACR_NAME=<container-registry-name>
Een voorbeeldgrafiek maken
Maak een testgrafiek met behulp van de volgende opdrachten:
mkdir helmtest
cd helmtest
helm create hello-world
Als eenvoudig voorbeeld wijzigt u de map in de templates map en verwijdert u daar eerst de inhoud:
cd hello-world/templates
rm -rf *
Maak in templates de map een bestand met de naam door de volgende opdracht uit te configmap.yaml voeren:
cat <<EOF > configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: hello-world-configmap
data:
myvalue: "Hello World"
EOF
Zie voor meer informatie over het maken en uitvoeren van dit Aan de slag in de Helm Docs.
Grafiek opslaan in lokaal archief
Wijzig de map in hello-world de submap . Voer vervolgens uit helm package om de grafiek op te slaan in een lokaal archief.
In het volgende voorbeeld wordt de grafiek opgeslagen met de naam en versie in Chart.yaml .
cd ..
helm package .
De uitvoer ziet er ongeveer zo uit:
Successfully packaged chart and saved it to: /my/path/hello-world-0.1.0.tgz
Verifiëren met het register
Voer helm registry login uit om te verifiëren bij het register. U kunt registerreferenties doorgeven die geschikt zijn voor uw scenario, zoals referenties voor de service-principal, gebruikersidentiteit of een token binnen het bereik van de opslagplaats.
- Verifiëren met een Azure Active Directory service-principal met pull- en push-machtigingen (AcrPush-rol) naar het register.
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) - Verifieert u met uw afzonderlijke Azure AD-identiteit om Helm-grafieken te pushen en op te halen met behulp van een AD-token.
USER_NAME="00000000-0000-0000-0000-000000000000" PASSWORD=$(az acr login --name $ACR_NAME --expose-token --output tsv --query accessToken) - Verifiëren met een token binnen het bereik van een opslagplaats (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) - Vervolgens moet u de referenties aan
helm registry loginleveren.helm registry login $ACR_NAME.azurecr.io \ --username $USER_NAME \ --password $PASSWORD
Grafiek naar register pushen als OCI-artefact
Voer de opdracht uit in de Helm 3 CLI om het grafiekarchief naar de helm push volledig gekwalificeerde doelopslagplaats te pushen. In het volgende voorbeeld is de naamruimte van de doelopslagplaats helm/hello-world en is de grafiek getagd: 0.1.0
helm push hello-world-0.1.0.tgz oci://$ACR_NAME.azurecr.io/helm
Na een geslaagde push is de uitvoer vergelijkbaar met:
Pushed: <registry>.azurecr.io/helm/hello-world:0.1.0
digest: sha256:5899db028dcf96aeaabdadfa5899db02589b2899b025899b059db02
Grafieken in de opslagplaats bekijken
Net als bij afbeeldingen die zijn opgeslagen in een Azure-containerregister, kunt u az acr repository commands gebruiken om de opslagplaatsen weer te geven die als host voor uw grafieken worden gebruikt, evenals grafiektags en manifesten.
Voer bijvoorbeeld az acr repository show uit om de eigenschappen te zien van de opslagplaats die u in de vorige stap hebt gemaakt:
az acr repository show \
--name $ACR_NAME \
--repository helm/hello-world
De uitvoer ziet er ongeveer zo uit:
{
"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
}
Voer de opdracht az acr repository show-manifests uit om details te zien van de grafiek die is opgeslagen in de opslagplaats. Bijvoorbeeld:
az acr repository show-manifests \
--name $ACR_NAME \
--repository helm/hello-world --detail
Uitvoer, afgekort in dit voorbeeld, toont een configMediaType van 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"
]
Helm-grafiek installeren
Voer helm install uit om de Helm-grafiek te installeren die u naar het register hebt ge pusht. De grafiektag wordt doorgegeven met behulp van de --version parameter . Geef een releasenaam op, zoals myhelmtest of geef de --generate-name parameter door. Bijvoorbeeld:
helm install myhelmtest oci://$ACR_NAME.azurecr.io/helm/hello-world --version 0.1.0
De uitvoer na een geslaagde grafiekinstallatie is vergelijkbaar met:
NAME: myhelmtest
LAST DEPLOYED: Tue Oct 4 16:59:51 2021
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
Voer de opdracht uit om de installatie te helm get manifest controleren.
helm get manifest myhelmtest
De opdracht retourneert de YAML-gegevens in uw configmap.yaml sjabloonbestand.
Voer helm uninstall uit om de grafiekversie op uw cluster te verwijderen:
helm uninstall myhelmtest
Grafiek naar lokaal archief pullen
U kunt eventueel een grafiek uit het containerregister naar een lokaal archief halen met behulp van helm pull . De grafiektag wordt doorgegeven met behulp van de --version parameter . Als er een lokaal archief op het huidige pad bestaat, wordt dit door deze opdracht overschreven.
helm pull oci://$ACR_NAME.azurecr.io/helm/hello-world --version 0.1.0
Grafiek uit het register verwijderen
Als u een grafiek uit het containerregister wilt verwijderen, gebruikt u de opdracht az acr repository delete. Voer de volgende opdracht uit en bevestig de bewerking wanneer u hier om wordt gevraagd:
az acr repository delete --name $ACR_NAME --image helm/hello-world:0.1.0
Uw register migreren om Helm OCI-artefacten op te slaan
Als u uw Azure-containerregister eerder hebt ingesteld als een grafiekopslagplaats met behulp van Helm 2 en de opdrachten, raden we u aan een upgrade uit te voeren naar az acr helm de Helm 3-client. Volg vervolgens deze stappen om de grafieken als OCI-artefacten op te slaan in uw register.
Belangrijk
- Nadat u de migratie van een opslagplaats met grafieken in Helm 2-stijl (op basis van index.yaml) naar opslagplaatsen met OCI-artefacten hebt voltooid, gebruikt u de Helm CLI en opdrachten om de grafieken te
az acr repositorybeheren. Zie de vorige secties in dit artikel. - De Opslagplaatsen voor Helm OCI-artefacten kunnen niet worden gevonden met behulp van Helm-opdrachten zoals
helm searchenhelm repo list. Zie de Helm-documentatie voor meer informatie over Helm-opdrachten die worden gebruikt voor het opslaan van grafieken als OCI-artefacten.
OCI-ondersteuning inschakelen
Zorg ervoor dat u de Helm 3-client gebruikt:
helm version
Schakel OCI-ondersteuning in de Helm 3-client in. Deze ondersteuning is momenteel experimenteel en kan worden gewijzigd.
export HELM_EXPERIMENTAL_OCI=1
Huidige grafieken bekijken
Vermeld de grafieken die momenteel zijn opgeslagen in het register, hier met de naam myregistry:
helm search repo myregistry
Uitvoer toont de grafieken en grafiekversies:
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...
[...]
Grafiekarchieven lokaal pullen
Haal voor elke grafiek in de repo het grafiekarchief lokaal op en noteer de bestandsnaam:
helm pull myregisry/ingress-nginx
ls *.tgz
Er wordt een archief met lokale ingress-nginx-3.20.1.tgz grafieken gemaakt, zoals .
Grafieken als OCI-artefacten naar het register pushen
Meld u aan bij het register:
az acr login --name $ACR_NAME
Push elk grafiekarchief naar het register. Voorbeeld:
helm push ingress-nginx-3.20.1.tgz oci://$ACR_NAME.azurecr.io/helm
Nadat u een grafiek pusht, controleert u of deze is opgeslagen in het register:
az acr repository list --name $ACR_NAME
Nadat u alle grafieken hebt ge pusht, kunt u eventueel de helm 2-stijl grafiekopslagplaats uit het register verwijderen. Dit vermindert de opslag in uw register:
helm repo remove $ACR_NAME
Volgende stappen
- Zie Helm-grafieken ontwikkelen voor meer informatie over het maken en implementeren van Helm-grafieken.
- Meer informatie over het installeren van toepassingen met Helm in Azure Kubernetes Service (AKS).
- Helm-grafieken kunnen worden gebruikt als onderdeel van het buildproces van de container. Zie Use Azure Container Registry-taken (Een Azure Container Registry-taken) voor meer informatie.