Устойчивый рабочий процесс для сборки, деплоя и релиза приложений на любых платформах.


Сегодня мы рады представить Waypoint компании HashiCorp. Это новый проект с открытым исходным кодом, предлагающий разработчикам стабильный процесс для сборки, развертывания и релиза приложений на любых платформах. Waypoint дает разработчикам возможность работать с приложениями от разработки до запуска в продакшн в едином файле и деплоить их с помощью единственной команды: waypoint up.


Среди готовых решений у Waypoint предлагает поддержку для Kubernetes, HashiCorp Nomad, Amazon ECS, Google Cloud Run, Azure Container Instances, Docker, Buildpacks и других продуктов. Waypoint предлагает полностью открытый процесс, основанный на системе плагинов, которая позволяет работать с любым инструментом или платформой. После развертывания Waypoint позволяет работать с такими функциями как логи, исполняемые файлы и т.д. для валидации и отладки любых развернутых систем.


Waypoint — это ПО, которое вы скачиваете в виде отдельного приложения для управления развертыванием приложений в вашей собственной инфраструктуре или платформах. Для работы с Waypoint не нужны другие сервисы HashiCorp.


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



Развертывание сложных процессов


Мы создали Waypoint по одной простой причине: разработчики не могут не деплоить.


HashiCorp работает с любыми организациями и отдельными разработчиками в сообществе, что ставит перед разработчиками ряд сложностей при развертывании приложений и обеспечении доступа пользователей к ним. Мы каждый день общаемся с десятками отдельных пользователей через GitHub Issues, форумы, электронную почту и т.д. Каждую неделю мы встречаемся с более, чем 500 компаниями, обсуждая процессы разработки продуктов для них и различные рабочие задачи.


В ходе такого взаимодействия мы увидели определенную закономерность у разработчиков (особенно у средних и крупных организаций): слишком сложные процессы — контейнеры, графики, файлы YAML, внесерверная обработка и т.д. Такая сложность хороша тем, что значительно увеличивает возможности приложений, но когда вы деплоите ваше первое приложение, усложнение процессов заметно увеличивает затраты в пересчете на приобретенный опыт.


Мы увидели еще одну сложность. В зависимости от того, где вам нужно деплоить приложение, вы будете использовать разные инструменты — Docker и kubectl для Kubernetes, HashiCorp Packer и Terraform для VM, специальные интерпретаторы CLI для различных платформ и т.д… Для частных клиентов такая фрагментация опять же создает проблемы с точки зрения кривой обучения. Для команд — это скорее проблема последовательности и наращивания сложности.


Мы думали именно об этих двух проблемах, создавая Waypoint. Waypoint предлагает единую простую в использовании команду для деплоя приложений: waypoint up. Этот процесс последовательно применяется на любой платформе, включая Kubernetes, Nomad, EC2, Google Cloud Run и на множестве других при запуске. Waypoint можно дополнить плагинами, учитывающими любую специальную логику разработки/деплоя/релиза.


Разработчики хотят деплоить. И Waypoint это им обеспечивает.


Функции


Waypoint предоставляет ряд функций, которые обеспечивают рабочий процесс для деплоя, а также для проверки и отладки развернутых на сервере приложений. Эти функции делают Waypoint мощным инструментом деплоя любого приложения на любой платформе.


  • waypoint up: Единая команда для сборки, деплоя и релиза приложений. Waypoint определяет алгоритм работы, используя файл конфигурации, сохраненный в коде приложения. Более подробно о жизненном цикле приложения Waypoint говорится в документации для Waypoint.


  • Автоматические URL-адреса Per-App и Per-Deployment: Развернутые с помощью Waypoint приложения получают общедоступный адрес waypoint.run с действительным сертификатом TLS, автоматически созданным через Let's Encrypt. Этот URL можно использовать для быстрого просмотра развернутых приложений и предоставления к ним доступа.


  • Exec: Вы можете выполнять команды в контексте развернутого приложения, используя команду waypoint exec. Эта команда открывает оболочку в приложении, которую вы можете использовать для отладки, миграции базы данных и многих других целей. Узнайте больше о waypoint exec.


  • Логи: Waypoint предоставляет доступ к снимкам логов вашего приложения в режиме реального времени. Они полезны, когда вам нужно отладить неожиданное поведение приложения. При этом, логи не заменяют комплексные решения для ведения журналов, такие как Datadog или Splunk. Логи приложений Waypoint объединены и доступны для просмотра через командную строку. Узнать больше о логах.


  • Веб-интерфейс: Помимо простого и мощного интерфейса командной строки, Waypoint также предлагает веб-интерфейс пользователя. С его помощью можно просматривать сборки, деплои и релизы проектов и приложений. Пользовательский интерфейс сегодня доступен только для чтения. В дальнейшем мы будем постоянно развивать его, чтобы поддерживать больше функций. Мы также включили в пользовательский интерфейс советы о том, как выполнять процессы Waypoint в интерфейсе командной строки.


  • Плагины: Логику сборки, деплоя и релиза можно дополнить различными плагинами. У Waypoint есть более десятка встроенных плагинов, но вы также можете написать собственные плагины для расширения функционала Waypoint.



