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

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

В этом руководстве (часть 7 из 8) обновляется пример приложения Vote Azure. Вы узнаете, как выполнять следующие задачи:

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

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

В предыдущих руководствах приложение было упаковано в образ контейнера. Этот образ был передан в Реестр контейнеров Azure, и вы создали кластер AKS. Затем приложение было развернуто в кластере AKS.

Кроме того, был клонирован репозиторий приложения, включая исходный код приложения и предварительно созданный файл Docker Compose, используемый в этом руководстве. Проверьте, создали ли вы клон репозитория и изменили ли каталоги на клонированный каталог. Если вы не выполнили эти действия и хотите продолжить изучение материала, начните с первого раздела руководства по подготовке приложения для Службы Azure Kubernetes (AKS).

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

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

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

vi azure-vote/azure-vote/config_file.cfg

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

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

Сохраните файл и закройте его. В vi используйте команду :wq.

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

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

docker-compose up --build -d

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

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

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

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

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

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

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

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

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

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

Примечание

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

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

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

Чтобы обеспечить максимальное время доступности, должны быть запущены несколько экземпляров группы контейнеров приложения. Проверьте число запущенных экземпляров внешнего интерфейса с помощью команды 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. По мере развертывания обновленного приложения ваши группы контейнеров прекращают работу и воссоздаются с новым образом контейнера.

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 для голосования, выполняемого в кластере AKS и открытого в веб-браузере.

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

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

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

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