Упражнение. Настройка среды Azure DevOps

Завершено

В этом разделе вы узнаете, как настроить организацию Azure DevOps и создать среду Azure App Service, в которую будет выполняться развертывание.

Вы узнаете, как:

  • Настройте проект Azure DevOps.
  • Управление рабочими элементами с помощью Azure Boards.
  • Создайте среду Службы приложений Azure.
  • Создайте переменные конвейера в Azure Pipelines.
  • Создайте подключение к службе для проверки подлинности в подписке Azure.

Добавление пользователя в Azure DevOps

Чтобы завершить этот модуль, вам потребуется собственная подписка на Azure. Вы можете бесплатно приступить к работе с Azure.

Для работы с Azure DevOps не требуется подписка Azure, но в этом модуле вы будете использовать Azure DevOps для развертывания в ресурсах Azure. Чтобы упростить процесс, используйте одну и ту же учетную запись Майкрософт для входа в Azure и Azure DevOps.

Если вы используете разные учетные записи Майкрософт для входа в Azure и Azure DevOps, добавьте пользователя с уровнем доступа Basic к вашей организации DevOps в учетной записи Майкрософт, используемой для входа в Azure. Дополнительные сведения см. в статье Добавление пользователей в организацию или проект.

Затем выйдите из Azure DevOps и войдите обратно с помощью той же учетной записи, которую вы использовали для входа в подписку Azure.

Получение проекта Azure DevOps

Здесь вы убедитесь, что ваша организация Azure DevOps настроена для завершения остальной части этого модуля. Для этого вы запустите шаблон, создающий проект в Azure DevOps.

Модули в этом пути обучения формируют прогрессию. Вы следите за командой веб-разработчиков Tailspin в их процессе DevOps. Для обучения каждый модуль имеет собственный проект Azure DevOps.

Запуск шаблона

Запустите шаблон, который настраивает организацию Azure DevOps:

На сайте демонстрационного генератора Azure DevOps выполните следующие действия, чтобы запустить шаблон:

  1. Выберите войдите и примите условия использования.

  2. На странице Создание проекта выберите организацию Azure DevOps. Введите имя проекта, например Space Game - web - Docker.

    снимок экрана: создание проекта с помощью демонстрационного генератора Azure DevOps.

  3. Выберите Да, я хочу сделать форк этого репозитория>Авторизовать. При появлении запроса авторизуйте доступ к учетной записи GitHub.

    Важный

    Этот параметр необходимо выбрать, чтобы шаблон смог подключиться к репозиторию GitHub. Убедитесь, что выбрали чекбокс, даже если вы уже форкнули репозиторий Space Game. Шаблон будет использовать ваш существующий форк.

  4. Выберите Создать проект.

  5. Выберите Перейти к проекту, чтобы перейти к проекту в Azure DevOps.

Важно

В этом модуле страница Очистите свою среду Azure DevOps содержит важные шаги по очистке. Очистка помогает убедиться, что вы не упустите бесплатные минуты сборки. Следуйте инструкциям по очистке, даже если этот модуль не завершен.

Настройка видимости проекта

Изначально ваш форк репозитория Space Game на GitHub установлен как общедоступный, тогда как проект, созданный с помощью шаблона Azure DevOps, установлен как частный. Доступ к общедоступному репозиторию на GitHub может любой пользователь, а частный репозиторий доступен только вам и пользователям, с которыми вы хотите поделиться им. Аналогичным образом, в Azure DevOps общедоступные проекты предоставляют доступ только для чтения пользователям, не прошедшим проверку подлинности, в то время как частные проекты требуют предоставления пользователям доступа и проверки подлинности для доступа к службам.

На данный момент не требуется изменять какие-либо из этих параметров в целях этого модуля. Однако для личных проектов необходимо определить видимость и доступ, которые вы хотите предоставить другим пользователям. Например, если проект является открытым исходным кодом, вы можете сделать репозиторий GitHub и проект Azure DevOps общедоступным. Если проект является закрытым, обычно вы сделаете репозиторий GitHub и проект Azure DevOps закрытым.