Пример процесса


Мы продемонстрируем различные функции Waypoint на примере ниже. В нем пропущены некоторые этапы настройки, поэтому обратитесь к Руководствам для начала работы, если хотите самостоятельно повторить показанную в примере последовательность. В этом примере деплой выполняют в Kubernetes. Помимо приложения, мы создадим файл waypoint.hcl. В нем описывается сборка, деплой и релиз нашего приложения..


project = "HashiCorp Waypoint" 

app "waypoint-up" {    
       build {        
          use "docker" {}        
          registry {            
             use "docker" {                
                image = "hashicorp/wpmini"                
                tag = gitrefpretty()            
             }         
          }             
       }      

      deploy {        
         use "kubernetes" {            
               probe_path="/"            
               service_port=80        
          }     
       }       

      release {        
         use "kubernetes" {            
               load_balancer=true            
               port=80         
            }     
      } 

}

Сборка, деплой, релиз


Файл конфигурации Waypoint описывает три основных этапа жизненного цикла приложения: сборку, деплой и релиз.


На этапе сборки исходный код приложения преобразуется в выходной файл. Процесс сборки также может включать дополнительную конфигурацию реестра, при которой созданный выходной файл отправляется в реестр, что делает его доступным для платформы деплоя. Например, на этом этапе ваш исходный код конвертируется в образ Docker или EC2 AMI и т.д.


На этапе деплоя ранее созданный выходной файл размещается на целевой платформе для деплоя, где он будет доступен через специальные URL-адреса или другие внутренние средства. Waypoint поддерживает Kubernetes, Nomad, EC2, ECS, Google Cloud Run и другие платформы.


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


Waypoint up


Команда waypoint up запускает сразу все три этапа — сборки, деплоя и релиза, позволяя сразу деплоить приложение. В результате вы получаете один или несколько URL-адресов для доступа к вашему приложению. Не важно, какое приложение и на какую платформу вы деплоите. Команда для деплоя всегда одна и та же — waypoint up.



Также Waypoint можно использовать для выполнения отдельных этапов — сборки, деплоя и релиза. Это полезно при интеграции с инструментами GitHub Actions и CI/CD, например, CircleCI и Jenkins. Узнать больше об автоматизации работы с приложениями с помощью Waypoint.


URL-адреса приложений и развертываний


Развернутые с помощью Waypoint приложения получают общедоступный URL-адрес waypoint.run с действительным сертификатом TLS, автоматически созданным через Let's Encrypt. Этот URL можно использовать для быстрого просмотра развернутых приложений и предоставления к ним доступа. URL-адрес предоставляется бесплатно, сервисы размещаются на серверах HashiCorp. Эту функцию можно отключить — она не является обязательной.


В примере выше URL-адрес будет https://recently-pleasant-duck--v1.waypoint.run. (Обратите внимание, что он больше не работает, поскольку мы поддерживали работу приложения, только пока мы писали эту статью в блог).


Вы также можете перейти к конкретным версиям развертывания, используя https://recently-pleasant-duck--vN.waypoint.run, где N — номер версии развертывания. Это очень удобная функция, которая позволяет поделиться дорелизными версиями приложения с другими членами команды.



Логи Waypoint


При работе в Waypoint у вас есть доступ к снимкам логов вашего приложения в режиме реального времени.


Они полезны, когда вам нужно отладить неожиданное поведение приложения. При этом, логи не заменяют комплексные решения для ведения журналов. Логи приложений Waypoint объединены и доступны для просмотра через командную строку и веб-интерфейс.


Функция логов работает независимо от того, какую платформу вы используете. Это может быть Kubernetes, EC2, Google Cloud Run или любая другая платформа. Вы можете просматривать логи в рамках единой процедуры. Пользовательский интерфейс позволяет просматривать логи нескольких приложений, которые можно деплоить на разных платформах.



Waypoint Exec


Вы можете выполнять команды в контексте развернутого приложения с помощью команды waypoint exec.


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



Еще больше возможностей


Выше мы кратко перечислили только некоторые функции, поддерживаемые Waypoint.


Waypoint можно использовать для управления конфигурацией приложения через переменные среды. Вы можете интегрировать Waypoint с CI или GitHub, использовать рабочие пространства для создания сред для конкретных ветвей, писать свои собственные плагины и многое другое. Кроме того, Waypoint — это совершенно новый проект, и в следующие месяцы мы планируем добавлять в него новые функции.


