Як використовувати HashiCorp Waypoint для спільної роботи з GitLab CI/CD

Як використовувати HashiCorp Waypoint для спільної роботи з GitLab CI/CD

HashiCorp показала новий проект Пункт призначення на HashiCorp Digital. Він використовує файл на основі HCL для опису складання, постачання та випуску програм для різних хмарних платформ, починаючи від Kubernetes і закінчуючи AWS та Google Cloud Run. Можна уявити, що Waypoint це складені разом Terraform і Vagrant для опису процесу складання, поставки і випуску ваших додатків.

Не змінюючи собі, HashiCorp випустила Waypoint з відкритим кодом, також до нього додається безліч прикладів. Рівень оркестратора залишається за вами, Waypoint поставляється у вигляді виконуваного файлу, який ви можете запустити прямо на вашому ноутбуці або вибраного вами інструменту оркестрації CI/CD. Мета розгортання програм також вибирається вами, оскільки Waypoint підтримує Kubernetes, Docker, Google Cloud Run, AWS ECS та інші.

Почитавши ульотну документацію і шикарні приклади додатків, надані HashiCorp, ми вирішили подивитися ближче на оркестрування Waypoint за допомогою GitLab CI/CD. Щоб це зробити, ми візьмемо простий додаток Node.js, який запускається на AWS ECS, з репозиторію прикладів.

Після клонування репозиторію подивимося структуру програми, що відображає одну сторінку:

Як використовувати HashiCorp Waypoint для спільної роботи з GitLab CI/CD

Як ви могли помітити, у цьому проекті немає Dockerfile. Вони не додані у прикладі, оскільки вони в принципі і не потрібні нам, адже Waypoint подбає про них за нас. Давайте розглянемо детальніше файл waypoint.hcl, щоб зрозуміти, що він робитиме:

project = "example-nodejs"

app "example-nodejs" {
  labels = {
    "service" = "example-nodejs",
    "env" = "dev"
  }

  build {
    use "pack" {}
    registry {
    use "aws-ecr" {
        region = "us-east-1"
        repository = "waypoint-gitlab"
        tag = "latest"
    }
    }
  }

  deploy {
    use "aws-ecs" {
    region = "us-east-1"
    memory = "512"
    }
  }
}

На етапі складання Waypoint використовує Cloud Native Buildpacks (CNB), щоб визначити мову програмування проекту та створити образ для Docker без використання Dockerfile. В принципі, це та сама технологія, яка використовується GitLab в частині Auto DevOps на кроці Auto Build. Приємно бачити, що CNB від CNCF набуває все більшого поширення у користувачів з галузі.

Як тільки образ зібраний, Waypoint автоматично вивантажить його в AWS ECR registry, щоб він був готовий до постачання. Після закінчення складання крок поставки використовує доповнення AWS ECS для розгортання нашої програми в наш обліковий запис AWS.

З мого ноутбука все просто. Я ставлю Waypoint, який вже автентифікований в моєму обліковому записі AWS, і він просто працює. Але що буде, якщо захочу вийти за межі мого ноутбука? Чи раптом я хочу автоматизувати це розгортання у вигляді частини мого загального конвеєра CI/CD, де запускаються мої поточні інтеграційні тести, тести безпеки та інші? Це та частина оповідання, де з'являється GitLab CI/CD!

NB Якщо ви ще тільки плануєте впровадження CI/CD або хочете почати застосовувати найкращі практики побудови пайплайнів, зверніть увагу на новий курс Сльорма "CI/CD на прикладі Gitlab CI". Зараз він доступний за ціною замовлення.

Waypoint в GitLab CI/CD

Для оркестрування всього цього в GitLab CI/CD давайте подивися, що нам знадобиться у нашому файлі .gitlab-ci.yml:

  • Насамперед, потрібен базовий образ для запуску всередині нього. Waypoint працює на будь-якому дистрибутиві Linux, йому потрібен лише Docker, тому ми можемо запускатися з generic образу Docker.
  • Далі треба встановити Waypoint у цей образ. У майбутньому ми можемо зібрати образ meta build та контейнеризувати цей процес для себе.
  • Зрештою ми запустимо команди Waypoint

