Рубрики
Uncategorized

2 облака 1 трубопровод

Вы, наверное, слышали о CI/CD или DevOps. Может быть, вы прочитали мою статью для инструментов или выслушали … Tagged с облаком, трубопроводом, облачным, DevOps.

Вы, наверное, слышали о CI/CD или DevOps. Может быть, вы прочитали мою статью для инструментов или выслушали Технологический варенье Подкаст я со-ведущий.

Создайте/тестируйте/разверните приложение Go, используя IBM Cloud Chans

Лиам Конрой Хэмптон ・ 24 сентября 2010 ・ 10 мин. читать

Где бы вы это ни слышали, это горячая тема, и в ней так много элементов. В этом блоге я покажу вам, как я развертываю два микросервиса в два разных облака. Однако у меня есть поворот сюжета. Я использую только 1 трубопровод. Это называется мульти-облачным развертыванием, методом, который имеет много преимуществ от экономии затрат до безопасности и надежности. Это становится более популярным методом развертывания облака, и эта статья просто царапает поверхность.

3 вывода из этой статьи:

  1. Узнайте что -то новое о CI/CD
  2. Узнайте, как написать трубопровод Tekton
  3. Понять, как легко развернуться в более чем одно облако

Для контекста я написал клиентское приложение в Golang и приложение Server в Node.js. Приложение GO отправит/опубликует часть данных через поле ввода формы, а приложение Node получит это и отобразит его. Довольно просто Но это делает работу.

Если вы также хотите сделать это, вот несколько предварительных рек:

  • IBM Cloud Account
  • Digitalocean Cloud Account
  • Github account
  • 2 микросервиса (убедитесь, что они находятся в GitHub или эквивалентны). Не стесняйтесь использовать мою и просто подготовить значения на протяжении всей демонстрации
  1. Приложение Node.js Server
  2. Golang Client App

Строительство трубопровода Тектона

Tekton — это цель для рыцарских приложений. Он обрабатывает контейнеры и развертывание в рыжая среда. Принимая во внимание, что ранее у вас был Jenkinsfile или Travis.yaml в корне вашего проекта, вам не обязательно нужно это в Тектоне (по крайней мере, для этой демонстрации).

Трубов Tekton предоставляет новые ресурсы с помощью пользовательских определений ресурсов (CRD). Это:

  • Трубопровод
  • Задача
  • Задача
  • Pipelineruns
  • PipelinerSources

Тубопровод Tekton может состоять из многих задач, и в рамках задач может быть много шагов. Это станет яснее, когда мы пойдем вместе.

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

Шаг 1 — Установите учетные записи IBM и DigitaloCean Cloud и приобретать ключи доступа

Просто перейдите по этим ссылкам, чтобы зарегистрироваться (они бесплатны)

IBM токеновое создание

  1. Войдите в консоли управления облаком IBM
  2. Manage -> Access (iam) -> API -клавиши -> Создайте ключ API IBM Cloud

Цифрояковое создание токенов

  1. Петь в консоли управления DigitalOcean
  2. Выберите API из списка слева
  3. Выберите Токен/ключи вкладка
  4. Нажмите Генерировать новый токен

Держите оба этих клавиша API в безопасности и убедитесь, что вы знаете, что такое. Вы не сможете увидеть их снова.

Шаг 2 — Напишите трубопровод YAML

Файл 1развертывание-pipeline.yaml

В этом файле вы можете увидеть основной поток трубопровода. Сначала он выполнит Pipeline-IBM-Cloud-Install-Task А потом он выполнит Pipeline-Do-Cloud-Install-Task Анкет

apiVersion: tekton.dev/v1beta1
kind: Pipeline
metadata:
  name: deployment-pipeline
spec:
  params:
    - name: ibmcloudapikey
      description: The IBM Cloud API Key
    - name: doauth
      description: The DigitalOcean API Key
    - name: file
      description: The node app repository contents to download
    - name: uuid
      description: A unique identifier
  tasks:
    - name: pipeline-ibm-cloud-install-task
      taskRef:
        name: ibm-cloud-install-task
      params:
        - name: ibmcloudapikey
          value: $(params.ibmcloudapikey)
        - name: file
          value: $(params.file)
        - name: uuid
          value: $(params.uuid)
    - name: pipeline-do-cloud-install-task
      runAfter: pipeline-ibm-cloud-install-task
      taskRef:
        name: do-cloud-install-task
      params:
        - name: doauth
          value: $(params.doauth)
        - name: uuid
          value: $(params.uuid)

