Краткое руководство. Разработка в Службе Azure Kubernetes (AKS) с помощью Helm
Helm — это средство упаковки с открытым кодом, которое помогает установить приложения Kubernetes и управлять их жизненным циклом. Как и диспетчеры пакетов Linux, такие как APT и Yum, Helm используется для управления чартами Kubernetes, которые представляют собой пакеты предварительно настроенных ресурсов Kubernetes.
В этом кратком руководстве вы используете Helm для упаковки и запуска приложения в AKS. Сведения об установке существующего приложения с помощью Helm см. в статье "Установка существующих приложений с помощью Helm" в AKS.
Необходимые компоненты
- Подписка Azure. Если у вас еще нет подписки Azure, вы можете создать бесплатную учетную запись.
- Установленные Azure CLI или Azure PowerShell.
- Установленный Helm версии 3.
Создание реестра в Реестре контейнеров Azure
Вам нужно хранить образы контейнеров в Реестр контейнеров Azure (ACR), чтобы запустить приложение в кластере AKS с помощью Helm. Имя реестра должно быть уникальным в Azure и содержать 5–50 буквенно-цифровых символов. Разрешены только строчные символы. SKU Базовый — это оптимизированная по стоимости точка входа для целей разработки, обеспечивающая баланс ресурсов хранения и пропускной способности.
Создайте группу ресурсов Azure с помощью команды az group create . В следующем примере создается группа ресурсов с именем myResourceGroup в расположении eastus.
az group create --name myResourceGroup --location eastus
Создайте Реестр контейнеров Azure с уникальным именем, вызвав команду az acr create. В следующем примере создается ACR с именем myhelmacr с номером SKU уровня "Базовый".
az acr create --resource-group myResourceGroup --name myhelmacr --sku Basic
Выходные данные должны выглядеть примерно так, как в приведенном ниже примере выходных данных. Запишите значение сервера входа для ACR, которое будет использоваться на следующем шаге.
{ "adminUserEnabled": false, "creationDate": "2023-12-26T22:36:23.998425+00:00", "id": "/subscriptions/<ID>/resourceGroups/myResourceGroup/providers/Microsoft.ContainerRegistry/registries/myhelmacr", "location": "eastus", "loginServer": "myhelmacr.azurecr.io", "name": "myhelmacr", "networkRuleSet": null, "provisioningState": "Succeeded", "resourceGroup": "myResourceGroup", "sku": { "name": "Basic", "tier": "Basic" }, "status": null, "storageAccount": null, "tags": {}, "type": "Microsoft.ContainerRegistry/registries" }
Создание кластера AKS
Новому кластеру AKS требуется доступ к ACR для извлечения образов контейнеров и их запуска.
Создайте кластер AKS с помощью команды az aks create с
--attach-acr
параметром, чтобы предоставить кластеру доступ к ACR. В следующем примере создается кластер AKS с именем myAKSCluster и предоставляет ему доступ к ACR myhelmacr . Убедитесь, что вы заменитеmyhelmacr
имя ACR.az aks create --resource-group myResourceGroup --name myAKSCluster --location eastus --attach-acr myhelmacr --generate-ssh-keys
Подключение к кластеру AKS
Чтобы подключить кластер Kubernetes локально, используйте клиент командной строки Kubernetes, kubectl. Если вы используете Azure Cloud Shell, kubectl
уже установлен.
Установите
kubectl
локально с помощью команды az aks install-cli .az aks install-cli
Настройте в
kubectl
подключение к кластеру Kubernetes, выполнив команду az aks get-credentials. Следующая команда получает учетные данные для кластера AKS с именем myAKSCluster в myResourceGroup.az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
Загрузка примера приложения
В этом кратком руководстве рассматривается приложение Azure Vote.
Клонируйте приложение из GitHub с помощью
git clone
команды.git clone https://github.com/Azure-Samples/azure-voting-app-redis.git
Перейдите к каталогу
azure-vote
cd
с помощью команды.cd azure-voting-app-redis/azure-vote/
Создание и отправка примера приложения в ACR
Создайте и отправьте образ в ACR с помощью команды az acr build . В следующем примере создается образ с именем azure-vote-front:v1 и отправляет его в ACR myhelmacr . Убедитесь, что вы замените
myhelmacr
имя ACR.az acr build --image azure-vote-front:v1 --registry myhelmacr --file Dockerfile .
Примечание.
Вы также можете импортировать диаграммы Helm в ACR. Дополнительные сведения см. в статье Отправка и извлечение чартов Helm в Реестре контейнеров Azure.
Создание чарта Helm
Создайте чарт Helm с помощью команды
helm create
.helm create azure-vote-front
Обновите azure-vote-front/Chart.yaml , чтобы добавить зависимость для диаграммы redis из
https://charts.bitnami.com/bitnami
репозитория диаграммы и обновитьappVersion
его,v1
как показано в следующем примере:Примечание.
Версии образа контейнера, показанные в этом руководстве, были протестированы для работы с этим примером, но могут быть не последней доступной версией.
apiVersion: v2 name: azure-vote-front description: A Helm chart for Kubernetes dependencies: - name: redis version: 17.3.17 repository: https://charts.bitnami.com/bitnami ... # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. appVersion: v1
Обновите зависимости диаграммы Helm с помощью
helm dependency update
команды.helm dependency update azure-vote-front
Обновите azure-vote-front/values.yaml следующими изменениями.
- Добавьте раздел redis, чтобы определить сведения об образе, порт контейнера и имя развертывания.
- Добавьте backendName для подключения интерфейсной части к развертыванию redis.
- Измените image.repository на
<loginServer>/azure-vote-front
. - Измените image.tag на
v1
. - Измените service.type на LoadBalancer.
Например:
replicaCount: 1 backendName: azure-vote-backend-master redis: image: registry: mcr.microsoft.com repository: oss/bitnami/redis tag: 6.0.8 fullnameOverride: azure-vote-backend auth: enabled: false image: repository: myhelmacr.azurecr.io/azure-vote-front pullPolicy: IfNotPresent tag: "v1" ... service: type: LoadBalancer port: 80 ...
env
Добавьте раздел в azure-vote-front/templates/deployment.yaml, чтобы передать имя развертывания Redis.... containers: - name: {{ .Chart.Name }} securityContext: {{- toYaml .Values.securityContext | nindent 12 }} image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" imagePullPolicy: {{ .Values.image.pullPolicy }} env: - name: REDIS value: {{ .Values.backendName }} ...
Запуск чарта Helm
Установите приложение с использованием чарта Helm с помощью команды
helm install
.helm install azure-vote-front azure-vote-front/
Возвращение общедоступного IP-адреса службы займет несколько минут. Отслеживайте ход выполнения с помощью команды с
kubectl get service
аргументом--watch
.kubectl get service azure-vote-front --watch
Когда служба будет готова,
EXTERNAL-IP
значение изменяется с<pending>
IP-адреса. Нажмите,CTRL+C
чтобы остановитьkubectl
процесс наблюдения.NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE azure-vote-front LoadBalancer 10.0.18.228 <pending> 80:32021/TCP 6s ... azure-vote-front LoadBalancer 10.0.18.228 52.188.140.81 80:32021/TCP 2m6s
Перейдите к подсистеме балансировки нагрузки приложения в браузере, используя
<EXTERNAL-IP>
для просмотра примера приложения.
Удаление кластера
Удалите группу ресурсов, кластер AKS, реестр контейнеров Azure, образы контейнеров, хранящиеся в ACR, и все связанные ресурсы с помощью команды az group delete с
--yes
параметром, чтобы подтвердить удаление и--no-wait
параметр, чтобы вернуться в командную строку, не ожидая завершения операции.az group delete --name myResourceGroup --yes --no-wait
Примечание.
Если вы создали кластер AKS с управляемым удостоверением, назначаемым системой (параметр удостоверения по умолчанию в этом кратком руководстве), удостоверение управляется платформой и не требует удаления.
Если вы создали кластер AKS с субъектом-службой, субъект-служба не удаляется при удалении кластера. Чтобы удалить субъект-службу, ознакомьтесь с рекомендациями и удалением субъекта-службы AKS.
Следующие шаги
Дополнительные сведения об использовании Helm см. в документации Helm.
Azure Kubernetes Service