Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Для быстрого развертывания приложений и управления ими в Kubernetes можно использовать диспетчер пакетов Helm с открытым исходным кодом. При использовании Helm пакеты приложений определяются как чарты, хранящиеся в репозитории чартов Helm.
В этой статье показано, как разместить репозитории чартов Helm в Реестре контейнеров Azure с помощью команд Helm 3 и сохранения чартов в виде артефактов OCI. Во многих случаях для разрабатываемых приложений можно создавать и отправлять собственные чарты. Для получения дополнительной информации о создании собственных чартов Helm см. Руководство разработчика шаблона чарта. Можно также сохранить существующий чарт Helm из другого репозитория Helm.
Примечание
Эта статья обновлена с помощью команд Helm 3. Helm 3.7 включает изменения в командах CLI Helm и поддержку OCI, реализованную в более ранних версиях Helm 3. По замыслу, helm
улучшается с обновлением версий. Рекомендуется использовать версию 3.7.2 или более позднюю версию.
Важно!
- В ноябре 2020 года Helm 2 достигла конца жизни. Начиная с 30 марта 2025 г. Реестр контейнеров Azure больше не будет поддерживать Helm 2. Поэтому функции старых "репозиториев Helm" также будут отключены. Мы рекомендуем немедленно перейти на Helm 3.
- Начиная с 21 января 2025 года команда CLI az acr helm push будет прекращена, чтобы предотвратить отправку новых диаграмм Helm в устаревшие репозитории Helm.
- Начиная с 30 марта 2025 г. CLI группа команд az acr helm будет выведена из эксплуатации, что приведет к завершению всех устаревших возможностей репозитория Helm в Azure Container Registry.
- Все диаграммы Helm, не хранящиеся в качестве артефакта OCI, будут удалены из Реестр контейнеров Azure 30 марта 2025 года.
- Узнайте, как найти все диаграммы Helm, хранящиеся в репозитории Helm, здесь: az acr helm list. Если ваша диаграмма Helm указана в списке, это значит, что она хранится в устаревшем репозитории Helm и может быть удалена.
Для хранения, установки чартов Helm и управления ими используются команды в интерфейсе командной строки Helm. Основные выпуски Helm включают Helm 3 и Helm 2. Дополнительные сведения о различиях версий см. в разделе часто задаваемых вопросов о версии.
Для размещения чартов Helm в Реестре контейнеров Azure следует использовать Helm 3. С Helm 3 вы можете:
- Может хранить и управлять диаграммами Helm в репозиториях в Реестре контейнеров Azure.
- Храните чарты Helm в реестре как артефакты OCI. Реестр контейнеров Azure предоставляет поддержку артефактов OCI в статусе Общая Доступность, включая чарты Helm.
- Проверка подлинности в реестре с помощью команды
helm registry login
илиaz acr login
. - Используйте команды
helm
для отправки, извлечения и управления чартами Helm в реестре. - Используйте
helm install
для установки чартов в кластер Kubernetes из реестра.
Реестр контейнеров Azure поддерживает определенные функции управления чартами Helm в зависимости от того, используется ли Helm 3 (текущая версия) или Helm 2 (нерекомендуемая версия).
Функция | Helm 2 | Helm 3 |
---|---|---|
Управление чартами с помощью команд az acr helm |
✔️ | |
Хранение чартов в виде артефактов OCI | ✔️ | |
Управление чартами с помощью команд az acr repository и колонки Репозитории на портале Azure |
✔️ |
Следующие версии чартов Helm могут храниться в Реестре контейнеров Azure и устанавливаться клиентами Helm 2 и Helm 3.
Версия | Helm 2 | Helm 3 |
---|---|---|
apiVersion v1 | ✔️ | ✔️ |
apiVersion v2 | ✔️ |
Если вы ранее сохранили и развернули чарты с помощью Helm 2 и Реестра контейнеров Azure, мы рекомендуем перейти на Helm 3. См.
- Переход с Helm 2 на 3 в документации Helm.
- Перенесите ваш реестр для хранения артефактов Helm OCI (далее в этой статье)
Для сценария, описанного в этой статье, необходимы следующие ресурсы.
- Реестр контейнеров Azure в подписке Azure. При необходимости создайте реестр с помощью портала Azure или Azure CLI.
-
Клиент Helm версии 3.7 или более поздней — выполните команду
helm version
, чтобы узнать текущую версию. Дополнительные сведения о том, как установить и обновить Helm, см. здесь. При обновлении более ранней версии Helm 3 ознакомьтесь с заметками о выпуске. - Кластер Kubernetes, куда будет установлен чарт Helm. При необходимости создайте кластер AKS с помощью Azure CLI, с помощью Azure PowerShell или с помощью портал Azure.
-
Azure CLI версии 2.0.71 или более поздней. Выполните команду
az --version
, чтобы узнать номер версии. Если вам необходимо выполнить установку или обновление, см. статью Установка Azure CLI 2.0.
Используйте команду helm version
, чтобы убедиться, что Helm 3 установлен:
helm version
Примечание
Указанная версия должна быть не ниже 3.8.0, так как поддержка OCI в более ранних версиях была экспериментальной.
Задайте следующие переменные среды для целевого реестра. ACR_NAME — это имя ресурса реестра. Если URL-адрес реестра ACR — myregistry.azurecr.io, задайте для ACR_NAME значение myregistry
ACR_NAME=<container-registry-name>
Создайте тестовый чарт с помощью следующих команд:
mkdir helmtest
cd helmtest
helm create hello-world
В качестве базового примера измените каталог на папку templates
и сначала удалите содержимое:
cd hello-world/templates
rm -rf *
В папке templates
создайте файл с именем configmap.yaml
, выполнив следующую команду:
cat <<EOF > configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: hello-world-configmap
data:
myvalue: "Hello World"
EOF
Дополнительные сведения о создании и выполнении этого примера см. в разделе Начало работы в документации по Helm.
Измените каталог на подкаталог hello-world
. Затем выполните команду helm package
, чтобы сохранить диаграмму в локальном архиве.
В следующем примере диаграмма сохраняется с именем и версией в Chart.yaml
.
cd ..
helm package .
Она выводит выходные данные следующего вида:
Successfully packaged chart and saved it to: /my/path/hello-world-0.1.0.tgz
Выполните команду helm registry login
для проверки подлинности в реестре. Можно передать учетные данные реестра, соответствующие вашему сценарию, например, учетные данные служебного принципала, идентификатор пользователя или токен, ограниченный репозиторием.
- Авторизуйтесь с помощью служебного субъекта Microsoft Entra с разрешениями на вытягивание и отправку (роль AcrPush) в реестре.
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)
- Аутентификация с помощью отдельной учетной записи Microsoft Entra для загрузки и выгрузки чартов Helm с использованием токена AD.
USER_NAME="00000000-0000-0000-0000-000000000000" PASSWORD=$(az acr login --name $ACR_NAME --expose-token --output tsv --query accessToken)
- Проверка подлинности с помощью токена уровня репозитория (предварительная версия)
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)
- Укажите учетные данные в
helm registry login
.helm registry login $ACR_NAME.azurecr.io \ --username $USER_NAME \ --password $PASSWORD
Выполните команду helm push
в Helm 3 CLI, для того чтобы отправить архив чарта в полностью квалифицированный целевой репозиторий. Разделите слова в названиях диаграмм и используйте только строчные буквы и цифры. В следующем примере пространство имен целевого репозитория — helm/hello-world
, а диаграмма помечена как 0.1.0
:
helm push hello-world-0.1.0.tgz oci://$ACR_NAME.azurecr.io/helm
После успешной отправки выходные данные выглядят примерно так:
Pushed: <registry>.azurecr.io/helm/hello-world:0.1.0
digest: sha256:5899db028dcf96aeaabdadfa5899db02589b2899b025899b059db02
Как и в случае с образами, хранящимися в реестре контейнеров Azure, можно использовать команды az acr repository, чтобы отобразить репозитории, в которых размещены чарты, а также теги и манифесты чарта.
Например, выполните команду az acr repository show, чтобы просмотреть свойства репозитория, созданного на предыдущем шаге.
az acr repository show \
--name $ACR_NAME \
--repository helm/hello-world
Она выводит выходные данные следующего вида:
{
"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
}
Чтобы просмотреть сведения о чарте, хранящемся в репозитории, выполните команду az acr manifest list-metadata. Например:
az acr manifest list-metadata \
--registry $ACR_NAME \
--name helm/hello-world
В выходных данных, сокращенных в этом примере, отображается 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"
]
Выполните команду helm install
, чтобы установить диаграмму Helm, отправленную в реестр. Тег диаграммы передается с помощью параметра --version
. Укажите имя релиза, такое как myhelmtest, или передайте параметр --generate-name
. Например:
helm install myhelmtest oci://$ACR_NAME.azurecr.io/helm/hello-world --version 0.1.0
Выходные данные после успешной установки чарта аналогичны следующим:
NAME: myhelmtest
LAST DEPLOYED: Tue Oct 4 16:59:51 2021
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
Проверьте правильность установки, выполнив команду helm get manifest
.
helm get manifest myhelmtest
Команда возвращает данные в формате YAML в вашем файле шаблона configmap.yaml
.
Выполните команду helm uninstall
, чтобы удалить релиз чарта в кластере.
helm uninstall myhelmtest
При необходимости можно извлечь диаграмму из реестра контейнеров в локальный архив с помощью helm pull
. Тег диаграммы передается с помощью параметра --version
. Если локальный архив доступен по текущему пути, эта команда перезаписывает его.
helm pull oci://$ACR_NAME.azurecr.io/helm/hello-world --version 0.1.0
Чтобы удалить чарт из реестра контейнеров, используйте команду az acr repository delete. Выполните следующую команду и подтвердите операцию при появлении соответствующего запроса:
az acr repository delete --name $ACR_NAME --image helm/hello-world:0.1.0
Если вы ранее настроили реестр контейнеров Azure в качестве репозитория чартов с помощью Helm 2 и команд az acr helm
, рекомендуем обновить клиент для Helm 3. Затем выполните следующие действия, чтобы сохранить диаграммы в виде артефактов OCI в реестре.
Важно!
- После завершения перехода с репозитория чартов Helm 2 (на основе файла index.yaml) на репозитории артефактов OCI используйте интерфейс командной строки Helm и команды
az acr repository
для управления чартами. См. предыдущие разделы данной статьи. - Репозитории артефактов OCI Helm не обнаруживаются с помощью таких команд Helm, как
helm search
иhelm repo list
. Дополнительные сведения о командах Helm, используемых для хранения чартов в качестве артефактов OCI, см. в документации по Helm.
Убедитесь, что вы используете клиент Helm 3:
helm version
Если вы используете Helm версии 3.8.0 или более поздней версии, эта функция включена по умолчанию. Если вы используете более раннюю версию, можно включить поддержку OCI, задав переменную среды:
export HELM_EXPERIMENTAL_OCI=1
Выведите список чартов, хранящихся в реестре, с именем myregistry:
helm search repo myregistry
В выходных данных показаны чарты и их версии:
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...
[...]
Для каждой диаграммы в репозитории выполните локальное вытягивание архива диаграммы и запишите имя файла:
helm pull myregisry/ingress-nginx
ls *.tgz
Создается локальный архив диаграмм, такой как ingress-nginx-3.20.1.tgz
.
Войдите в реестр:
az acr login --name $ACR_NAME
Передайте каждый архив с диаграммами в регистр. Пример:
helm push ingress-nginx-3.20.1.tgz oci://$ACR_NAME.azurecr.io/helm
После отправки чарта убедитесь, что он хранится в реестре:
az acr repository list --name $ACR_NAME
После завершения отправки всех чартов, при необходимости, удалите репозиторий чартов Helm 2 из реестра. Это сокращает объем хранилища в реестре:
helm repo remove $ACR_NAME
- Дополнительные сведения о создании и развертывании диаграмм Helm см. в разработке диаграмм Helm.
- Дополнительные сведения об установке приложений с помощью Helm в Службе Azure Kubernetes (AKS) см. здесь.
- Диаграммы Helm можно использовать в процессе создания контейнеров. Дополнительные сведения см. в статье Использование задач Реестра контейнеров Azure.