Далее вы можете найти следующие ресурсы, которые помогут определить, какой вариант лучше всего подходит для вашего проекта:

Перемещение рабочего элемента в "Выполнение"

Здесь вы назначите себе рабочий элемент в Azure Boards. Вы также переместите рабочий элемент в состояние "Выполнение". На практике вы и ваша команда будете создавать рабочие элементы в начале каждого спринта или итерации.

Это рабочее задание предоставляет вам контрольный список, с которым вы можете работать. Он дает другим участникам команды представление о том, над чем вы работаете, и сколько работы осталось. Рабочий элемент также помогает применять ограничения на выполнение задач (WIP), чтобы команда не брала на себя слишком много работы одновременно.

Здесь вы перемещаете первый элемент, создать версию контейнера веб-сайта с помощью Docker, в столбец "Выполнение", а затем назначаете себя на рабочий элемент.

Чтобы настроить рабочий элемент, выполните следующие действия.

  1. В Azure DevOps перейдите к Boards. Затем в меню выберите Boards.

    снимок экрана Azure DevOps с расположением меню Boards.

  2. В рабочем элементе "Создание версии контейнера веб-сайта с помощью Docker" выберите стрелку вниз в нижней части карточки, а затем назначьте этот рабочий элемент себе.

    Снимок экрана Azure Boards, показывающий расположение стрелки вниз.

  3. Переместите рабочий элемент из столбца To Do в столбец "Выполнение".

    снимок экрана Azure Boards, показывающий карточку в столбце

В конце этого модуля вы переместите карточку в столбец Готово после завершения задачи.

Создание среды службы приложений Azure

В модуле "Создание конвейера выпуска с помощью Azure Pipelines" вы создали экземпляр службы приложений через портал Azure. Хотя портал является отличным инструментом для изучения предложений Azure, настройка компонентов, таких как Служба приложений, может стать громоздкой.

В этом модуле вы будете использовать Azure CLI для запуска ресурсов, необходимых для развертывания и запуска экземпляра службы приложений. Доступ к Azure CLI можно получить из терминала или с помощью Visual Studio Code.

Важный

Для выполнения упражнений в этом модуле необходимо иметь собственную подписку Azure.

Запуск Cloud Shell на портале Azure

  1. Перейдите к порталу Azure и войдите.

  2. Выберите Cloud Shell в строке меню, а затем выберите интерфейс Bash.

    снимок экрана портала Azure с расположением элемента меню Cloud Shell.

    Заметка

    Cloud Shell требует, чтобы ресурс хранилища Azure сохранял все файлы, создаваемые в Cloud Shell. При первом открытии Cloud Shell вам будет предложено создать группу ресурсов, учетную запись хранения и общую папку файлов Azure. Эта настройка автоматически используется для всех будущих сеансов Cloud Shell.

Выбор региона Azure

Регион — это один или несколько центров обработки данных Azure, расположенных в определенном географическом расположении. Восточная часть США, западная часть США и Северная Европа являются несколькими примерами регионов. Каждый ресурс Azure, например экземпляр службы приложений, выделяется для определенного региона.

Чтобы упростить процесс выполнения команд, начните с выбора региона по умолчанию. После указания региона по умолчанию последующие команды будут использовать этот регион по умолчанию, если не указан другой регион явным образом.

  1. Выполните следующую команду, чтобы получить список доступных регионов для подписки Azure.

    az account list-locations \
      --query "[].{Name: name, DisplayName: displayName}" \
      --output table
    
  2. Выберите регион, который находится близко к вашему расположению в столбце Name в выходных данных. Например, можно выбрать eastasia или westus2.

  3. Выполните следующую команду, чтобы задать регион по умолчанию. Замените заполнитель именем выбранного региона.

    az configure --defaults location=<REGION>
    

    В этом примере westus2 в качестве региона по умолчанию:

    az configure --defaults location=westus2
    

