Руководство. Обновление приложения в AKS с поддержкой Azure Arc
Область применения: AKS в Azure Local 22H2, AKS на Windows Server
После развертывания приложения в Kubernetes с помощью AKS, включенного Arc, его можно обновить, указав новый образ контейнера или версию образа. Необходимо выполнить обновление, чтобы одновременно обновлять только часть развертывания. Такое поэтапное обновление позволяет приложению продолжать работать во время обновления. Оно также обеспечивает механизм отката на случай, если произойдет сбой развертывания.
В этом руководстве, часть 6 из семи, описывается обновление примера приложения для голосования Azure. Вы научитесь:
- Обновление кода внешнего приложения.
- Создание обновленного образа контейнера.
- Передача образа контейнера в Реестр контейнеров Azure.
- Развертывание обновленного образа контейнера.
Подготовка к работе
В предыдущих руководствах вы узнали, как:
- Упаковайте приложение в образ контейнера и отправьте его в Реестр контейнеров Azure.
- Создайте кластер Kubernetes в локальной среде Azure и разверните приложение в кластере.
- Клонируйте репозиторий приложений, включающий исходный код приложения и предварительно созданный файл 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
.
Обновленные значения, предоставленные в 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-адреса службы:
Следующие шаги
В этом руководстве вы обновили приложение и развернули это обновление в кластере Kubernetes. Вы научились выполнять следующие задачи:
- Обновление кода внешнего приложения.
- Создание обновленного образа контейнера.
- Передача образа контейнера в Реестр контейнеров Azure.
- Развертывание обновленного образа контейнера.
Перейдите к следующему руководству, чтобы узнать, как обновить кластер до новой версии Kubernetes.