Для получения максимальной гибкости и наилучших результатов в контексте работы с виртуальной инфраструктурой можно использовать приложения, заточенные под облако.
Распространение cloud native приложений связано с преимуществами подхода — гибкостью контейнеризированных проектов, возможностью масштабировать ресурсы в зависимости от нагрузки и обширной экосистемой инструментов.
Последние в особенности интересны и помогают выстроить эффективные процессы: от развертывания приложений до мониторинга и управления инфраструктурой. Обсудим несколько open source решений, с которыми стоит познакомиться, если вы только начинаете погружение в тему.
Podman — открытый инструмент для управления контейнерами. Инженеры Red Hat начали работу над ним в 2017-м, а через год выпустили публичную версию под лицензией Apache 2.0. У проекта сформировалось крепкое сообщество, и Red Hat поддерживает его: организует онлайн-митапы, курирует чаты и группы.
В Podman нет привычного Docker-демона для работы с образами и контейнерами — вместо него используется среда runC. Podman позволяет работать с образами иначе — на уровне пользователей, а не системы, что снижает ИБ-риски. Если продолжать сравнение с Docker, проект доступен по открытой лицензии для крупного бизнеса, и в том числе за счет этого набирает аудиторию. Еще Podman помогает автоматически генерировать YAML-конфигурации для Kubernetes.
Argo — это декларативный GitOps-инструмент непрерывной доставки для Kubernetes. Его распространяют по лицензии Apache 2.0. Argo автоматизирует развертку, упрощает работу с конфигурациями, поддерживает Kustomize, Helm и Jsonnet, помогает откатить или поднять проект после сбоя.
Инструмент выпустили в 2018 году. По данным Cloud native computing foundation (CNCF), в 2020-м Argo пользовалось 10% участников исследования фонда, а в 2022-м уже 28%. Сегодня в развитие решения регулярно вносят вклад десятки контрибьютеров.
Thanos — открытый инструмент для мониторинга cloud native приложений. Его спроектировали в Improbable. Компания-разработчик метавселенных использовала для мониторинга Prometheus, но масштабы проектов потребовали более гибких и широких возможностей. Поэтому в 2018 году команда предложила собственное решение. Оно объединяет кластеры в единую систему мониторинга с эффективным доступом к данным и агрегированию. Также можно использовать Grafana и другие инструменты, поддерживающие API Prometheus. Однако для небольших проектов зачастую достаточно самого Prometheus.
Kuma — удобное решение для межсервисного взаимодействия, распространяемое по лицензии Apache 2.0. Его разработала команда Kong, запустившая одноименный API-шлюз. В 2019 году Kuma представили как представителя нового поколения технологий для сервисных сеток, поддерживающих взаимодействие между сервисами. Инструмент основан на балансировщике Envoy, с его помощью можно настраивать политики для проверки инфраструктуры, автоматического выключения и многого другого.
Calico — открытое решение для управления сетевым взаимодействием. В 2015 году его представила компания Tigera, работающая над ИБ для контейнеризированных проектов. Calico позволяет детальнее настраивать политики сетевого взаимодействия по принципу Zero Trust Networking, эффективнее работать с оркестратором и укреплять ИБ на уровне контейнеров.
Sigstore — инструмент для верификации кода и использования собственного хранилища артефактов: позволяет работать с подписями образов контейнеров, проверять подлинность используемых компонентов архитектуры. Проект выпускают по лицензии Apache 2.0, а в его развитии принимают участие специалисты Google, Red Hat, Linux Foundation и других организаций. Решение объединяет три открытые разработки: Fulcio для управления сертификатами, Cosign для работы с контейнерами и Rekor для логирования метаданных.
Vitess — еще одно открытое решение. На этот раз — для горизонтального масштабирования MySQL. Инструмент появился еще в 2010-м, когда его разработчики помогали с масштабированием Youtube. Сегодня доступна семнадцатая версия проекта с широкими возможностями — например, встроенным SQL-парсером, который оптимизирует запросы с точки зрения производительности и нагрузки на базу. Vitess применяют крупные ИТ-компании и провайдеры сервисов вроде Slack.
Kaniko — распространяется по лицензии Apache 2.0 при поддержке инженеров Google, начиная с 2018 года. У проекта почти тринадцать тысяч звезд на GitHub. Решение позволяет использовать Dockerfile’ы для развертки Docker-образов без самого Docker, например, собирать все в кластере Kubernetes.
С помощью инструмента можно безопасно работать с образами контейнеров — в проекте использован подход по аналогии с Podman, о котором мы говорили выше — в самом начале подборки. Он подразумевает работу на пользовательском уровне без необходимости использования root-привилегий.
CloudMTS для запуска cloud native приложений
Containerum Managed Kubernetes Service предоставит полноценный кластер Kubernetes, в рамках которого можно развернуть приложение.
DBaaS for PostgreSQL или DBaaS for Redis для поддержки архитектуры микросервисов и переноса данных в облако.
Compute Cloud для быстрого старта виртуальных машин, запуска приложений и тестирования гипотез.