Вище розписано все, що знадобиться нашому конвеєру для запуску потрібних для розгортання скриптів, але для розгортання в AWS нам знадобиться ще одна річ: ми повинні авторизуватися в нашому обліковому записі AWS. В описі Waypoint є плани про аутентифікацію та авторизацію. HashiCorp цього тижня також випустила вражаючий проект Кордон. Але на даний момент ми можемо просто взяти та самостійно опрацювати аутентифікацію та авторизацію.

Для автентифікації GitLab CICD AWS є кілька варіантів. Перший варіант - використання вбудованого Сховище HashiCorp. Він підійде, якщо ваша команда вже користується Vault для керування обліковими даними. Ще один спосіб, який підходить, якщо ваша команда керує авторизацією за допомогою AWS IAM – перевірте, що завдання поставки запускаються через GitLab Runner, авторизований для запуску розгортання через IAM Але якщо ви просто хочете ознайомитися з Waypoint і хочете це зробити швидше, є останній варіант - додати ключі AWS API і Secret в змінні оточення GitLab CI/CD AWS_ACCESS_KEY_ID и AWS_SECRET_ACCESS_KEY.

Збираємо всі разом

Як тільки ми розібралися з автентифікацією, можна розпочинати! Наш остаточний .gitlab-ci.yml виглядає так:

waypoint:
  image: docker:latest
  stage: build
  services:
    - docker:dind
  # Define environment variables, e.g. `WAYPOINT_VERSION: '0.1.1'`
  variables:
    WAYPOINT_VERSION: ''
    WAYPOINT_SERVER_ADDR: ''
    WAYPOINT_SERVER_TOKEN: ''
    WAYPOINT_SERVER_TLS: '1'
    WAYPOINT_SERVER_TLS_SKIP_VERIFY: '1'
  script:
    - wget -q -O /tmp/waypoint.zip https://releases.hashicorp.com/waypoint/${WAYPOINT_VERSION}/waypoint_${WAYPOINT_VERSION}_linux_amd64.zip
    - unzip -d /usr/local/bin /tmp/waypoint.zip
    - rm -rf /tmp/waypoint*
    - waypoint init
    - waypoint build
    - waypoint deploy
    - waypoint release

Ви бачите, що ми починаємо з образу docker:latest і встановлюємо кілька змінних оточення, необхідних Waypoint. В розділі script ми завантажуємо останню версію файлу Waypoint, що виконується, і ставимо його в /usr/local/bin. Оскільки наш runner вже авторизований в AWS, далі ми просто запускаємо waypoint init, build, deploy и release.

Висновок завдання зі складання покаже нам endpoint, куди ми розкотили додаток:

Як використовувати HashiCorp Waypoint для спільної роботи з GitLab CI/CD

Waypoint одне з численних рішень HashiCorp, добре працюють з GitLab. Наприклад, на додаток до постачання програми ми можемо оркеструвати інфраструктуру нижче за допомогою Terraform в GitLab. Для стандартизації безпеки SDLC, ми можемо також впровадити GitLab з Vault для управління секретами та токенами в конвеєрах CI/CD, надаючи цілісне рішення для розробників та адміністраторів, що покладаються на управління секретами при розробці, тестуванні, а також промисловому використанні.

Спільні рішення, розроблені HashiCorp та GitLab, допомагають компаніям знайти найкращий спосіб розробки додатків, забезпечуючи узгоджене керування потоками постачання та інфраструктурою. Waypoint зробили ще один крок у правильному напрямку, і ми з нетерпінням очікуємо на подальший розвиток проекту. Ви можете дізнатися більше про Waypoint тут, також варто вивчити документацію и план розвитку проекту. Ми додали отримані нами знання у документацію GitLab CICD. Якщо ви хочете спробувати все в роботі самостійно, можете взяти повний працездатний приклад цьому репозиторії.

Зрозуміти принципи CI/CD, освоїти всі тонкощі роботи з Gitlab CI та почати застосовувати кращі практики можна, пройшовши відеокурс "CI/CD на прикладі Gitlab CI". Приєднуйтесь!

Джерело: habr.com

Додати коментар або відгук