Файл 2IBM-Cloud-Install-task.yaml

Это Задача И у него есть один шаг. Основное изображение, объявленное, является IBMCOM/IBM-Cloud-Developer-Tools-AMD64: 1.2.3 и у него есть ibmcloud cli Предварительно установлен и настроен. Сначала он загружает молнию моего проекта от GitHub. Во -вторых, он использует IBMCloud CLI для аутентификации моей облачной учетной записи IBM и подтолкнул мой проект в CloudFoundry.

apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
  name: ibm-cloud-install-task
spec:
  params:
    - name: ibmcloudapikey
      type: string
    - name: file
      type: string
    - name: uuid
      type: string
  steps:
    - name: login-and-deploy-function
      image: ibmcom/ibm-cloud-developer-tools-amd64:1.2.3
      script: |
        #!/usr/bin/env sh
        apk add zip
        mkdir -p ./application
        wget $(params.file) -O nodeapp.zip
        unzip ./nodeapp.zip -d ./application
        rm nodeapp.zip
        echo $(params.uuid)
        cd application/microservice-node-demo-main

        ibmcloud login -a cloud.ibm.com -r eu-gb -g Default -apikey $(params.ibmcloudapikey)
        ibmcloud cf install
        ibmcloud target --cf
        ibmcloud cf push liams-node-app -m 128M
        echo PUSHED TO IBM CLOUD CF

Обязательно измените имя вашего приложения, изменив строку ibmcloud cf push Анкет

Файл 3Do-Cloud-Install-Task.yaml

