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

Завершено

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

Для выполнения этих целей выполните следующие задачи:

  • Добавьте пользователя, чтобы убедиться, что Azure DevOps может подключиться к подписке Azure.
  • Настройте проект Azure DevOps для этого модуля.
  • В Azure Boards переместите рабочий элемент для этого модуля в столбец "Выполнение ".
  • Убедитесь, что проект настроен локально, чтобы можно было отправлять изменения в конвейер.
  • Создайте службу приложений Azure и приложение "Функции Azure" с помощью Azure CLI в Azure Cloud Shell.
  • Создайте переменные конвейера, определяющие имена экземпляров Службы приложений и Функций Azure.
  • Создайте подключение к службе, позволяющее Azure Pipelines безопасно получить доступ к подписке Azure.

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

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

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

Важный

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

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

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

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

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

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

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

Важный

Генератор демонстрации Azure DevOps больше не поддерживается, но вы по-прежнему можете использовать его для создания демонстрационных сред. В настоящее время нет замены, и ее функции или доступность могут измениться в будущем.

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

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

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

    Заметка

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

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

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

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

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

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

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

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

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

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

Важный

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

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

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

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

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

Назначьте рабочий элемент и переместите его в состояние "Выполнение"

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

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

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

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

  2. Откройте API списка лидеров рефакторинга в качестве рабочего элемента функции Azure , выбрав заголовок. Назначьте этот рабочий элемент себе, а затем нажмите кнопку "Сохранить и закрыть".

  3. Щелкните стрелку вниз в нижней части карточки и выберите " Сделать" или выберите карточку и перетащите ее в столбец "Выполнение".

    Снимок экрана с карточкой рабочего элемента, выделяющей расположение стрелки вниз.

  4. Рабочий элемент перемещается из столбца "Do" в столбец "Выполнение ".

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

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

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

Здесь вы создадите приложение Службы приложений и Функций Azure, необходимые для развертывания новой версии сайта и API.

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

Важный

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

Создание Cloud Shell с помощью портала Azure

  1. Войдите на портал Azure .

  2. В верхней части страницы с глобальными элементами управления выберите Cloud Shell.

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

    Откроется терминал и подключается к Azure Cloud Shell.

  3. При необходимости выберите Bash в меню терминала.

    Заметка

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

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

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

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

  1. В Cloud Shell выполните следующую команду az account list-locations, чтобы получить список регионов, доступных в подписке Azure:

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

  3. Запустите az configure, чтобы задать регион по умолчанию. Замените <REGION> именем выбранного региона.

    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}"
    leaderboardName="tailspin-space-game-leaderboard-${resourceSuffix}"
    storageName="tailspinspacegame${resourceSuffix}"
    
  3. Создайте еще две переменные Bash для хранения имен группы ресурсов и плана обслуживания.

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

Создание необходимых ресурсов Azure

Для развертывания решения требуется несколько ресурсов Azure, создаваемых сейчас.

Заметка

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

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

    az group create --name $rgName
    
  2. Выполните следующую команду 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 (Стандарт).

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

    az webapp create \
      --name $webName \
      --resource-group $rgName \
      --plan $planName \
      --runtime "DOTNETCORE|8.0"
    
  4. Для развертывания функций Azure требуется учетная запись хранения. Выполните следующую команду az storage account create, чтобы создать ее:

    az storage account create \
      --name $storageName \
      --resource-group $rgName \
      --sku Standard_LRS
    
  5. Выполните следующую команду az functionapp create, чтобы создать экземпляр приложения Azure Functions. Замените <region> предпочитаемым регионом.

    az functionapp create \
      --name $leaderboardName \
      --resource-group $rgName \
      --storage-account $storageName \
      --functions-version 4 \
      --consumption-plan-location <region>
    
  6. Выполните следующую команду 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
    
  7. Выполните следующую команду az functionapp list, чтобы указать имя узла и состояние экземпляра Функций Azure.

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

    Запишите имя узла для работающей службы. Он должен выглядеть примерно так, как показано ниже, но с другим идентификатором случайного числа. При проверке работы вам позже потребуется имя хоста в таблице лидеров.

    HostName                                                State
    ------------------------------------------------------  -------
    tailspin-space-game-leaderboard-4692.azurewebsites.net  Running
    
  8. Скопируйте эти два имена узлов в расположение, к котором можно легко получить доступ позже.

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

Важный

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

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

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

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

Добавьте в проект группу переменных.

  1. Ваш проект Space Game — веб-проект Функций Azure должен быть открыт в Azure DevOps.

  2. В меню выберите "Конвейеры", а затем в разделе " Конвейеры " выберите "Библиотека". Появляется панель библиотеки.

    Снимок экрана: меню Azure DevOps, в котором выделен параметр библиотеки в разделе

  3. На панели команд или в середине панели выберите группу переменных. Откроется страница "Новая группа переменных ".

  4. В поле имени группы переменных введите Release.

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

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

    Важный

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

  7. Добавьте ещё одну переменную с именем LeaderboardAppName со значением вашего экземпляра приложения таблицы лидеров, например tailspin-space-game-leaderboard-4692.

  8. Добавьте окончательную переменную с именем ResourceGroupName со значением tailspin-space-game-rg.

  9. В строке команд в верхней части страницы нажмите кнопку "Сохранить ", чтобы сохранить группу переменных выпуска в конвейере.

    Переменные в группе переменных должны быть похожими:

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

Создание среды пиковых значений

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

  1. В меню Azure DevOps в разделе Пайплайны выберите Среды.

    Скриншот Azure Pipelines, показывающий расположение пункта меню

  2. Выберите "Создать среду". Откроется панель "Новая среда ".

  3. В поле Имя введите spike.

  4. Оставьте оставшиеся поля по умолчанию.

  5. Нажмите кнопку "Создать".

Создание подключения к службе

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

Важный

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

  1. В Azure DevOps, Space Game — веб-проект конвейера Функций Azure под меню выберите параметры проекта. Появится панель сведений о проекте .

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

  3. На странице "Подключения службы " выберите "Создать подключение службы", а затем в области "Создать подключение службы " выберите Azure Resource Manager и нажмите кнопку "Далее".

  4. В области "Создать подключение к службе" выберите "Учетная запись службы (автоматически)", а затем выберите "Далее".

  5. В панели нового подключения к службе Azure выберите или введите следующие параметры:

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

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

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

  7. Нажмите кнопку "Сохранить".

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