Рубрики
Uncategorized

Azure DevOps Рецепт: развертывание функции Google Cloud для GCP

Развертывание использования Google Cloud Build Развертывание с помощью трубопроводов Azure Настройка службы Google Acco … Теги с Azure, DevOps, GCP, GoogleCloudFunction.

  • Развертывание использования Google Cloud Build
  • Развертывание использования лазурных трубопроводов
    • Настройка учетной записи Google Service
    • Хранение ключа безопасности
    • Создание CI/CD-трубопровода
  • Последние мысли

Само собой разумеется, что Azure DevOps Pirelines и Azure Cloud — это естественная посадка. Развертывание для Azure упрощает со многими готовыми шаблонами и Azure CLI, установленным по умолчанию на управляемых агентах. Однако реальность заключается в том, что многие компании должны иметь дело с несколькими облачными окружающей средой. Было бы полезно, если мы сможем управлять нашими сборками и развертыванием в одном месте, независимо от того, какой облачный провайдер используется. В этом рецепте мы рассмотрим параметры развертывания для функции Google Cloud на GCP и пройти по подробным этапам создания CI/CD-трубопровода в Azure DEVOPS. С целью этого упражнения мы предполагаем, что вы уже разработали функцию. Если нет, вы можете использовать один из многих учебных пособий, Как этот , чтобы создать один.

Использование Google Cloud Build

Таким образом, один из способов развертывания облачной функции будет использовать нативную сборку Google Cloud. Мы можем настроить подключен внешний Облачный репозиторий на https://source.cloud.google.com Это будет автоматически синхронизировано с нашим основным репо. Тогда мы можем создать Облачный построить триггер Это может запустить трубопровод YAML, не являющейся разнообразным до одного. Когда новое изменение выталкивается в GIT REPO, он будет синхронизирован для хранилища Google и вызвать сборку и развертывание. Однако есть несколько вопросов с этим. Прежде всего, внешний репозиторий может быть размещен только на GitHub или Bitbucket, как видно на скриншоте ниже. Поэтому, если ваш исходный код находится в Azure Reppos или где-либо еще, вы не повезете. Но самое главное, он перемещает контроль и аудит из Azure DevOps, и это противоречит нашей цели, чтобы держать все под одной крышей.

Используя лазурные трубопроводы

К счастью, лазурные трубопроводы достаточно гибки, чтобы развернуть практически любую среду. Мы будем описывать основные шаги, чтобы сделать это для функций Google Cloud и GCP.

Настройка учетной записи услуг

Нам понадобится учетная запись службы Google для обеспечения связи между лазурными трубопроводами и GCP. Принимая из Документация Google Вот как это сделать, используя Google Cloud Shell.

  1. Войдите в GCP Console Отказ
  2. Выберите проект, в котором развернута ваша функция.
  3. Активировать облачную оболочку.
  4. Установите значения конфигурации по умолчанию, чтобы сохранить некоторые набрав. Замените [Project_id] и [Зона] с соответствующими значениями.

  5. Создать учетную запись услуг:

  6. Назначьте роль администратора хранения IAM на учетную запись службы:

Нам также необходимо генерировать и загрузить ключ службы учетной записи для использования позже на лазурном конвейере. Самый простой способ — перейти к меню учетных записей IAM & Admin/Service и выберите «Изменить» на Azure-Pipelines-Publisher @ [project_id] .iam.gserviceacoucount.com что мы только что создали. Затем создайте ключ как на скриншоте ниже. Сохраняйте файл, поскольку мы собираемся использовать его через минуту.

Хранение Ключ службы учетной записи в Azure DevOps

Мы в значительной степени закончили с Google Platform, давайте переключаемся на Azure Devops и продолжить там. Чтобы загрузить файл JSON Перейдите на страницу библиотеки под панелью навигации по трубопроводу и выберите вкладку «Защищенные файлы». Здесь мы можем добавить наш ключ в библиотеку. После того, как ключ загружен, отредактируйте его и переключите «авторизовать для всех трубопроводов», чтобы иметь возможность использовать его в нашем трубопроводе.

Создание CI/CD-трубопровода

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

  • Во-первых, давайте будем использовать безопасный ключ, который мы загрузили ранее:
- task: DownloadSecureFile@1
  name: authkey
  displayName: 'Download Service Account Key'
  inputs:
    secureFile: 'GoogleServiceAccountKey.json'
    retryCount: '2'
  • Далее нам нужен SDK Cloud Google для развертывания нашей функции.

!!! Обновление 2020-05: Хорошие новости, на хостах «Ubuntu» Hosts Google Cloud SDK (292.0.0) устанавливается по умолчанию. Так что вы, вероятно, можете пропустить этот шаг. Смотрите эту ссылку для получения более подробной информации: Ubuntu1804.

Самая большая проблема состоит в том, что SDK Google Cloud не устанавливается на Microsoft Hosted Agents, понятно, что так. Есть пара способов сделать это. Официальная документация Google не работал для меня, хотя и прямо из ворот. Но вы можете следить за ссылкой, если вы хотите установить его, используя apt-get. Кроме того, мы можем получить пакет непосредственно с сайта Google загрузки.

- script: |
    wget https://dl.google.com/dl/cloudsdk/release/google-cloud-sdk.tar.gz
    tar zxvf google-cloud-sdk.tar.gz && ./google-cloud-sdk/install.sh --quiet --usage-reporting=false --path-update=true
    gcloud --quiet components update
  displayName: 'install gcloud SDK'
  • Наконец, мы готовы развернуть функцию:
- script:
    gcloud auth activate-service-account --key-file $(authkey.secureFilePath)
    gcloud functions deploy [FUNCTION_NAME] --runtime nodejs8 --trigger-http --region=[REGION] --project=[PROJECT_ID]
  displayName: 'deploy cloud function'

Как обычно, вот полный исходный код укладки YAML:

Последние мысли

Когда вы работаете в мульти-облачной среде, особенно важно консолидировать Операции DEVOPS для лучшего контроля, мониторинга и аудита. Azure DevOps может стать одним из ответов, так как он позволяет развертывать несколько платформ и интегрирует множество аспектов жизненного цикла разработки программного обеспечения в сплоченную, простоту использования продукта. В качестве примера в этом рецепте мы создали образец CI/CD-конвейера для развертывания функции Google для GCP.

Я надеюсь, что это было полезно, вот кот (в облаке!) для тебя.

Оригинал: «https://dev.to/ib1/azure-devops-recipe-deploying-google-cloud-function-to-gcp-22l3»