Как да използвате HashiCorp Waypoint за сътрудничество с GitLab CI/CD

Как да използвате HashiCorp Waypoint за сътрудничество с GitLab CI/CD

HashiCorp показа нов проект Waypoint на 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 регистър, за да бъде готов за доставка. След завършването на изграждането стъпката за доставка използва плъгин AWS ECS за внедряване на нашето приложение в нашия AWS акаунт.

От моя лаптоп всичко е просто. Инсталирам Waypoint, който вече е удостоверен в моя AWS акаунт, и то "просто работи". Но какво ще стане, ако искам да изляза извън лаптопа си? Или ако искам да автоматизирам това разгръщане като част от моя общ CI/CD конвейер, където се изпълняват текущите ми интеграционни тестове, тестове за сигурност и т.н.? Тук влиза GitLab CI/CD!

Забележка. Ако все още планирате внедряване на CI/CD или искате да започнете да прилагате най-добрите практики за изграждане на пайплайни, обърнете внимание на новия курс на Слёрма "CI/CD на примера на GitLab CI". В момента е наличен на цена за предварителна поръчка.

Waypoint в GitLab CI/CD

За да оркестрираме всичко това в GitLab CI/CD, да видим какво ще ни бъде нужно в нашия файл .gitlab-ci.yml:

  • На първо място, необходим е базов образ за стартиране в него. Waypoint работи на всяко Linux дистрибуция, нуждае се само от Docker, така че можем да стартираме с общ образ на Docker.
  • След това трябва да инсталираме Waypoint в този образ. В бъдеще можем да създадем образ meta build и да контейнеризираме този процес за себе си.
  • Накрая ще стартираме командите на Waypoint.

По-горе е описано всичко, което ще е нужно на нашия конвейер за изпълнение на скриптовете, необходими за разгръщането, но за разгръщане в AWS, ще ни трябва още нещо: трябва да се удостоверим в нашия AWS акаунт. В описанието на Waypoint има планове за удостоверяване и авторизация. HashiCorp също така тази седмица пусна впечатляващ проект Boundary. Но в момента можем просто сами да обработим удостоверяването и авторизацията.

За удостоверяване на GitLab CI/CD в AWS има няколко опции. Първата опция е използването на вграденото HashiCorp Vault. То е подходящо, ако вашият екип вече използва Vault за управление на данни за вход. Все още един вариант, който е подходящ, ако вашият екип управлява авторизацията с AWS IAM — уверете се, че задачите за доставка се стартират през GitLab Runner, удостоверен за изпълнение на разгръщането през IAM. Но ако просто искате да се запознаете с Waypoint и искате да го направите по-бързо, има последен вариант — добавете вашите AWS API и Secret ключове в променливи на среда GitLab CI/CD AWS_ACCESS_KEY_ID и AWS_SECRET_ACCESS_KEY.

Събирайки всичко заедно

След като се справихме с удостоверяването, можем да започваме! Нашият окончателен .gitlab-ci.yml изглежда така:

точка пути:
  изображение: docker:latest
  этап: сборка
  сервисы:
    - docker:dind
  # Определите переменные среды, например, `WAYPOINT_VERSION: '0.1.1'`
  переменные:
    WAYPOINT_VERSION: ''
    WAYPOINT_SERVER_ADDR: ''
    WAYPOINT_SERVER_TOKEN: ''
    WAYPOINT_SERVER_TLS: '1'
    WAYPOINT_SERVER_TLS_SKIP_VERIFY: '1'
  скрипт:
    - 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. В разделе скрипт мы скачиваем последнюю версию исполняемого файла 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

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster