Упражнение. Настройка среды 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, добавьте пользователя с уровнем доступа "Базовый " в организацию DevOps в учетной записи Майкрософт, используемой для входа в Azure. Дополнительные сведения см. в статье "Добавление пользователей в организацию или проект ".

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

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

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

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

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

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

  1. Получите и запустите проект ADOGenerator в Visual Studio или интегрированной среде разработки.

  2. При появлении запроса ввести номер шаблона из списка шаблонов введите 39 для автоматизации развертываний контейнеров Docker с помощью Azure Pipelines, а затем нажмите клавишу ВВОД.

  3. Выберите метод проверки подлинности. Вы можете настроить и использовать личный маркер доступа (PAT) или использовать имя входа устройства.

    Заметка

    Если вы настроили PAT, обязательно авторизуйте необходимые области. Для этого модуля можно использовать полный доступ, но в реальной ситуации необходимо предоставить только необходимые области.

  4. Введите имя вашей организации Azure DevOps, а затем нажмите ВВОД.

  5. Если появится запрос, введите Azure DevOps PAT, а затем нажмите клавишу ВВОД.

  6. Введите имя проекта, например Space Game - web - Docker, а затем нажмите Enter.

  7. После создания проекта перейдите в организацию Azure DevOps в браузере (по адресу https://dev.azure.com/<your-organization-name>/) и выберите проект.

Создание вилки репозитория

Если вы еще не сделали этого, создайте форк репозитория mslearn-tailspin-spacegame-web-docker.

  1. На сайте GitHub перейдите в репозиторий mslearn-tailspin-spacegame-web-docker .

  2. Выберите вилку в правом верхнем углу экрана.

  3. Выберите свою учетную запись GitHub в качестве владельца, затем выберите Создать форк.

Важный

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

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

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

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

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

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

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

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

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

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

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

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

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

    Снимок экрана: Azure Boards с расположением стрелки вниз.

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

    Снимок экрана Azure Boards, на котором показана карточка в столбце

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

Создание среды службы приложений 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. Выберите регион, ближайший к вашему местоположению, из столбца Название в выходных данных. Например, можно выбрать 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.

    Важный

    Если артикул 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" вы добавили переменную в конвейер, в который хранится имя веб-приложения в службе приложений. Вы сделаете то же самое здесь. Кроме того, вы добавите имя реестра контейнеров Azure.

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

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

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

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

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

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

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

  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. Нажмите кнопку "Сохранить " после завершения.