Создание переменных Bash

В этом разделе вы создадите переменные Bash, чтобы сделать процесс установки более удобным и менее подверженным ошибкам. Использование переменных для общих текстовых строк помогает избежать случайных опечаток.

  1. Из Cloud Shell создайте случайное число. Это упрощает создание глобальных уникальных имен для определенных служб на следующем шаге.

    resourceSuffix=$RANDOM
    
  2. Создайте глобально уникальные имена для веб-приложения службы приложений и реестра контейнеров Azure. Используя двойные кавычки в этих командах, Bash запрашивает интерполяцию переменных с помощью встроенного синтаксиса.

    webName="tailspin-space-game-web-${resourceSuffix}"
    registryName="tailspinspacegame${resourceSuffix}"
    
  3. Создайте еще две переменные Bash для хранения имен группы ресурсов и плана службы приложений.

    rgName='tailspin-space-game-rg'
    planName='tailspin-space-game-asp'
    

Создание ресурсов Azure

Заметка

В целях обучения вы получите параметры сети по умолчанию. Эти параметры делают сайт доступным из Интернета. На практике вы можете настроить виртуальную сеть Azure, которая размещает веб-сайт в сети, которая не является маршрутизируемой в Интернете, и что доступ к ней можно получить только вам и вашей команде. Позже вы можете перенастроить сеть, чтобы сделать веб-сайт доступным для пользователей.

  1. Выполните следующую команду az group create, чтобы создать группу ресурсов с помощью имени, определенного ранее.

    az group create --name $rgName
    
  2. Выполните следующую команду az acr create, чтобы создать реестр контейнеров Azure с помощью имени, определенного ранее.

    az acr create --name $registryName \
      --resource-group $rgName \
      --sku Standard \
      --admin-enabled true
    
  3. Выполните следующую команду az appservice plan create, чтобы создать план службы приложений с помощью имени, определенного ранее.

    az appservice plan create \
      --name $planName \
      --resource-group $rgName \
      --sku B1 \
      --is-linux
    

    Аргумент --sku указывает план B1. Этот план действует в тарифе "Базовый". Аргумент --is-linux указывает на использование рабочих процессов Linux.

    Важный

    Если номер SKU B1 недоступен в вашей подписке Azure, выберите другой план, например S1 (стандартный).

  4. Выполните следующую команду az webapp create, чтобы создать экземпляр службы приложений.

    az webapp create \
      --name $webName \
      --resource-group $rgName \
      --plan $planName \
      --deployment-container-image-name $registryName.azurecr.io/web:latest
    
  5. Выполните следующую команду az webapp list, чтобы указать имя узла и состояние экземпляра службы приложений.

    az webapp list \
      --resource-group $rgName \
      --query "[].{hostName: defaultHostName, state: state}" \
      --output table
    

    Запишите имя узла для запущенной службы. Вам это понадобится позже, когда будете проверять свою работу. Ниже приведен пример:

    HostName                                        State
    ----------------------------------------------  -------
    tailspin-space-game-web-4692.azurewebsites.net  Running
    
  6. Выполните следующую команду az acr list, чтобы получить список сервера входа экземпляра реестра контейнеров Azure. Это имя сервера потребуется при создании переменных конвейера позже.

    az acr list \
      --resource-group $rgName \
      --query "[].{loginServer: loginServer}" \
      --output table
    

    Обратите внимание на сервер входа. Вам потребуется позже при настройке конвейера. Ниже приведен пример:

    LoginServer
    ---------------------------------
    tailspinspacegame4692.azurecr.io    
    

Важный

Страница Очистка среды Azure DevOps в этом модуле содержит важные действия по очистке. Очистка помогает убедиться, что вам не начисляют плату за ресурсы Azure после завершения этого модуля. Не забудьте выполнить действия по очистке, даже если этот модуль не завершен.

Создание переменных конвейера в Azure Pipelines

