Автор оригинала: FreeCodeCamp Community Member.
Гаутам Арора
Google Cloud Platform (GCP) Предоставляет множество вариантов для Узел Разработчики легко развертывать наши приложения. Хотите управляемое решение для хостинга, как Heroku? Приложение Engine , чек об оплате! Хотите провести контейнерное приложение? Kubernetes Engine , чек об оплате! Хотите развертывать приложение без сервеса? Облачные функции , чек об оплате!
Недавно на работе я наслаждался использованием наших Внутренние непрерывные развертывающие услуги Это быстро строит, тесты и развертывает новые коммиты, отступили в Github. Поэтому, когда я читал о Google’s New Облако построить Сервис, я хотел взять его для спина и посмотреть, смогу ли я воссоздать аналогичный опыт бесшовного развертывания для себя. Далее, в разговоре с Франсизация Из команды Google Cloud, она определила это как область, где урок был бы полезным. Так что здесь мы идем …
Но подожди, что такое облачная сборка?
Cloud Build – это управляемая служба сборки в GCP, которое может вытащить код из различных источников, запускает серию шагов сборки для создания изображения сборки для приложения, а затем развернуть это изображение на флоте серверов.
Облачная сборка хорошо работает с собственным репозитором исходного кода Google, Bit Bucket или GitHub. Он может создать изображение сборки с помощью файла конфигурации Docker ( Dockerfile ) или собственного файла конфигурации Cloud Build ( CloudConfig.yaml ). Он может развернуть приложения (и API) для приложений, двигателя Kubernetes и облачных функций. Действительно крутая функция – строить триггеры. Они могут быть установлены, чтобы посмотреть для нового фиксации в репозитории кода и вызвать новую сборку и развертывание.
Прежде чем мы прыгаем в глубокий конец …
Этот пост разделяет подробные шаги и код для настройки непрерывного развертывания для приложений узла на GCP. Предполагается, что вы знакомы с разработкой простых приложений узла, работая с командной строкой, и иметь некоторое понимание высокого уровня развертывания приложений к облачным сервисам, таким как Heroku, AWS, Azure или GCP.
Для каждого из разделов для вас предусмотрен репозиторий Componious GitHub Code Code. Не потейте его, хотя – не стесняйтесь снимать статью, чтобы узнать о идеях высокого уровня, и вы можете добавить его в закладки и прийти к нему позже, если вы планируете установить это. Реальное удовольствие от установки, как таковой именно то, что вы можете быстро развернуть приложения.
Непрерывное развертывание для стандарта приложений
Развертывание приложения узла к App Engine довольно прост. Создайте новый проект в облачной консоли Google, добавьте App.yaml Файл конфигурации в нашем каталоге кода (который описывает время выполнения узла, которое мы хотим использовать – я использовал узел 8), и запустите Приложение GCloud Развертывает На нашем терминале – и сделано!
Если вы хотите попробовать это для себя, вот пара ресурсов:
Итак, что мы сделали до сих пор, следуя руководству QuickStart выше:
- Создан новый проект в Google Cloud Console
- Развернул приложение нашего узла в App Engine с использованием Развертывание приложения GCloud
…. Теперь, как мы можем автоматически автоматизировать настройки, что изменения кода автоматически разворачиваются на push to github?
Вот что нам нужно сделать:
- Поместите наш код на Github
- Перейти к Github, чтобы создать новый репозиторий
- Затем следуйте инструкциям, чтобы нажать код с вашей машины в GitHub
2. Включить облачную сборку
- Включить API Cloud Build Для нашего проекта
- Включите API App Engine для нашего проекта.
- Grant App Engine IAM на службу Cloud Build Service, перейдем к IAM страница Найдите эту учетную запись услуг
nt.com, отредактируйте его и дайте ему роль администратора приложений.@ cloudbuild.gserviceаccou
3. Создать Облачный файл конфигурации сборки
- Создать новый файл
CloudBuild.yamlЭто выглядит так:
steps:- name: 'gcr.io/cloud-builders/npm' args: ['install']- name: 'gcr.io/cloud-builders/npm' args: ['test']- name: "gcr.io/cloud-builders/gcloud" args: ["app", "deploy"]timeout: "1600s"
Эта конфигурация имеет три шага сборки (каждая строка, начиная с дефиса, является этапом сборки), которая будет работать NPM установить Тогда NPM Test И если все выглядит хорошо, затем разверните наш код в App Engine.
Каждый шаг сборки похож на команду, которую мы работаем на нашей машине. Но в этом случае, поскольку этот файл находится в YAML, и каждый шаг разделен на 2 строки имени и args, он может выглядеть как немного разум-Bender.
Давайте попробуем это: для линии, начиная с «name», прочитайте его последнее слово, а затем прочитайте значения в строке «args». Я надеюсь, что этот файл имеет больше смысла сейчас!
4. Запустите сборку вручную (необязательно, только для проверки)
- Теперь мы можем развернуть наше приложение с вашей машины, используя Cloud Build
- Запустите команду Cloud Build на вашем терминале:
GCloud Builds Отправить - config cloudbuild.yaml.Эта команда начинает сборку на облаке, используя файл конфигурации, который мы создали выше. - Перейти к Облако строит страницу чтобы увидеть, как выгнал сборку.
- Дождитесь завершения конфликта, а затем проверьте приложение у узла, используя URL App Engine для этого приложения.
- Вы можете внести изменения в приложение вашего узла и снова вызывать эту команду и начать больше сборки, если хотите.
5. Создайте триггер сборки
- Перейти к Облако строить триггеры страницы и выберите Создать триггер
- На странице настройки триггера сборки выберите GitHub в качестве репозитория исходного кода. Это потребует от того, чтобы вы разрешили GITHUB, которые вам нужно будет утверждать. После выполнения выберите репозиторий GitHUB для приложения вашего узла, которое вы нажали в Github ранее.
- Создать триггер с именем
Непрерывное развертываниеИ для типа триггера выберите ветвь с помощью Regex для имени ветви, какМастерОтказ Это гарантирует, что сборки, тестирование и развертывание будут запущены только для толкания на ветку Master, а не какую ветку. - Для файла конфигурации сборки выберите
CloudBuild.yaml. - Теперь нажмите кнопку «Создать триггер»
6. Запустите сборку автоматически, нажав фиксирую на GitHub
- С нашим созданием нашей сборки создайте простой коммит к приложению узла, например, изменение «Hello, World!» «Привет, GCP!» и совершить и протолкнуть этот код в github
- Вернитесь обратно Облако строит страницу И вы заметите, что сборка была автоматически вызвана автоматически (если это не так, дайте ему еще несколько секунд или нажмите кнопку обновления на странице)
- Как только сборка завершена, и вы видите зеленую проверку, вы можете посетить свое приложение, используя URL-адрес приложений и видим, что ваши изменения сейчас живут!
Вот скриншот для создания сборки через GitHub Push для нашего приложения:
Слишком хорошо, чтобы быть правдой?? Запустите этот последний шаг в несколько раз, чтобы проверить его еще несколько раз. Наше первое приложение теперь вносятся развернуты для приложений двигателя на каждом фиксации для мастера?
Непрерывное развертывание для двигателя Kubernetes
Отлично, поэтому мы настроили наше приложение для развертывания в App Engine на GitHub Push, но что, если мы хотели такую же настройку для наших контейнерных приложений? Давайте отдам его спин!
На высоком уровне развертывание приложения узла к двигателю Kubernetes имеет две основные задачи. Во-первых, приготовьте наше приложение: контейнеризируйте приложение с Docker, постройте его и нажмите изображение Docker в реестр контейнера Google. Затем настройте вещи на конце GCP: создайте кластер Kubernetes, создайте развертывание с изображением вашего приложения, а затем создайте услугу, чтобы обеспечить доступ к вашему запуску.
Если вы хотите попробовать это для себя, вот несколько ресурсов:
- Пример приложения для двигателя Kubernetes
- Контейнеризация приложения узла с Docker
- Разверните контейнерное приложение Hello World для двигателя Kubernetes
Итак, что мы сделали до сих пор, используя направляющие выше:
- Создал еще один новый проект в Google Cloud Console
- Создан кластер Kubernetes, развертывание и обслуживание
- Развернуто наше контейнерное приложение узла в двигатель Kubernetes, используя kubectl
… Но то, что мы хотим, – это постоянная настройка развертывания такая, что новый коммит выступает из строя и развертывания.
Вот что нам нужно сделать:
- Поместите наш код на Github
- Мы будем следовать тому же шагу, что и в разделе ранее на приложении двигателя. Создайте новый репозиторий и нажмите код с нашей машины до GitHub.
2. Включить облачную сборку
- Включить API Cloud Build Для нашего проекта
- Включите API Kubernetes Engine Для нашего проекта
- Grant Kubernetes Engine IAM до облачного обслуживания, собираясь на I AM Page Для этой службы учетной записи
nt.com, отредактируйте его и дайте ему роль администратора двигателя Kubernetes@ cloudbuild.gserviceаccou
3. Создайте файл конфигурации Cloud Build
- Создать новый файл
CloudBuild.yamlЭто выглядит так:
steps:- name: 'gcr.io/cloud-builders/npm' args: ['install']- name: 'gcr.io/cloud-builders/npm' args: ['test']- name: 'gcr.io/cloud-builders/docker' args: ["build", "-t", "gcr.io/$PROJECT_ID/my-image:$REVISION_ID", "."]- name: 'gcr.io/cloud-builders/docker' args: ["push", "gcr.io/$PROJECT_ID/image:$REVISION_ID"]- name: 'gcr.io/cloud-builders/kubectl' args: - 'set' - 'image' - 'deployment/my-deployment' - 'my-container=gcr.io/$PROJECT_ID/image:$REVISION_ID' env: - 'CLOUDSDK_COMPUTE_ZONE=us-east1-b' - 'CLOUDSDK_CONTAINER_CLUSTER=my-cluster'
Эта конфигурация имеет пять шагов сборки, которые будут работать NPM установить а потом NPM Test Чтобы убедиться, что наше приложение работает, то он создаст образец докера и нажмите на GCR, а затем развернуть наше приложение к нашему кластеру Kubernetes. Значения Мой кластер, мое развертывание и мой-контейнер В этом файле см. Ресурсы в кластере Kubernetes, которые мы создали (согласно руководству, которое мы следили выше). $ Revision_id Это вариабельное значение, которое облака впрыскивает введение в конфигурацию на основе фиксации GitHub, которая вызывает этот сборку.
4. Запустите сборку вручную (необязательно для проверки)
- Теперь мы можем развернуть наше приложение с вашей машины, используя Cloud Build
- Запустите команду Cloud Build на вашем терминале:
GCloud Builds Отправить - config cloudbuild.yaml.
Мы также передаем идентификатор ревизии в этой команде, поскольку мы работаем вручную, это строить, это срабатывает на Github.
- Перейти к Облако строит страницу чтобы увидеть сборку в действии.
- В конце сборки вы можете проверить приложение вашего узла, используя URL службы Kubernetes
- Вы можете внести изменения в приложение вашего узла и снова вызвать эту команду, чтобы построить больше сборку, если вы хотите
5. Создайте триггер сборки
- Шаги для настройки этого up такие же, как и из раздела выше для приложений двигателя. Перейти к Облако строить триггеры страницы Для этого проекта выберите правильный репозиторий GitHUB, создайте триггер под названием
Непрерывное развертываниетолько дляМастерветвь, и вы закончили. - Запустите сборку автоматически, нажав на GitHub
- Это также совпадает с разделом выше для приложений-двигателя – измените изменение, добавьте, комбинируйте и нажимайте на GitHub, который покинет сборку, которую вы можете увидеть на вашем Облако строит страница. После завершения сборки вы сможете увидеть обновленное приложение с помощью URL службы Kubernetes.
Вот скриншот для сборки сборки через GitHub Push для нашего приложения:
Шаги в этом разделе были в значительной степени так же, как раздел приложений. Основные различия заключались в том, что нам приходилось контейнеризировать наше приложение с Docker, раскрутит наши кластер Kubernetes, а затем иметь конфигурацию облачной сборки всего на несколько шагов.
Но в его ядре, облачная сборка и его строение триггеры работают почти одинаково и дают нам бесшовные опыт развертывания. Наше второе приложение теперь развернуто к двигателю Kubernetes на каждом коммитке для мастера ??
Непрерывное развертывание для облачных функций
Конечно, App Engine и Kubernetes Engine отлично великолепно, но как насчет автоматических развертываний для нашего приложения без сервеса? Я имею в виду, не имея серверов, чтобы вообще управлять на самом деле лучшим, верно? Давай сделаем это!
Развертывание приложения узла к облачным функциям потребует от нас создание нового проекта. Никакие файлы конфигурации не требуются, а только как только функции GCloud развертываются на нашем терминале, наши функции развернуты!
Если вы хотите попробовать это для себя, вот ресурсы, которые вам понадобится:
- Пример приложения для облачных функций
- Руководство по быстромустату для узла на облачных функциях
- Локально тестирование облачных функций с использованием эмулятора узла
Если вы следили на этом, вы, вероятно, можете уже открыть, какие шаги нам нужно сделать:
- Поместите наш код на Github
- Мы уже знаем, как это сделать
2. Включить облачную сборку
- Включить API Cloud Build Для нашего проекта
- Включить функции облачных API для нашего проекта.
- Grant Cloud Functions IAM на службу Cloud Build Service, собираясь на IAM страница Найдите эту учетную запись услуг
nt.com, отредактируйте его и дайте ему роль редактора проекта.@ cloudbuild.gserviceаccou
3. Создайте файл конфигурации Cloud Build
- Создать новый файл
CloudBuild.yamlЭто выглядит так:
steps:- name: 'gcr.io/cloud-builders/npm' args: ['install']- name: 'gcr.io/cloud-builders/npm' args: ['test']- name: 'gcr.io/cloud-builders/gcloud' args: - beta - functions - deploy - helloWorld - -- source=. - -- runtime=nodejs8 - -- trigger-http
Подобно конфигурации приложений, эта конфигурация имеет 3 шага для установки. Затем проверьте сборку, и если все хорошо, затем разверните его в облачных функциях.
4. Запустите сборку вручную (необязательно, для проверки)
- Теперь мы можем развернуть нашу функцию с нашей машины, используя Cloud Build
- Запустите это в вашем терминале:
GCloud Builds Отправить - config cloudbuild.yaml. - Перейти к Облако строит страницу чтобы увидеть сборку в действии.
- В конце сборки вы можете проверить свое приложение без сервера, используя URL-адрес функции облака
5. Создайте триггер сборки
- Шаги для настройки этого up такие же, как и из раздела выше для приложенного двигателя и двигателя Kubernetes. Перейти к Облако строить триггеры страницы Для этого проекта выберите правильный репозиторий GitHUB, создайте триггер под названием
Непрерывное развертываниетолько дляМастерветвь, и ты закончил.
6. Запустите сборку автоматически, нажав на GitHub
- Это также совпадает с разделом выше для приложений двигателя App & Kubernetes Engine: измените изменение, добавьте, комбинируйте и нажмите Github, что будет построить сборку, которое вы можете увидеть на вашем Облако строит страница. После завершения сборки вы сможете увидеть обновленное приложение, используя URL-адрес облачных функций
Вот скриншот для сборки сборки через GitHub Push для нашего приложения пример:
Облачные функции были суперпростыми в настройке с автоматическими сборками и создают «код → сборки → Test → push → Deploy» Workflow действительно быстро! Наше третье приложение теперь развернута для облачных функций на каждом коммитке для мастера ???
Обертывание
Фу! Мы покрывали много земли в этом посте. Если бы это был ваш первый раз, пытаясь GCP для узла, надеюсь, вы должны увидеть, насколько легко и просто это необходимо попробовать различные варианты. Если бы вы больше всего хотели понять, как настроить непрерывное развертывание для приложений на GCP, я надеюсь, что вы также не разочарованы!
Прежде чем идти, я просто хотел убедиться, что вы не пропустили тот факт, что все разделы имели пример приложения: Здравствуйте, мир для приложений , Здравствуйте, мир для Kubernetes Engine и Здравствуйте, мир для облачных функций Отказ
Вот и все сейчас! Давайте отправимся в какой-то код! ?
Спасибо за следующее вместе. Если у вас есть какие-либо вопросы или хотите сообщить о любых ошибках в этом посте, оставьте комментарий.
Если вы нашли эту статью полезную, не стесняйтесь?
И ты можешь Следуй за мной в Twitter здесь.