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

Завершено

В этом разделе описана настройка организации Azure DevOps для продолжения работы с этим модулем и создание среды Служба Azure Kubernetes (AKS) для развертывания приложения.

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

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

Добавление пользователя в организацию

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

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

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

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

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

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

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

Запустите шаблон, чтобы настроить проект Azure DevOps для этого модуля:

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

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

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

    Screenshot of the Azure DevOps Demo Generator showing the process to create the project.

  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), чтобы предотвратить выполнение командой слишком много работы одновременно.

  1. Перейдите в Boards в Azure DevOps, а затем выберите Boards в меню.

    Screenshot of Azure DevOps showing the location of the Boards menu.

  2. Назначьте себе многоконтейнерную версию веб-сайта, оркеструемую с помощью рабочего элемента Kubernetes, выбрав стрелку вниз, расположенную в нижней части карта.

    Screenshot of Azure Boards showing the location of the down arrow.

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

    Screenshot of Azure Boards showing the card in the Doing column.

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

На этом шаге вы создадите необходимые Служба Azure Kubernetes ресурсы для развертывания новой версии контейнера веб-сайта.

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

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

Важно!

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

Запуск Cloud Shell

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

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

    Screenshot of the Azure portal showing the location of the Cloud Shell menu item.

Примечание.

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

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

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

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

  1. В Cloud Shell выполните следующую команду, чтобы вывести список регионов, доступных в подписке 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 и экземпляра службы Azure Kubernetes. Обратите внимание, что эти команды используют двойные кавычки, которые указывают Bash интерполировать переменные с помощью встроенного синтаксиса.

    registryName="tailspinspacegame${resourceSuffix}"
    aksName="tailspinspacegame-${resourceSuffix}"
    
  3. Создайте еще одну переменную Bash для хранения имени вашей группы ресурсов.

    rgName='tailspin-space-game-rg'
    
  4. Найдите последнюю версию AKS.

    az aks get-versions
    

    Запишите последнюю версию.

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

Примечание.

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

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

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

    az acr create \
      --name $registryName \
      --resource-group $rgName \
      --sku Standard
    
  3. az aks create Выполните команду, чтобы создать экземпляр AKS с указанным ранее именем. Замените <latest-AKS-version> версию, указанную ранее.

    az aks create \
      --name $aksName \
      --resource-group $rgName \
      --enable-addons monitoring \
      --kubernetes-version <latest-AKS-version> \
      --generate-ssh-keys
    

    Примечание.

    Завершение развертывания AKS может занять 10–15 минут.

  4. Создайте переменную для хранения идентификатора субъекта-службы, настроенного для экземпляра AKS:

    clientId=$(az aks show \
      --resource-group $rgName \
      --name $aksName \
      --query "identityProfile.kubeletidentity.clientId" \
      --output tsv)
    
  5. Создайте переменную для хранения идентификатора Реестра контейнеров Azure:

    acrId=$(az acr show \
      --name $registryName \
      --resource-group $rgName \
      --query "id" \
      --output tsv)
    
  6. az acr list Выполните команду, чтобы получить URL-адрес сервера входа для экземпляра Реестр контейнеров Azure (ACR):

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

    Обязательно запишите сервер входа для реестра контейнеров. Эти сведения потребуются позже при настройке конвейера. Приведем пример:

    LoginServer                      
    --------------------------------
    tailspinspacegame4692.azurecr.io
    
  7. az role assignment create Выполните команду, чтобы создать назначение ролей, чтобы авторизовать кластер AKS для подключения к Реестр контейнеров Azure:

    az role assignment create \
      --assignee $clientId \
      --role AcrPull \
      --scope $acrId
    

Важно!

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

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

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

  1. Войдите в организацию Azure DevOps и перейдите к проекту.

  2. Выберите "Конвейеры" и выберите "Библиотека " в области навигации слева.

    Screenshot of Azure Pipelines showing the Library menu option.

  3. Выберите группы переменных, а затем выберите +Группа переменных, чтобы добавить новую группу переменных.

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

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

  6. Введите RegistryName для имени переменной и для значения введите сервер входа Реестр контейнеров Azure, например tailspinspacegame4692.azurecr.io.

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

    Screenshot of Azure Pipeline showing the variable group. The group contains one variable.

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

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

Важно!

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

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

  1. Войдите в организацию Azure DevOps и перейдите к проекту.

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

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

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

  5. В верхней части страницы выберите Реестр контейнеров Azure и выберите субъект-службу для типа проверки подлинности.

  6. Введите следующие значения для каждого параметра.

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

  8. Выберите Сохранить, когда вы закончите.

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

Теперь вы создадите подключение службы Azure Resource Manager для проверки подлинности в кластере AKS. Мы используем подключение службы ARM вместо Kubernetes, так как долговременные маркеры больше не создаются по умолчанию, так как Kubernetes 1.24. Дополнительные сведения см. в этой записи блога DevOps: руководство по использованию служб Подключение ion для клиентов AKS с помощью задач Kubernetes.

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

  2. Выберите субъект-службу (автоматически) и нажмите кнопку "Далее".

  3. Выберите подписку для уровня область.

  4. Введите указанные ниже значения для каждого параметра.

    Параметр Значение
    Отток подписок Ваша подписка Azure
    Группа ресурсов Выберите созданный ранее объект
    Имя подключения службы Подключение к кластеру Kubernetes
  5. Убедитесь, что выбрано проверка box для предоставления доступа ко всем конвейерам.

  6. Выберите Сохранить, когда вы закончите.

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

  1. Выберите конвейеры и выберите среды.

    Screenshot of Azure Pipelines showing the Environments menu option.

  2. Выберите "Создать среду ", чтобы создать новую среду.

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

  4. Выберите "Нет" в разделе "Ресурс " и нажмите кнопку "Создать ", чтобы создать среду конвейера.

Обновление манифеста развертывания Kubernetes

В этом разделе вы обновите манифест Kubernetes deployment.yml , чтобы указать созданный ранее реестр контейнеров.

  1. Перейдите к учетной записи GitHub и выберите вилку репозитория для этого модуля: mslearn-tailspin-spacegame-web-kubernetes.

  2. Откройте файл манифестов/deployment.yml в режиме редактирования.

    Screenshot of GitHub showing the location of the edit mode icon.

  3. Измените ссылки на образы контейнеров, чтобы использовать ваш сервер входа в ACR. В следующем манифесте в качестве примера используется tailspinspacegame2439.azurecr.io .

    apiVersion : apps/v1
    kind: Deployment
    metadata:
      name: web
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: web
      template:
        metadata:
          labels:
            app: web
        spec:
          containers:
            - name: web
              image: tailspinspacegame4692.azurecr.io/web
              ports:
              - containerPort: 80
    
    apiVersion : apps/v1
    kind: Deployment
    metadata:
      name: leaderboard
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: leaderboard
      template:
        metadata:
          labels:
            app: leaderboard
        spec:
          containers:
            - name: leaderboard
              image: tailspinspacegame4692.azurecr.io/leaderboard
              ports:
              - containerPort: 80
    
  4. Зафиксируйте изменения в ветви main .