Короче говоря, если вы уже знакомы с какими-то языками программирования, например TypeScript, Python, Go, C#, Java, итд, и категорически не принимаете идею учить еще один новый язык - Pulumi для вас. Если вы используете AWS, технически вы можете использовать AWS CDK тоже, но если вы планируете заниматься оркестрацией гибридной облачной инфраструктуры, Pulumi сильно упростит вам жизнь.
Если вы уже используете Terraform в проде, но вас напрягают ограничения, накладываемые HCL, вы так же можете попытаться использовать Pulumi.
Этот инструмент давно не новый. Ему уже исполнилось почти 16к звездочек на github'e. Хотя по отношению к Terraform - он новый. Впрочем какая разница? Если он гипотетически может помочь решить ваши проблемы, то почему бы и не попробовать его?
SOPS
SOPS - сокращение от Secrets OPerationS. Это опенсорсный текстовый редактор файлов, который автоматически шифрует/дешифрует файлы.
Основные задачи на которых сосредоточено это приложение - редактирование, шифрование, и автоматизация.
Обычно, когда вы хотите зашифровать текстовый файл, вы делаете следущее:
Открываете любимый текстовый редактор, вносите правки в текст, и сохраняете файл.
Используете инструмент для шифрования/дешифрования для того, чтобы зашифровать весь файл.
Когда вам нужно прочитать зашифрованный файл:
Сначала берете специальный инструмент, и расшифровываете файл.
Открываете расшифрованный файл любимым текстовым редактором.
Недостаток этого процесса очевиден. Вам нужно два инструмента. С одной стороны текстовый редактор, с другой программа для шифрования информации. При этом задача остаётся на самом деле только одна.
И вот SOPS как раз и позволяет объединить два действия в одно.
Если очень кратко, он может быть интегрирован с такими сервисами как HashiCorp Vault, AWS KMS, etc) для расшифровки ваших зашифрованных файлов автоматически, а так же позволяет использовать git репозиторий для хранения ключей, что сильно упрощает рабочую коммуникацию.
Если вдруг заинтересовал инструмент, то в этой статье можно детально с ним ознакомиться.
Trivy
Контейнеризация и 12-факторные приложения (приложение как услуга) стали к настоящему времени настолько популярны, что когда у вас возникает задача что-то собирать и деплоить, вы не думаете ни о чём другом. С тех пор как мы стали зависимы от контейнеров в нашей инфраструктуре, стало важным поддерживать в актуальном состоянии безопасность хранимых образов, поскольку запускаемые из них контейнеры наследуют все характеристики родительских образов, в том числе уязвимости и неправильную конфигурацию.
Trivy - сканер безопасности. Он надёжен, быстро, и легок в использовании. У Trivy есть различные встроенные сканеры, которые призваны искать различные проблемы безопасности. Самый популярный вариант использования - поиск CVE. Второй по популярности - ошибки конфигурации.
Вы можете запускать Trivy как локально, с помощью CLI для сканирования локальных образов перед тем как отправлять их в реестр, или перед тем как деплоить ваше приложение.
Более того. Trivy разработан с возможностью без особого труда интегрироваться в CI пайплайны, что отлично согласуется с методологией DevOps.
Cluster API
Cluster API - это подпроект Kubernetes, ориентированный на предоставление декларативных API и оснастки упрощающей подготовку, обновление и эксплуатацию множества кластеров Kubernetes.
Запущенный Kubernetes Special Interest Group (SIG) Cluster Lifecycle, проект Cluster API использует API и шаблоны в стиле Kubernetes для автоматизации управления жизненным циклом кластера для операторов платформы. Вспомогательная инфраструктура, такая как виртуальные машины, сети, балансировщики нагрузки и VPC, а также конфигурация кластера Kubernetes определяются так же, как разработчики приложений развертывают свои рабочие нагрузки и управляют ими. Это обеспечивает согласованное и воспроизводимое развертывание кластера в самых разных инфраструктурных средах.
Если вас смущает официальное определение, подумайте так: вы можете запустить одну команду kubectl apply для создания кластера K8s, и она работает для AWS, Azure, DigitalOcean, Docker, GCP, OpenStack и других.
Не нужно создавать модули Terraform (или, что еще хуже, пытаться выяснить все параметры чужих модулей) для кластеров K8s, не нужно разбираться, как использовать eksctl для AWS и еще что-то для другого облака; просто применить kubectl для создания кластеров. Звучит впечатляюще, правда? Я знаю. Вот почему он и входит в этот список.
Linkerd
Linkerd - самая легкая и быстрая в мире service mash (по крайней мере, так говорят). Что такое service mash? Service mash — это выделенный уровень инфраструктуры для обеспечения безопасной, быстрой и надежной связи между сервисами.
Простота использования - вот ключевая фишка Linkerd. Вы можете установить его буквально одной командой.
Но давайте поговорим больше.
Настройка быстрая. Даже образы докеров маленькие, поэтому они загружаются быстрее.
Архитектура не сильно отличается. Существует плоскость управления и плоскость данных, где плоскость управления представляет собой набор служб, отвечающих за телеметрию, API, предоставление управляющих данных прокси плоскости данных и т. д., а плоскость данных имеет прокси, которые работают рядом с каждой службой. пример. Ознакомьтесь с официальным документом, если вы хотите узнать больше деталей.
Istio и AWS App Mesh используют прокси-сервер envoy с открытым исходным кодом — высокопроизводительный распределенный прокси-сервер C++, предназначенный для отдельных сервисов и приложений. Это сложный прокси общего назначения. Linkerd, с другой стороны, использует специально разработанный прокси-сервер, написанный на Rust, чтобы он был как можно меньше, легче и безопаснее. Я здесь не для того, чтобы судить, какой язык лучше и безопаснее, C++ или Rust, но как современный язык с особым способом управления памятью (собственность вместо сборки мусора) Rust определенно имеет преимущество.
Для управления несколькими кластерами, в отличие от Istio, Linkerd использует механизм зеркалирования сервисов. Настройка также относительно проста, почти как установка с одним кластером, за исключением того, что вам нужно сделать это дважды плюс плоскость управления с несколькими кластерами.
Подводя итог, Linkerd — это service mash другого типа: сверхлегкая, сверхпростая и сверхмощная. Linkerd добавляет безопасность, наблюдаемость и надежность в Kubernetes без каких-либо сложностей. Это не совсем новый инструмент, но если функции соответствуют вашим потребностям и вам нравится простота, попробуйте.
Github Actions
GitHub Actions — еще один CI.
Почему же тогда именно GitHub Actions?
Ну, во-первых, он находится в техническом радаре CNCF (и находится на стадии «оценки», превращая его в «новый» инструмент), поэтому нам как бы нужно хорошенько его рассмотреть.
Во-вторых, CI много взаимодействует с вашим кодом, и по своей природе GitHub Actions легко взаимодействует с вашими репозиториями GitHub. Больше никаких проблем с интеграцией CI с вашими репозиториями кода.
Еще одно преимущество для стартапов: у GitHub Actions есть некоторая бесплатная квота, поэтому, когда вы только что запустили новый продукт, бесплатной квоты может быть более чем достаточно, что делает его полностью бесплатным. Вам, вероятно, не нужно регистрировать несколько дополнительных самостоятельных исполнителей в течение довольно долгого времени, и вы экономите затраты на запуск некоторых виртуальных машин в каком-либо облаке для вашей собственной инфраструктуры только для части CI.
Tekton
Tekton... Ну... Это еще один CI)))
Можно запустить его в кластере K8s
Определить пайплайны как нативные ресурсы K8s, и просто применять применять их kubectl.
Теперь у него есть панель инструментов и интерфейс командной строки.
Кроме того, Tekton позволяет создавать, тестировать и развертывать в нескольких средах, таких как виртуальные машины или бессерверные решения. Вы также можете выполнять развертывание в различных облачных провайдерах или гибридных средах, используя конвейеры Tekton.
Стоит ли использовать его? Мое мнение, если:
Вы должны «владеть» своей системой CI (например, использование бесплатной квоты GitHub Actions по какой-то причине вам не подходит).
Вы уже используете K8s.
Вам нравится работать с K8s.
тогда определенно стоит попробовать Tekton.
HashiCorp Harness
Harness. О, это у нас еще один CI. НО на самом деле куда больше чем просто CI.
Оно объединяет несколько вещей в одно:
CI
CD/GitOps
feature flags
cloud costs
Harness предлагает размещенные виртуальные машины (ВМ) для запуска ваших сборок. С Harness Cloud вы можете без проблем создавать свой код на инфраструктуре, которую предоставляет Harness. Вы можете тратить меньше времени и усилий на обслуживание инфраструктуры и вместо этого сосредоточиться на разработке отличного программного обеспечения.
В Harness непрерывная доставка моделируется с использованием конвейеров и этапов. На каждом этапе вы определяете, что вы хотите развернуть с помощью служб, где вы хотите развернуть это с помощью сред и как вы хотите развернуть это с помощью шагов выполнения.
Harness GitOps позволяет выполнять развертывание GitOps в Harness. Вы определяете желаемое состояние службы, которую хотите развернуть, в своем манифесте Git, а затем используете Harness GitOps для синхронизации состояния с вашим работающим кластером Kubernetes.
Harness Feature Flags (FF) — это решение для управления функциями, которое позволяет вам изменять функциональность вашего программного обеспечения без развертывания нового кода. Это позволяет вам скрывать код или поведение без выпуска новых версий программного обеспечения. Флаг функции похож на мощный оператор if.
Короче говоря, если вы хотите, чтобы SaaS CI/CD/FeatureFlags были собраны в одном месте, это то, на что стоит обратить внимание.
Thanos
Здесь для начала следует немного вспомнить о локальном хранилище Prometheus.
Локальное хранилище Prometheus не предназначено для долговременного хранения; внешние решения обеспечивают длительное хранение и устойчивость данных.
Несмотря на то, что мы можем установить длительный период хранения данных, например годы, с помощью storage.tsdb.retention, вопрос остается в масштабе и планировании. С годами зондов с высоким разрешением обработка очень длинных запросов может занять много памяти. Это также зависит от масштаба: например, функция rate() в течение одного года с 15-секундным интервалом очистки требует 2,1 миллиона выборок или около 2,6 МБ данных. И это только по одному показателю.
Если у вас небольшая инфраструктура, нет ничего плохого в том, чтобы скорректировать время хранения до нескольких лет; текущая реализация TSDB отлично справляется с этим. Для более крупных приложений рассмотрите возможность использования более крупной распределенной базы данных TSDB.
И Thanos — это решение, которое решает эту проблему: это высокодоступная установка Prometheus с открытым исходным кодом и возможностями долгосрочного хранения, ориентированная на долгосрочное хранение. Если вы уже столкнулись с проблемами с хранилищем Prometheus, попробуйте Thanos.
HashiCorp Sentinel
Наконец поговорим про Sentinel.
Политика как код — это подход к управлению политиками, при котором политики определяются, обновляются, совместно используются и применяются с помощью кода, и Sentinel — это решение HashiCorp.
Поскольку Sentinel принадлежит HashiCorp, он хорошо интегрируется с другими продуктами HashiCorp. Так что, если вы активно пользуетесь Terraform, Vault, Consul или Nomad и хотите попробовать Policy-as-Code, Sentinel — именно то, что вам нужно.
Чтобы привести несколько конкретных примеров того, что могут сделать политики Sentinel:
Не позволяйте облачным ресурсам предоставляться без тегов с помощью Terraform.
Убедитесь, что изменение важных данных Vault может выполняться только авторизованными системными операторами с действительным MFA.
Разрешить рабочие нагрузки Docker только в Nomad.
Ключи Consul можно обновить только в рабочее время.
import “tfplan/v2” as tfplan
aws_instances = filter tfplan.resource_changes as _, rc {
rc.mode is “managed” and
rc.type is “aws_instance” and
rc.change.actions is not “delete”
}
main = rule {
all aws_instances as _, instance {
(instance.change.after.tags else {}) is not empty
}
}
Довольно очевидно, не так ли?