НОВОСТИ [Перевод] Как использовать HashiCorp Waypoint для совместной работы с GitLab CI/CD

NewsBot
Оффлайн

NewsBot

.
.
Регистрация
21.07.20
Сообщения
40.408
Реакции
1
Репутация
0
tbnhjn0sxj8ubkyyceroucj4f0e.jpeg



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, из репозитория примеров.


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


x8hujtmx9v5vly9rkbq481c8toy.png



Как вы могли заметить, в этом проекте нет 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!

N.B. Если вы еще только планируете внедрение CI/CD или хотите начать применять лучшие практики построения пайплайнов, обратите внимание на новый курс Слёрма . Сейчас он доступен по цене предзаказа.​

Waypoint в GitLab CI/CD



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

  • В первую очередь, нужен базовый образ для запуска внутри него. Waypoint работает на любом дистрибутиве Linux, ему нужен только Docker, так что мы может запускаться с generic образа Docker.
  • Далее надо установить Waypoint в этот образ. В будущем мы можем собрать и контейнеризировать этот процесс для себя.
  • Наконец мы запустим команды Waypoint


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


Для аутентификации GitLab CI\CD в 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 {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, куда мы раскатили приложение:


wwctqcjfdgabdomr0wuxdz7r5m4.png



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


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


Понять принципы CI/CD, освоить все тонкости работы с Gitlab CI и начать применять лучшие практики можно, пройдя видеокурс . Присоединяйтесь!
 
Сверху Снизу