В шаге Создание производственного конвейера с использованием Azure Pipelinesвы добавили переменную в конвейер, в котором хранится имя вашего веб-приложения в службе App Service. Вы сделаете то же самое здесь. Кроме того, вы добавите имя реестра контейнеров Azure.

Эти имена можно жёстко прописать в конфигурации конвейера обработки, но если вы определите их как переменные, конфигурация будет более универсальной. Кроме того, если имена экземпляров изменяются, можно обновить переменные и активировать конвейер, не изменив конфигурацию.

Чтобы добавить переменные, выполните следующие действия.

  1. В Azure DevOps перейдите к проекту Space Game — web — Docker.

  2. В разделе Конвейерывыберите Библиотека.

    снимок экрана Azure Pipelines с параметром меню

  3. Выберите и группу переменных.

  4. В разделе Свойствавведите Release для имени группы переменных.

  5. В разделе Переменныевыберите + Добавить.

  6. Введите имя переменной WebAppName. В качестве значения введите имя экземпляра службы приложений, созданного выше, например tailspin-space-game-web-4692.

    Важный

    Задайте имя инстанции службы приложений, а не её имя узла. В этом примере вы вводите tailspin-space-game-web-4692, а не tailspin-space-game-web-4692.azurewebsites.net.

  7. Повторите процесс, чтобы добавить другую переменную с именем RegistryName со значением сервера входа в реестр контейнеров Azure, например tailspinspacegame4692.azurecr.io.

  8. Выберите разрешения для пайплайна, а затем нажмите на иконку +, чтобы добавить пайплайн. Выберите mslearn-tailspin-spacegame-web-docker, чтобы предоставить конвейеру разрешение на доступ к группе переменных.

  9. Выберите Сохранить в верхней части страницы, чтобы сохранить переменные. Ваша группа переменных должна выглядеть следующим образом:

    снимок экрана Azure Pipeline с группой переменных. Группа содержит две переменные.

Создание необходимых подключений к службе

Здесь вы создадите подключение к службе, позволяющее Azure Pipelines получить доступ к подписке Azure. Azure Pipelines использует это подключение к службе для развертывания веб-сайта в Службе приложений. Вы создали аналогичное подключение к службе в предыдущем модуле. Вы также создадите подключение реестра Docker для публикации контейнера в реестре контейнеров Azure.

Важный

Убедитесь, что вы вошли на портал Azure и Azure DevOps под одной учетной записью Майкрософт.

  1. В Azure DevOps перейдите к проекту Space Game — web — Docker.

  2. В нижнем углу страницы выберите параметры проекта.

  3. В разделе Пайплайнывыберите подключения служб.

  4. Выберите Новое подключение службы, затем выберите Azure Resource Manager, затем выберите Далее.

  5. В верхней части страницы учетная запись службы (автоматически). Затем выберите Далее.

  6. Заполните следующие поля:

    Поле Ценность
    Уровень области Подписка
    Подписка Подписка Azure
    Группа ресурсов tailspin-space-game-rg
    Имя соединения с сервисом Resource Manager - Tailspin - Space Game

    Во время процесса может появиться запрос на вход в учетную запись Майкрософт.

  7. Убедитесь, что выбрано Предоставить разрешение на доступ ко всем конвейерам.

  8. Выберите Сохранить.

    Azure DevOps выполняет тестовое подключение, чтобы убедиться, что он может подключиться к подписке Azure. Если Azure DevOps не удается подключиться, у вас есть возможность войти во второй раз.

  9. Выберите Новое подключение службы, затем выберите Реестр Docker, а затем выберите Далее.

  10. В верхней части страницы выберите реестр контейнеров Azure.

  11. Заполните следующие поля:

    Поле Ценность
    Подписка Подписка Azure
    Реестр контейнеров Azure Выберите созданный ранее объект
    Имя подключения службы подключение реестра контейнеров
  12. Убедитесь, что выбрано предоставить разрешение на доступ ко всем конвейерам.

  13. Нажмите кнопку Сохранить по завершении.