- Развертывание использования 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.
- Войдите в GCP Console Отказ
- Выберите проект, в котором развернута ваша функция.
- Активировать облачную оболочку.
Установите значения конфигурации по умолчанию, чтобы сохранить некоторые набрав. Замените [Project_id] и [Зона] с соответствующими значениями.
Создать учетную запись услуг:
Назначьте роль администратора хранения 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»