Это Задача использует ванильное альпийское изображение, устанавливая цифровой CLI ( doctl ), создавая приложение спецификация (развертывание .yaml File Digitalocean ожидает), а затем, наконец, развертывание приложения. Приложение спецификация Состоит из ограничений, которые я хочу навязать свою заявку при развертывании. Как вы можете видеть, у меня есть жесткая переменная среды ( Это может быть субсизировано параметром, но это всего лишь базовая демонстрация.

В приведенном ниже коде убедитесь, что вы скопируете свои собственные значения в биты, которые нуждаются в изменении ( repo_clone_url и Одобрение ценность) и адаптируйте его к вашим потребностям приложений. Digitalocean App Spec Анкет

Если вы используете мои репозитории, просто подразделяют значения.

apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
  name: do-cloud-install-task
spec:
  params:
      - name: doauth
        type: string
      - name: uuid
        type: string
  steps:
    - name: login-and-deploy-function
      image: alpine:3.13.0
      script: |
        #!/usr/bin/env sh
        echo pipeline-uuid-$(params.uuid)
        apk add wget
        wget https://github.com/digitalocean/doctl/releases/download/v1.54.0/doctl-1.54.0-linux-amd64.tar.gz
        tar xf doctl-1.54.0-linux-amd64.tar.gz
        mv doctl /usr/local/bin
        mkdir -p ./appspec
        cd appspec/
        touch client-go-app.yaml
        ls -la
        cat >> client-go-app.yaml <
              branch: do-deploy
            build_command: go build -o goapp
            run_command: ./goapp
            envs:
              - key: APPROUTE
                value: https://.eu-gb.mybluemix.net
            instance_count: 1
        EOF
        pwd
        doctl auth init -t $(params.doauth)
        doctl apps create --spec client-go-app.yaml
        echo App deployed to DigitalOcean

В настоящее время это не сработает, и вы узнаете, почему вскоре

После того, как эти файлы будут созданы, создайте новый репозиторий в GitHub и встаньте в него эти файлы.

Шаг 3 — Создайте свой инструмент в IBM Cloud

  • Войдите в свое облако IBM учетная запись
  • Перейдите в раздел DevOps в IBM Cloud, используя меню навигации слева (оно примерно на полпути вниз по списку)
  • Выберите свой регион (я выбрал Лондон), а затем нажмите на Создайте набор инструментов
  • Прокрутите вниз внизу и выберите «Создайте свой собственный инструмент»
  • Дайте ему имя и покинуть регион и ресурсную группу в качестве значения по умолчанию

Теперь вы создали основу для строительства. На этом этапе ваш инструмент будет пустой, поэтому давайте заполним его.

  • В правом верхнем углу нажмите кнопку Добавить инструмент и искать GitHub Анкет Это будет использоваться для доступа к микросервисам в GitHub или эквивалентном сервере.

Заполните детали:

  1. Сервер — где проецирует проекты (по умолчанию github).
  2. Тип репозитория — изменить это на Существующий Поскольку ваши проекты уже существуют.
  3. URL -адрес репозитория — это URL проекта HTTPS (не .GIT URL).
  4. Владелец интеграции — Это ваше имя пользователя GitHub. Вы можете быть предложены, чтобы разрешить инструмент доступа к вашему профилю GitHub. После подключения он будет автоматически заполнять.

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

Повторите эти шаги и добавьте новый GitHub Инструмент в инструментальном положении для каждого репозитория GitHub. 1 для каждого микросервиса и 1 для репозитория трубопровода Tekton.

Как только вы это сделаете, добавьте один последний инструмент. Это верно, последний инструмент! Нажмите Добавить инструмент и искать Трубопровод доставки Анкет Это рабочая лошадка в этом инструментальном положении.

Выберите его и продолжайте заполнить следующее:

  1. Название трубопровода — дайте ему уникальное имя
  2. Тип трубопровода — Здесь у вас есть 2 варианта. Классик , который обеспечивает графический интерфейс и позволяет развернуть ваши приложения в CloudFoundry и Tekton , облачный нативный инструмент CI/CD. Выберите Tekton из списка.

Теперь нажмите на Создать интеграцию Анкет

Если вы получите ящик с ошибкой, говорящий «Требуется непрерывная служба доставки» не паникуйте. В основной строке поиска облака IBM найдите непрерывную доставку и выберите «Непрерывную доставку» — вам нужно сделать это только один раз! Очень просто настроить эту услугу. Убедитесь, что регион установлен так же, как ваш инструмент (шахта Лондона), дайте ему разумное имя, такое как «Служба доставки инструментов» и нажмите Создать Анкет Теперь вернитесь к своему набору инструментов, и ошибка должна исчезнуть.

Теперь это должно выглядеть так:

Шаг 4 — Настройте трубопровод Tekton

Нажмите на Трубопровод доставки инструмент И это приведет вас к Конфигурация TektonPipeline приборная доска.

В левой стороне экрана вы увидите список. Это следующие:

Определения — Это определяет код трубопровода, который будет выполнен на триггере. Мы создали 3 Tekton .yaml Файлы на шаге 2. Нажмите на Добавлять И вам дадут всплывающее окно. Для Репозиторий Выберите репозиторий трубопровода Tekton, который имеет .yaml Файлы, которые мы создали ранее. Выбрал Главный ветвь в следующей коробке и оставить Дорожка Бланк, если вы оставили файлы в корневом каталоге репозитория проекта. Нажмите Добавить Анкет Как только код загрузится, нажмите на Подтвердить , подождите, пока это закончит, а затем нажмите Сохранить Анкет

Рабочий — По сути, как будет работать ваш трубопровод. Вы можете иметь посвященные частных работников или те, которые из общего пула ресурсов. Мы просто будем использовать общий ресурс, поэтому выберите IBM Managed Workings (Tekton Pipelines vx.xx.x) в Лондоне и нажмите Сохранить Анкет

Триггеры — Они указывают, что происходит, когда происходит событие. Чаще всего они будут триггерами событий из веб -крючка на GitHub, например, запрос на притяжение или новый коммит или слияние. Однако в этом блоге мы будем использовать ручный триггер. Мы настроем это в ближайшее время.

Свойства окружающей среды — Ключ: Пары значений, которые можно использовать из вашего трубопровода. Они ссылаются как $ (Params) в .yaml файлы Здесь нам нужно Добавить 4 Свойства Evironment для этой трубы правильно работают, и они есть:

Доат Безопасный Digitalocean API -ключ
файл Текст .zip URL 1 Repsitory Project (мой проект узел)
ibmcloudapikey Безопасный IBM Cloud API -ключ
uuid Текст Уникальный идентификатор, например, 1234

.zip +/archive/main.zip, например,: https://github.com/liamchampton/microservice-node-demo/archive/main.zip

Другие настройки — Используйте эти настройки для более детального управления над сборками. Для этой демонстрации мы не будем касаться этого.

Теперь все было настроено. Кодекс трубопровода был импортирован, работники были установлены, а свойства Evironment были установлены. Похоже, что хорошо идти .. верно? Попробуйте нажмите на Запустить трубопровод В правом верхнем углу экрана.

Психо! Попался! Это не сработает, потому что у нас нет триггера. Он не знает, что делать, когда эта кнопка нажимается, поэтому мы должны это сказать.

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

Нам нужно пересмотреть наш репозиторий кода трубопровода и добавить еще несколько файлов. Я назвал это Hello-xxx.yaml Чтобы дать ощущение, я включаю с ним новый разговор, но вы можете назвать их все, что вам нравится, просто убедитесь, что изменить код корпоспособности.

Файл 4Hello-lister.yaml

apiVersion: tekton.dev/v1beta1
kind: EventListener
metadata:
  name: hello-listener
spec:
  triggers:
    - binding:
        name: hello-trigger-binding
      template:
        name: hello-trigger-template

Файл 5hello-trigger-связывание.yaml

apiVersion: tekton.dev/v1beta1
kind: TriggerBinding
metadata:
  name: hello-trigger-binding
spec:
  params:
    - name: ibmcloudapikey
      value: $(event.ibmcloudapikey)
    - name: doauth
      value: $(event.doauth)
    - name: file
      value: $(event.file)
    - name: uuid
      value: $(event.uuid)

Файл 6hello-trigger-template.yaml

apiVersion: tekton.dev/v1beta1
kind: TriggerTemplate
metadata:
  name: hello-trigger-template
spec:
  params:
    - name: ibmcloudapikey
      description: The IBM Cloud API Key
    - name: doauth
      description: The DigitalOcean API Key
    - name: file
      description: The node app repository to be downloaded
    - name: uuid
      description: A unique identifier
  resourcetemplates:
    - apiVersion: tekton.dev/v1beta1
      kind: PipelineRun
      metadata:
        name: pipelinerun-$(params.uuid)
      spec:
        pipelineRef:
          name: deployment-pipeline
        params:
          - name: ibmcloudapikey
            value: $(params.ibmcloudapikey)
          - name: doauth
            value: $(params.doauth)
          - name: file
            value: $(params.file)
          - name: uuid
            value: $(params.uuid)

Вставьте эти новые файлы в свою основную ветвь на GitHub и внутри вашей панели трубопроводов в IBM Cloud, перейдите к Определения -> Нажмите 3 точки на уже импортированном репозитории -> Редактировать -> Нажмите на Обновление Кнопка -> Подтвердить -> Сохранять

Отправляйтесь в Триггеры Страница, а затем нажмите Добавить триггер Анкет Выберите Руководство . У вас должен быть только 1 EventListener на выбор, и его следует называть Привет-listener Анкет На Рабочий поле, выберите опцию Унаследовать от конфигурации трубопровода Поскольку это будет использовать общий бассейн или работы, точно так же, как мы настроены ранее. Нажмите Сохранить Анкет

Вахо! Вы закончили настройку своего трубопровода Tekton!

Теперь все, что осталось сделать, это запустить .. Нажмите Запустить трубопровод , введите uuid Значение для запуска трубопровода и нажмите Запустить Анкет Смотрите, как происходит волшебство 🎉

Мой вызов для вас

Создайте новый Задача Чтобы очистить каждое развертывание в конце пробега трубопровода и дайте мне знать, как вы попали на 😄

Если у вас есть какие -либо вопросы или вы хотите увидеть больше подобного контента, напишите мне!

GitHub Twitter Instagram LinkedIn

Оригинал: «https://dev.to/liamchampton/2-clouds-1-pipeline-19cd»