Waypoint с существующими приложениями


Если у вас уже есть приложения и разработан процесс деплоя, возможно, вы будете сомневаться в удобстве и целесообразности использования Waypoint. Мы не ожидаем, что разработчики немедленно перепишут принятые у них рабочие процессы с нуля с помощью Waypoint.


Вместо этого мы предлагаем плагины, например docker-pull, и режим локального выполнения, чтобы вы могли использовать Waypoint с приложениями, для которых уже выстроен определенный рабочий процесс. Мы также разработали документацию с описанием интеграции Waypoint в системы CI, например, CircleCI и Jenkins.


Эта функция позволяет вам получить историю деплоя приложения в пользовательском интерфейсе Waypoint, благодаря чему вам становятся доступны логи, exec, конфигурация и многое другое. Немного усилий — и вы уже сможете попробовать преимущества Waypoint и решить, хотите ли вы перейти к более управляемому плагину.


Если у вас несколько приложений, этот подход позволяет смешивать и сопоставлять: некоторые приложения с предопределенной логикой деплоя могут использовать плагин exec, тогда как более новые приложения могут предпочесть использовать подход на основе buildpack. В любом случае, команда waypoint up передает ваши приложения в рабочую среду.


Полное расширение с использованием плагинов


Логику сборки, деплоя и релиза можно расширять с помощью плагинов. Waypoint построен на той же системе плагинов, что и Terraform. Мы считаем, что писать плагины для Waypoint так же просто, или даже еще проще.


Waypoint поставляется с более чем десятком встроенных плагинов для запуска. Мы надеемся и ожидаем, что со временем сообщество разработчиков приложений с открытым исходным кодом поможет значительно увеличить их количество. Когда мы впервые выпустили Terraform, мы работали с 6 провайдерами. Сегодня Terraform представляют более 300 провайдеров. Мы верим, что Waypoint может достичь таких же успехов в области деплоя приложений.


Если вас заинтересовало написание плагинов, прочтите руководство по написанию плагинов, а также посмотрите на исходный код для плагинов, встроенных в релиз Waypoint 0.1.


Узнать больше


Посетите сайт Waypoint, чтобы узнать больше. Также рекомендуем обратить внимание следующие веб-страницы.


  • Попробуйте Waypoint. Попробуйте работу в Waypoint, перейдя на страницу “Начало”, посмотрите стартовую демонстрацию или обратитесь к пошаговым обучающим материалам, на которые ссылаются наши приложения из примера, написанные на NodeJS, Python, Ruby, Java и на других языках, в других фреймворках и облачных платформах.


  • Дайте обратную связь. Проект Waypoint еще находится на начальном этапе развития, и мы будем рады обратной связи от сообщества разработчиков через форум HashiCorp. Также вы можете посетить страницу сообщества, если хотите узнать, как можно помочь развитию проекта.


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


  • Поделитесь приложением. Если вы использовали Waypoint для деплоя приложения, сделайте скриншот его запуска через URL-адрес Waypoint и опубликуйте его в Twitter с хештегами #WaypointUp HashiCorp. Поделитесь URL-адресом Waypoint, если хотите, чтобы другие увидели, как работает ваше приложение. В течение нескольких следующих недель мы опубликуем примеры приложений, присланных сообществом разработчиков.


Комментарии (8)


  1. bm13kk
    23.11.2021 12:52

    это не отто под новым именем?


    1. stas_tibekin Автор
      23.11.2021 13:32

      Оба, похоже, пытаются предоставить решение одной и той же проблемы, однако разработаны исходя из разных философий и каждый сосредоточен на определенных инструментах Hashicorp.


  1. Filex
    23.11.2021 13:44

    Waypoint можно использовать как полную замену jenkins?


    1. stas_tibekin Автор
      24.11.2021 10:49

      Как полную замену нет, можно использовать как дополнения друг к другу.


    1. r_andreev
      24.11.2021 13:33

      Тут всё сильно зависит от сценария использования Jenkins. Если только сборка и доставка, то похоже, что этот инструмент может быть рассмотрен как замена.


  1. bm13kk
    24.11.2021 01:35

    Wat

    403 ERROR
    The request could not be satisfied.

    The Amazon CloudFront distribution is configured to block access from your country. We can't connect to the server for this app or website at this time. There might be too much traffic or a configuration error. Try again later, or contact the app or website owner. If you provide content to customers through CloudFront, you can find steps to troubleshoot and help prevent this error by reviewing the CloudFront documentation.


  1. maceall
    24.11.2021 10:49

    Waypoint своего рода аналог werf в части kubernetes?


    1. stas_tibekin Автор
      24.11.2021 10:50

      Здесь не подскажем, нет данных по сравнению этих инструментов.