
HashiCorp показала новий проект на . Він використовує файл на основі 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, з репозиторію прикладів.
Після клонування репозиторію подивимося структуру програми, що відображає одну сторінку:

Як ви могли помітити, у цьому проекті немає 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 (), щоб визначити мову програмування проекту та створити образ для Docker без використання Dockerfile. В принципі, це та сама технологія, яка використовується GitLab в частині на кроці Auto Build. Приємно бачити, що CNB від CNCF набуває все більшого поширення у користувачів з галузі.
Як тільки образ зібраний, Waypoint автоматично вивантажить його в AWS ECR registry, щоб він був готовий до постачання. Після закінчення складання крок поставки використовує для розгортання нашої програми в наш обліковий запис AWS.
З мого ноутбука все просто. Я ставлю Waypoint, який вже автентифікований в моєму обліковому записі AWS, і він просто працює. Але що буде, якщо захочу вийти за межі мого ноутбука? Чи раптом я хочу автоматизувати це розгортання у вигляді частини мого загального конвеєра CI/CD, де запускаються мої поточні інтеграційні тести, тести безпеки та інші? Це та частина оповідання, де з'являється GitLab CI/CD!
NB Якщо ви ще тільки плануєте впровадження CI/CD або хочете почати застосовувати найкращі практики побудови пайплайнів, зверніть увагу на новий курс Сльорма . Зараз він доступний за ціною замовлення.
Waypoint в GitLab CI/CD
Для оркестрування всього цього в GitLab CI/CD давайте подивися, що нам знадобиться у нашому файлі .gitlab-ci.yml:
- Насамперед, потрібен базовий образ для запуску всередині нього. Waypoint працює на будь-якому дистрибутиві Linux, йому потрібний тільки Docker, так що ми можемо запускатися з generic образу Docker.
- Далі треба встановити Waypoint у цей образ. У майбутньому ми можемо зібрати та контейнеризувати цей процес для себе.
- Зрештою ми запустимо команди Waypoint
Вище розписано все, що знадобиться нашому конвеєру для запуску потрібних для розгортання скриптів, але для розгортання в AWS нам знадобиться ще одна річ: ми повинні авторизуватися в нашому обліковому записі AWS. В описі Waypoint про аутентифікацію та авторизацію. HashiCorp цього тижня також випустила вражаючий проект . Але на даний момент ми можемо просто взяти та самостійно опрацювати аутентифікацію та авторизацію.
Для автентифікації GitLab CICD AWS є кілька варіантів. Перший варіант - використання вбудованого . Він підійде, якщо ваша команда вже користується Vault для керування обліковими даними. Ще один спосіб, який підходить, якщо ваша команда керує авторизацією за допомогою AWS IAM – перевірте, що завдання поставки запускаються через , авторизований для запуску розгортання через IAM Але якщо ви просто хочете ознайомитися з Waypoint і хочете це зробити швидше, є останній варіант - додати ключі AWS API і Secret в 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, куди ми розкотили додаток:

Waypoint одне з , добре працюють з GitLab. Наприклад, на додаток до постачання програми ми можемо оркеструвати інфраструктуру нижче за допомогою . Для стандартизації безпеки SDLC, ми можемо також впровадити для управління секретами та токенами в конвеєрах CI/CD, надаючи цілісне рішення для розробників та адміністраторів, що покладаються на управління секретами при розробці, тестуванні, а також промисловому використанні.
Спільні рішення, розроблені HashiCorp та GitLab, допомагають компаніям знайти найкращий спосіб розробки додатків, забезпечуючи узгоджене керування потоками постачання та інфраструктурою. Waypoint зробили ще один крок у правильному напрямку, і ми з нетерпінням очікуємо на подальший розвиток проекту. Ви можете дізнатися більше про Waypoint , також варто вивчити и проекту. Ми додали отримані нами знання у . Якщо ви хочете спробувати все в роботі самостійно, можете взяти повний працездатний приклад .
Зрозуміти принципи CI/CD, освоїти всі тонкощі роботи з Gitlab CI та почати застосовувати кращі практики можна, пройшовши відеокурс . Приєднуйтесь!
Джерело: habr.com
