Wypychanie i ściąganie wykresów helm do rejestru kontenerów platformy Azure
Aby szybko zarządzać i wdrażać aplikacje dla platformy Kubernetes, możesz użyć menedżera pakietów Helm typu open source. Za pomocą programu Helm pakiety aplikacji są definiowane jako wykresy, które są zbierane i przechowywane w repozytorium pakietu Helm.
W tym artykule pokazano, jak hostować repozytoria pakietów Helm w rejestrze kontenerów platformy Azure przy użyciu poleceń programu Helm 3 i przechowywać wykresy jako artefakty OCI. W wielu scenariuszach utworzysz i przekażesz własne wykresy dla opracowywanych aplikacji. Aby uzyskać więcej informacji na temat tworzenia własnych wykresów helm, zobacz Przewodnik dewelopera szablonu wykresu. Możesz również przechowywać istniejący wykres helm z innego repozytorium Helm.
Uwaga
Ten artykuł został zaktualizowany za pomocą poleceń programu Helm 3. Program Helm 3.7 zawiera zmiany poleceń interfejsu wiersza polecenia programu Helm i obsługę OCI wprowadzonych we wcześniejszych wersjach programu Helm 3. Zgodnie z projektem helm
rozwija się wraz z aktualizacjami wersji. Zalecamy używanie wersji 3.7.2 lub nowszej.
Ważne
- W listopadzie 2020 r. Helm 2 osiągnął koniec życia. Począwszy od 30 marca 2025 r. usługa Azure Container Registry nie będzie już obsługiwać programu Helm 2. W związku z tym starsze funkcje "repozytoria helm" również zostaną wycofane. Zalecamy natychmiastowe przejście do programu Helm 3.
- Od 21 stycznia 2025 r. polecenie interfejsu wiersza polecenia az acr helm push zostanie wycofane, aby zapobiec wypychaniu nowych pakietów Helm do starszych repozytoriów programu Helm.
- Od 30 marca 2025 r. grupa poleceń interfejsu wiersza polecenia az acr helm zostanie wycofana, kończąc wszystkie starsze możliwości repozytorium Helm w usłudze Azure Container Registry.
- Wszystkie wykresy programu Helm, które nie są przechowywane jako artefakt OCI, zostaną usunięte z usługi Azure Container Registry 30 marca 2025 r.
- Dowiedz się, jak znaleźć wszystkie wykresy programu Helm przechowywane w repozytorium helm tutaj: az acr helm list. Jeśli używany pakiet Helm znajduje się na liście, jest on przechowywany w starszym repozytorium Helm i jest zagrożony usunięciem.
Helm 3 lub Helm 2?
Aby przechowywać i instalować wykresy helm oraz zarządzać nimi, należy używać poleceń w interfejsie wiersza polecenia programu Helm. Główne wersje programu Helm obejmują narzędzia Helm 3 i Helm 2. Aby uzyskać szczegółowe informacje na temat różnic wersji, zobacz często zadawane pytania dotyczące wersji.
Program Helm 3 powinien służyć do hostowania pakietów Helm w usłudze Azure Container Registry. Za pomocą programu Helm 3:
- Może przechowywać wykresy helm i zarządzać nimi w repozytoriach w rejestrze kontenerów platformy Azure
- Przechowuj wykresy helm w rejestrze jako artefakty OCI. Usługa Azure Container Registry zapewnia obsługę artefaktów OCI, w tym wykresów helm.
- Uwierzytelnij się w rejestrze
helm registry login
przy użyciu polecenia lubaz acr login
. - Używanie
helm
poleceń do wypychania, ściągania i zarządzania wykresami helm w rejestrze - Służy
helm install
do instalowania wykresów w klastrze Kubernetes z rejestru.
Obsługa funkcji
Usługa Azure Container Registry obsługuje określone funkcje zarządzania pakietem Helm w zależności od tego, czy używasz programu Helm 3 (bieżącego) czy Helm 2 (przestarzałe).
Funkcja | Helm 2 | Helm 3 |
---|---|---|
Zarządzanie wykresami przy użyciu az acr helm poleceń |
✔️ | |
Przechowywanie wykresów jako artefaktów OCI | ✔️ | |
Zarządzanie wykresami przy użyciu az acr repository poleceń i bloku Repozytoria w witrynie Azure Portal |
✔️ |
Zgodność wersji wykresu
Następujące wersje pakietu Helm mogą być przechowywane w usłudze Azure Container Registry i można je zainstalować przez klientów helm 2 i Helm 3.
Wersja | Helm 2 | Helm 3 |
---|---|---|
apiVersion v1 | ✔️ | ✔️ |
apiVersion, wersja 2 | ✔️ |
Migrowanie z programu Helm 2 do programu Helm 3
Jeśli wcześniej były przechowywane i wdrażane wykresy przy użyciu programu Helm 2 i usługi Azure Container Registry, zalecamy migrację do programu Helm 3. Zobacz:
- Migrowanie programu Helm 2 do 3 w dokumentacji programu Helm.
- Migrowanie rejestru do przechowywania artefaktów OCI programu Helm w dalszej części tego artykułu
Wymagania wstępne
W tym artykule potrzebne są następujące zasoby:
- Rejestr kontenerów platformy Azure w ramach subskrypcji platformy Azure. W razie potrzeby utwórz rejestr przy użyciu witryny Azure Portal lub interfejsu wiersza polecenia platformy Azure.
- Klient programu Helm w wersji 3.7 lub nowszej — uruchom polecenie
helm version
, aby znaleźć bieżącą wersję. Aby uzyskać więcej informacji na temat instalowania i uaktualniania programu Helm, zobacz Instalowanie programu Helm. Jeśli uaktualnisz program Helm 3 z wcześniejszej wersji, zapoznaj się z informacjami o wersji. - Klaster Kubernetes, w którym zostanie zainstalowany pakiet Helm. W razie potrzeby utwórz klaster usługi AKS przy użyciu interfejsu wiersza polecenia platformy Azure, programu Azure PowerShell lub witryny Azure Portal.
- Interfejs wiersza polecenia platformy Azure w wersji 2.0.71 lub nowszej — uruchom polecenie
az --version
, aby znaleźć wersję. Jeśli konieczna będzie instalacja lub uaktualnienie, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.
Konfigurowanie klienta programu Helm
helm version
Użyj polecenia , aby sprawdzić, czy zainstalowano program Helm 3:
helm version
Uwaga
Wskazana wersja musi być co najmniej 3.8.0, ponieważ obsługa OCI we wcześniejszych wersjach była eksperymentalna.
Ustaw następujące zmienne środowiskowe dla rejestru docelowego. ACR_NAME jest nazwą zasobu rejestru. Jeśli adres URL rejestru usługi ACR jest myregistry.azurecr.io, ustaw ACR_NAME na wartość myregistry
ACR_NAME=<container-registry-name>
Tworzenie przykładowego wykresu
Utwórz wykres testowy przy użyciu następujących poleceń:
mkdir helmtest
cd helmtest
helm create hello-world
W podstawowym przykładzie zmień katalog na templates
folder i najpierw usuń zawartość:
cd hello-world/templates
rm -rf *
W folderze templates
utwórz plik o nazwie configmap.yaml
, uruchamiając następujące polecenie:
cat <<EOF > configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: hello-world-configmap
data:
myvalue: "Hello World"
EOF
Aby uzyskać więcej informacji na temat tworzenia i uruchamiania tego przykładu, zobacz Wprowadzenie w witrynie Helm Docs.
Zapisywanie wykresu w archiwum lokalnym
Zmień katalog na hello-world
podkatalog. Następnie uruchom polecenie helm package
, aby zapisać wykres w lokalnym archiwum.
W poniższym przykładzie wykres jest zapisywany przy użyciu nazwy i wersji w pliku Chart.yaml
.
cd ..
helm package .
Dane wyjściowe są podobne do następujących:
Successfully packaged chart and saved it to: /my/path/hello-world-0.1.0.tgz
Uwierzytelnianie przy użyciu rejestru
Uruchom polecenie helm registry login
, aby uwierzytelnić się w rejestrze. Możesz przekazać poświadczenia rejestru odpowiednie dla danego scenariusza, takie jak poświadczenia jednostki usługi, tożsamość użytkownika lub token o zakresie repozytorium.
- Uwierzytelnianie za pomocą jednostki usługi Microsoft Entra przy użyciu uprawnień ściągnięcia i wypychania (rola AcrPush) do rejestru.
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)
- Uwierzytelnij się przy użyciu indywidualnej tożsamości firmy Microsoft Entra, aby wypychać i ściągać wykresy helm przy użyciu tokenu usługi AD.
USER_NAME="00000000-0000-0000-0000-000000000000" PASSWORD=$(az acr login --name $ACR_NAME --expose-token --output tsv --query accessToken)
- Uwierzytelnianie przy użyciu tokenu o zakresie repozytorium (wersja zapoznawcza).
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)
- Następnie podaj poświadczenia do
helm registry login
.helm registry login $ACR_NAME.azurecr.io \ --username $USER_NAME \ --password $PASSWORD
Wypychanie wykresu do rejestru jako artefaktu OCI
helm push
Uruchom polecenie w interfejsie wiersza polecenia programu Helm 3, aby wypchnąć archiwum wykresów do w pełni kwalifikowanego repozytorium docelowego. Oddziel wyrazy w nazwach wykresów i używaj tylko małych liter i cyfr. W poniższym przykładzie przestrzeń nazw repozytorium docelowego to helm/hello-world
, a wykres jest oznaczony tagiem 0.1.0
:
helm push hello-world-0.1.0.tgz oci://$ACR_NAME.azurecr.io/helm
Po pomyślnym wypchnięciu dane wyjściowe są podobne do następujących:
Pushed: <registry>.azurecr.io/helm/hello-world:0.1.0
digest: sha256:5899db028dcf96aeaabdadfa5899db02589b2899b025899b059db02
Wyświetlanie listy wykresów w repozytorium
Podobnie jak w przypadku obrazów przechowywanych w rejestrze kontenerów platformy Azure, możesz użyć poleceń az acr repository , aby wyświetlić repozytoria hostowane wykresy oraz tagi wykresu i manifesty.
Na przykład uruchom polecenie az acr repository show , aby wyświetlić właściwości repozytorium utworzonego w poprzednim kroku:
az acr repository show \
--name $ACR_NAME \
--repository helm/hello-world
Dane wyjściowe są podobne do następujących:
{
"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
}
Uruchom polecenie az acr manifest list-metadata, aby wyświetlić szczegóły wykresu przechowywanego w repozytorium. Na przykład:
az acr manifest list-metadata \
--registry $ACR_NAME \
--name helm/hello-world
Dane wyjściowe, skrócone w tym przykładzie, przedstawiają wartość typu 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"
]
Instalowanie pakietu Helm chart
Uruchom polecenie helm install
, aby zainstalować pakiet Helm wypchnięty do rejestru. Tag wykresu jest przekazywany przy użyciu parametru --version
. Określ nazwę wydania, taką jak myhelmtest, lub przekaż --generate-name
parametr . Na przykład:
helm install myhelmtest oci://$ACR_NAME.azurecr.io/helm/hello-world --version 0.1.0
Dane wyjściowe po pomyślnym zainstalowaniu wykresu są podobne do następujących:
NAME: myhelmtest
LAST DEPLOYED: Tue Oct 4 16:59:51 2021
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
Aby zweryfikować instalację helm get manifest
, uruchom polecenie .
helm get manifest myhelmtest
Polecenie zwraca dane YAML w configmap.yaml
pliku szablonu.
Uruchom polecenie helm uninstall
, aby odinstalować wydanie wykresu w klastrze:
helm uninstall myhelmtest
Ściąganie wykresu do archiwum lokalnego
Opcjonalnie możesz ściągnąć wykres z rejestru kontenerów do lokalnego archiwum przy użyciu polecenia helm pull
. Tag wykresu jest przekazywany przy użyciu parametru --version
. Jeśli lokalne archiwum istnieje w bieżącej ścieżce, to polecenie zastępuje je.
helm pull oci://$ACR_NAME.azurecr.io/helm/hello-world --version 0.1.0
Usuwanie wykresu z rejestru
Aby usunąć wykres z rejestru kontenerów, użyj polecenia az acr repository delete . Uruchom następujące polecenie i potwierdź operację po wyświetleniu monitu:
az acr repository delete --name $ACR_NAME --image helm/hello-world:0.1.0
Migrowanie rejestru do przechowywania artefaktów OCI programu Helm
Jeśli wcześniej skonfigurowaliśmy rejestr kontenerów platformy Azure jako repozytorium wykresów przy użyciu programu Helm 2 i az acr helm
poleceń, zalecamy uaktualnienie do klienta programu Helm 3. Następnie wykonaj następujące kroki, aby przechowywać wykresy jako artefakty OCI w rejestrze.
Ważne
- Po zakończeniu migracji z repozytorium wykresów programu Helm w stylu 2 (index.yaml) do repozytoriów artefaktów OCI użyj interfejsu wiersza polecenia programu Helm i
az acr repository
poleceń do zarządzania wykresami. Zobacz poprzednie sekcje w tym artykule. - Repozytoria artefaktów OCI programu Helm nie są wykrywalne przy użyciu poleceń programu Helm, takich jak
helm search
ihelm repo list
. Aby uzyskać więcej informacji na temat poleceń programu Helm używanych do przechowywania wykresów jako artefaktów OCI, zobacz dokumentację programu Helm.
Włączanie obsługi OCI (domyślnie włączone w programie Helm w wersji 3.8.0)
Upewnij się, że używasz klienta helm 3:
helm version
Jeśli używasz programu Helm w wersji 3.8.0 lub nowszej, jest to domyślnie włączone. Jeśli używasz niższej wersji, możesz włączyć obsługę OCI ustawiając zmienną środowiskową:
export HELM_EXPERIMENTAL_OCI=1
Wyświetlanie listy bieżących wykresów
Wyświetl listę wykresów aktualnie przechowywanych w rejestrze o nazwie myregistry:
helm search repo myregistry
Dane wyjściowe przedstawiają wykresy i wersje wykresów:
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...
[...]
Archiwum ściągania wykresów lokalnie
Dla każdego wykresu w repozytorium pobierz archiwum wykresu lokalnie i zanotuj nazwę pliku:
helm pull myregisry/ingress-nginx
ls *.tgz
Zostanie utworzone archiwum wykresu lokalnego, na przykład ingress-nginx-3.20.1.tgz
.
Wypychanie wykresów jako artefaktów OCI do rejestru
Zaloguj się do rejestru:
az acr login --name $ACR_NAME
Wypchnij każde archiwum wykresu do rejestru. Przykład:
helm push ingress-nginx-3.20.1.tgz oci://$ACR_NAME.azurecr.io/helm
Po wypchnięciu wykresu upewnij się, że jest on przechowywany w rejestrze:
az acr repository list --name $ACR_NAME
Po wypchnięciu wszystkich wykresów opcjonalnie usuń repozytorium wykresów helm 2 z rejestru. Zmniejsza to ilość miejsca w rejestrze:
helm repo remove $ACR_NAME
Następne kroki
- Aby uzyskać więcej informacji na temat tworzenia i wdrażania wykresów programu Helm, zobacz Tworzenie wykresów programu Helm.
- Dowiedz się więcej o instalowaniu aplikacji za pomocą programu Helm w usłudze Azure Kubernetes Service (AKS).
- Wykresy helm mogą być używane w ramach procesu kompilacji kontenera. Aby uzyskać więcej informacji, zobacz Używanie zadań usługi Azure Container Registry.