Руководство. Обновление приложения в AKS с поддержкой Azure Arc

Область применения: AKS в Azure Stack HCI 22H2, AKS в Windows Server

После развертывания приложения в Kubernetes с помощью AKS, включенной Arc, его можно обновить, указав новый образ контейнера или версию образа. Необходимо поэтапно выполнить обновление, чтобы одновременно обновлялся только часть развертывания. Такое поэтапное обновление позволяет приложению продолжать работать во время обновления. Оно также обеспечивает механизм отката на случай, если произойдет сбой развертывания.

В этом руководстве, часть 6 из семи, описывается обновление примера приложения Azure Для голосования. Вы научитесь:

  • Обновление кода внешнего приложения.
  • Создание обновленного образа контейнера.
  • Передача образа контейнера в Реестр контейнеров Azure.
  • Развертывание обновленного образа контейнера.

Перед началом

В предыдущих руководствах вы узнали, как выполнять следующие действия:

  • Упакуйте приложение в образ контейнера и отправьте образ в Реестр контейнеров Azure.
  • Создайте кластер Kubernetes в Azure Stack HCI и разверните приложение в кластере.
  • Клонируйте репозиторий приложений, включающий исходный код приложения и предварительно созданный файл Docker Compose, который можно использовать в этом руководстве.

Убедитесь, что вы создали клон репозитория и изменили каталоги в клонированные каталоги. Если вы еще не выполнили эти действия, начните с учебника 1. Создание образов контейнеров.

Для работы с этим руководством необходимо запустить Azure CLI версии 2.0.53 или более поздней. Чтобы узнать версию, выполните команду az --version. Если вам необходимо выполнить установку или обновление, см. статью Установка Azure CLI 2.0.

Обновление приложения

В этом разделе описывается, как внести изменения в пример приложения, а затем обновить версию, уже развернутую в кластере AKS. Перейдите в клонированный каталог azure-voting-app-redis. Пример исходного кода приложения можно найти в каталоге azure-vote. Откройте файл config_file.cfg в редакторе, например в Блокноте:

notepad azure-vote/azure-vote/config_file.cfg

Измените значения для VOTE1VALUE и VOTE2VALUE на другие значения, например цвета. В следующем примере показаны обновленные значения:

# UI Configurations
TITLE = 'Azure Voting App'
VOTE1VALUE = 'Blue'
VOTE2VALUE = 'Purple'
SHOWHOST = 'false'

Сохраните файл и закройте его.

Обновление образа контейнера

Используйте команду docker-compose для повторного создания образа внешнего приложения и проверки обновленного приложения. Аргумент --build используется для повторного создания образа приложения:

docker-compose up --build -d

Локальное тестирование приложения

Чтобы убедиться, что обновленный образ контейнера показывает изменения, откройте в локальном веб-браузере http://localhost:8080.

Снимок экрана: пример обновленного образа контейнера приложения Azure для голосования, выполняемого локально и открытого в веб-браузере.

Обновленные значения, указанные в config_file.cfg , отображаются в работающем приложении.

Пометка и отправка образов

Чтобы правильно использовать обновленный образ, пометьте образ azure-vote-front именем сервера входа экземпляра Реестр контейнеров Azure. Получите имя сервера для входа, выполнив команду az acr list.

az acr list --resource-group myResourceGroup --query "[].{acrLoginServer:loginServer}" --output table

Используйте команду docker tag, чтобы добавить тег для образа. Замените <acrLoginServer> именем сервера входа в реестр контейнеров или именем узла общедоступного реестра и обновите версию образа до версии 2, как показано ниже.

docker tag mcr.microsoft.com/azuredocs/azure-vote-front:v1 <acrLoginServer>/azure-vote-front:v2

Теперь используйте команду docker push, чтобы передать образ в реестр. Замените <acrLoginServer> именем сервера входа реестра контейнеров Azure.

Примечание

При возникновении проблем при отправке в реестр контейнеров убедитесь, что вы по-прежнему вошли в систему. Выполните команду az acr login, используя имя Реестра контейнеров Azure, который вы создали на шаге создания Реестра контейнеров Azure. Например, az acr login --name <azure container registry name>.

docker push <acrLoginServer>/azure-vote-front:v2

Развертывание обновленного приложения

Чтобы обеспечить максимальное время доступности, необходимо запустить несколько экземпляров модуля pod приложения. Проверьте число запущенных экземпляров внешнего интерфейса с помощью команды kubectl get pods:

$ kubectl get pods

NAME                               READY     STATUS    RESTARTS   AGE
azure-vote-back-217588096-5w632    1/1       Running   0          10m
azure-vote-front-233282510-b5pkz   1/1       Running   0          10m
azure-vote-front-233282510-dhrtr   1/1       Running   0          10m
azure-vote-front-233282510-pqbfk   1/1       Running   0          10m

Если у вас нет нескольких модулей pod внешнего интерфейса, измените масштаб развертывания azure-vote-front следующим образом:

kubectl scale --replicas=3 deployment/azure-vote-front

Чтобы обновить приложение, используйте команду kubectl set. Обновите <acrLoginServer>, используя имя сервера для входа или имя узла реестра контейнеров, и укажите версию приложения v2:

kubectl set image deployment azure-vote-front azure-vote-front=<acrLoginServer>/azure-vote-front:v2

Для мониторинга развертывания используйте команду kubectl get pod. При развертывании обновленного приложения модули pod завершаются и создаются повторно с помощью нового образа контейнера:

kubectl get pods

В следующем примере выходных данных показано завершение работы модулей pod и запуск новых экземпляров в ходе развертывания:

$ kubectl get pods

NAME                               READY     STATUS        RESTARTS   AGE
azure-vote-back-2978095810-gq9g0   1/1       Running       0          5m
azure-vote-front-1297194256-tpjlg  1/1       Running       0          1m
azure-vote-front-1297194256-tptnx  1/1       Running       0          5m
azure-vote-front-1297194256-zktw9  1/1       Terminating   0          1m

Проверка обновленного приложения

Чтобы просмотреть обновленное приложение, сначала нужно получить внешний IP-адрес службы azure-vote-front:

kubectl get service azure-vote-front

Затем откройте веб-браузер с IP-адресом службы:

Снимок экрана: пример обновленного образа приложения Azure для голосования, работающего в кластере Kubernetes, открытом в локальном веб-браузере.

Дальнейшие действия

В этом руководстве вы обновили приложение и развернули это обновление в кластере Kubernetes. Вы ознакомились с выполнением следующих задач:

  • Обновление кода внешнего приложения.
  • Создание обновленного образа контейнера.
  • Передача образа контейнера в Реестр контейнеров Azure.
  • Развертывание обновленного образа контейнера.

Перейдите к следующему руководству, чтобы узнать, как обновить кластер до новой версии Kubernetes.