Состав дистрибутива#

Состав дистрибутива DropApp#

Главные образы контейнеров:

Kubeadm - инструмент для автоматизации установки и настройки компонентов DropApp (в том числе сервера API, Controller Manager и Kube DNS).

Kube-apiserver - клиентская часть панели управления DropApp. Основной реализацией API-сервера DropApp является kube-apiserver, который предназначен для горизонтального масштабирования, то есть развертывания на несколько экземпляров.

Kube-controller-manager - компонент системы (один из контроллеров), который выбирает, на каком узле должен запускаться какой pod, исходя из доступности ресурсов; kube-controller-manager — часть мастер-узла, запускающая основные контроллеры Kubernetes (Node Controller, Replication Controller, Endpoints Controller, Service Account & Token Controllers).

Kube-proxy - компонент DropApp, который обрабатывает трафик маршрутизации для служб в кластере. Существует две серверные части, доступные для балансировки нагрузки уровня 3/4 в вышестоящем потоке kube-proxy — iptables и IPVS.

Kube-scheduler - компонент DropApp, который отвечает за планирование pods по узлам в соответствии с заданными политиками.

Pause - контейнер каждого pod, существует в качестве шаблона или родительского контейнера, от которого новые контейнеры в pod наследуют namespaces. Контейнер pause запускается, затем переходит в «спящий режим». Это контейнер-шаблон, который резервирует namespaces, общий для всех контейнеров внутри pod.

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

CRI-O - реализация CRI DropApp (Container Runtime Interface), позволяющая использовать среды выполнения, совместимые с OCI (Open Container Initiative).

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

Опциональные образы контейнеров (зависимости от главных образов контейнеров):

Kube-rbac-proxy - сервер-прокси, использующий RBAC для управления доступом к API-ресурсам, который работает как sidecar контейнер в pod, прослушивает запросы к API-серверу и добавляет в них заголовок Authorization, содержащий информацию об авторизации, обеспечивая безопасность кластера и доступ к ресурсам только для авторизованных пользователей и сервисных аккаунтов.

Cilium - сетевой плагин, который обеспечивает более безопасную и надежную коммуникацию между pods и сервисами в кластере. Он работает на уровне ядра операционной системы и использует технологии, такие как eBPF (extended Berkeley Packet Filter) для обеспечения безопасности и маршрутизации трафика. Cilium предоставляет функции интеграции с DropApp API и обнаружение и предотвращение сетевых атак, а также заменяет функциональность традиционных сетевых решений, таких как IPTables и IPVS. Cilium также упрощает микросервисную архитектуру, облегчая настройку и масштабирование сетей DropApp.

Hubble - инструмент визуализации, мониторинга и отладки сети. Он предоставляет детализацию обмена трафиком внутри кластера и может использоваться для отслеживания потоков трафика, обнаружения проблем с производительностью и выявления потенциальных уязвимостей в сетевой архитектуре. Использует Cilium для предоставления информации о сети, и предоставляет дополнительные средства визуализации и отладки, такие как граф связей между pods, информацию о потоках трафика и возможность проведения детального анализа сетевой активности.

Tetragon - компонент Cilium, который обеспечивает средства наблюдения за безопасностью на основе eBPF в режиме реального времени. Tetragon применяет политику, выполняет фильтрацию, блокировку и реагирование на события непосредственно в ядре вместо отправки событий агенту.

VictoriaMetrics - расширяемый временной ряд, хранилище данных и база данных метрик, специально разработанный для обработки данных, генерируемых приложениями и сервисами в DropApp. VictoriaMetrics интегрируется с инструментами мониторинга и агрегирует офлайн компрессии и хранение временных рядов. В DropApp VictoriaMetrics может быть установлен как отдельный компонент без управления оператором DropApp, или с помощью VictoriaMetrics-operator, который упрощает установку, масштабирование и обновление экземпляров VictoriaMetrics в кластере DropApp.

VictoriaMetrics-operator упрощает процесс управления VictoriaMetrics в DropApp и обеспечивает высокую доступность и производительность кластера хранилища временных рядов.

Node-exporter - инструмент, который собирает данные метрик о работе узла DropApp, такие как - процессор, память, диски и другие ресурсы узла, и экспортирует собранные данные в формате, который может быть использован для мониторинга и анализа этой информации.

Node-cert-exporter - инструмент для экспорта сертификатов узла в DropApp, используемых для обеспечения безопасности соединений между узлами кластера.

Metrics-server - API-сервер, который сохраняет и предоставляет данные метрик DropApp. Он используется для мониторинга ресурсов кластера, таких как CPU, память и ресурсы сети в режиме реального времени.

Kube-state-metrics - компонент мониторинга DropApp, который предоставляет метрики состояния кластера, такие как, количество pods, replicaSet, deployment и других ресурсов DropApp. Kube-state-metrics позволяет мониторить состояние кластера в реальном времени, отслеживая события и выявляя проблемы.

K8s-device-plugin - компонент DropApp, который позволяет управлять устройствами в кластере, такими как GPU, FPGAs и другие устройства. K8s-device-plugin автоматически обнаруживает и регистрирует устройства в кластере, делая их доступными для использования в pods приложений.

Metallb - контроллер балансировки нагрузки, который используется в DropApp-кластерах, для предоставления статических IP-адресов для сервисов DropApp. Metallb может заменить выделение IP-адресов из общего пула адресов, позволяя конечным пользователям использовать статические IP-адреса для своих сервисов.

Trident - инструмент для автоматического управления предоставлением хранилища данных на основе NetApp. Он обеспечивает доступ к хранилищу данных через REST-API, к которому можно подключиться через интерфейс командной строки.

Trident-operator - оператор DropApp, который используется для управления динамическим предоставлением и управления хранилищем данных. Оператор обеспечивает автоматическое создание и удаление хранилища данных в DropApp, управление и распределение данных между узлами кластера.

Trident-autosupport - инструмент для коррекции сбора метрик и автоматического управления предоставлением хранилища данных на основе NetApp. Он обеспечивает доступ к хранилищу данных через REST-API, к которому можно подключиться через интерфейс командной строки.

CSI (Container Storage Interface) - это стандарт для работы с хранилищами данных в DropApp. CSI добавляет возможность управления и настройки доступа к хранилищам данных в DropApp через плагины. Для работы с CSI к DropApp должны быть добавлены следующие компоненты:

Csi-provisioner - компонент управляет динамическим выделением томов CSI. Он обеспечивает создание, монтирование и удаление томов CSI по запросу. Компонент предоставляет API для создания, удаления и монтирования томов и запускается в DropApp в виде pod.

Csi-attacher - компонент управляет присоединением томов к pods. Он обеспечивает подключение томов к указанному pod. Компонент предоставляет API для присоединения томов и запускается в DropApp в виде pod.

Csi-resizer - компонент управляет изменением размеров томов. Он обеспечивает операцию изменения размеров томов CSI. Компонент предоставляет API для изменения размеров томов и запускается в DropApp в виде pod.

Csi-snapshotter - компонент управляет созданием и восстановлением снимков томов. Он обеспечивает создание и восстановление снимков томов CSI. Компонент предоставляет API для создания и восстановления снимков томов и запускается в DropApp в виде pod.

Csi-node-driver-registrar - компонент управляет регистрацией драйверов для устройств хранения данных на узлах DropApp. Он обеспечивает регистрацию драйвера на каждом узле, который будет использоваться для работы с хранилищами данных. Компонент предоставляет API для регистрации драйверов и запускается в DropApp в виде DaemonSet.

Примечание

Все приведенные компоненты csi-node-driver-registrar используются вместе для управления томами и хранилищами данных в DropApp с помощью CSI стандарта.

Volcano - инструмент, предназначенный для управления рабочей нагрузкой и планирования задач в кластере DropApp. Он обеспечивает дополнительные ресурсы для запуска и выполнения задач, управляет приоритетами и сроками выполнения задач, а также предоставляет расширенные возможности мониторинга и журналирования. volcano помогает DropApp эффективнее использовать ресурсы кластера, упрощает управление рабочей нагрузкой и ускоряет выполнение задач.

Ingress-nginx - часть DropApp, которая отвечает за управление сетевым трафиком в кластере. Ingress-nginx осуществляет доступ к сервисам и приложениям в кластере, используя правила маршрутизации с помощью HTTP, HTTPS, DNS и других протоколов. Контроллер Ingress-nginx позволяет управлять конфигурацией маршрутизации сетевых запросов, позволяя администраторам конфигурировать и настраивать сервисы и приложения более гибко и эффективно. Он также предоставляет механизмы прозрачного балансирования нагрузки и управления трафиком для повышения отказоустойчивости и эффективности работы приложений. Ingress-nginx обеспечивает безопасность и надежность сетевых взаимодействий в кластере, снижая нагрузку на инфраструктуру и повышая стабильность работы сервисов и приложений.

Kubelogin - инструмент, который позволяет взаимодействовать с кластером приложений с управлением DropApp в различных облачных окружениях или на локальной машине. Он обеспечивает безопасную и простую аутентификацию и авторизацию доступа пользователя к кластеру без необходимости использования прямых учетных данных в виде логина и пароля. Для этого kubelogin использует протоколы аутентификации OIDC (OpenID Connect) и OAuth для взаимодействия с провайдерами идентификации, такими как GitHub и другими. Kubelogin позволяет настроить автоматический доступ к кластеру без необходимости введения пароля при подключении.

Argo — это комплекс инструментов управления GitOps для DropApp.

Argo-cd - инструмент для непрерывной доставки приложений, который использует модель GitOps для управления настройками DropApp-кластера. Это означает, что репозиторий Git используется в качестве единственного истинного источника для системы управления доставкой приложений. Argo CD может автоматически обновлять приложения в DropApp-кластере при изменениях в репозитории Git.

Argo-workflows - контейнерно-нативный механизм рабочих процессов с открытым исходным кодом для оркестровки параллельных заданий на DropApp. Argo-workflows реализован как DropApp CRD (Custom Resource Definition).

Argo-rollouts - утилита расширения, которая обеспечивает функциональность управления различными типами событий в DropApp. Утилита может автоматически управлять внедрением обновлений приложений, переключением между версиями приложений и откатом к предыдущим версиям приложений в DropApp-кластере.

Argo-events - инструмент для обработки событий в DropApp. Он позволяет настроить механизмы подписки на различные типы событий в DropApp и принимать соответствующие меры в зависимости от полученного события. Argo-events может использовать другие инструменты для контроля запуска новых приложений, переключения между версиями приложений и обработки событий в DropApp-кластере.

Vector - средство для агрегации и сбора логов и метрик в реальном времени из различных источников в кластере. Это открытая платформа, которая собирает данные с контейнеров, приложений и систем в кластере с помощью специализированных агентов и отправляет их централизованно для дальнейшей обработки и анализа. Vector использует множество стандартных протоколов и форматов данных, такие как Syslog, Fluentd и Logstash, что позволяет ему извлекать логи и метрики из различных источников и пересылать их на центральный сервер для дальнейшей обработки и хранения. С помощью Vector можно наблюдать за состоянием системы и приложений в реальном времени, а также анализировать производительность и определять причины возникающих проблем. Vector обеспечивает масштабируемость и гибкость работы с большим объемом логов и метрик, что позволяет администраторам управлять их потоком и интегрировать их с другими системами мониторинга и аналитики. Vector является независимой от облачных провайдеров платформой, поэтому его можно использовать как для локального кластера.

Operator-sdk - инструмент, разработанный для создания приложений-операторов для DropApp. Он позволяет разработчикам операторов ускорить процесс разработки, упростить управление операторами и обеспечить совместимость с DropApp.

Cri-tools - набор инструментов, используется в DropApp для взаимодействия с контейнерным временем выполнения по стандарту Container Runtime Interface (CRI). Он содержит утилиты для запуска и остановки контейнеров, создания и удаления образов контейнеров, а также для получения информации о контейнерах и их статусе. CRI — это интерфейс, который описывает стандартную спецификацию для взаимодействия между DropApp и контейнерным временем выполнения. Это позволяет расширять возможности DropApp и использовать различное время выполнения контейнеров, доступное на рынке с различными функциями и возможностями.

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

Prometheus-operator - обеспечивает встроенное развертывание и управление Prometheus и связанными с ним компонентами мониторинга. Это сделано для упрощения и автоматизации настройки стека мониторинга на основе Prometheus для кластеров DropApp.

Configmap-reload - инструмент для перезагрузки в случае обновления DropApp ConfigMaps или Secrets, смонтированных в pods. Он просматривает смонтированные каталоги томов и уведомляет целевой процесс об изменении ConfigMaps. Поддерживает отправку HTTP-запроса.

Cert-manager - менеджер сертификатов DropApp. Cert-manager добавляет сертификаты и эмитенты сертификатов в качестве типов ресурсов в кластеры DropApp и упрощает процесс получения, обновления и использования этих сертификатов.

Envoy proxy - это прокси уровня L7 и коммуникационная шина для сервис-ориентированных архитектур.

Curl - инструмент для осуществления HTTP-обмена из командной строки.

Gatekeeper - реализация Open Policy Agent (OPA) для DropApp, которая работает в качестве Webhook для валидации манифестов. Этот инструмент предназначен для аудита и автоматического применения к ресурсам DropApp политик безопасности, написанных на языке Rego.

Loginapp - веб приложение для конфигурации DropApp CLI с OIDIC.

OKD console - аналог инструмента администрирования kubectl в виде одностраничного веб-приложения.

Jaeger используется для мониторинга и устранения неполадок распределенных систем на основе микросервисов.

Grafana - инструмент для визуализации данных из различных источников. Используется для представления в графическом виде данных временных рядов и текстовых данных.

Redis — это база данных размещаемая в оперативной памяти, снабжена механизмами снимков и журналирования для обеспечения постоянного хранения (на дисках, твердотельных накопителях). Является хранилищем типа «ключ-значение», но поддерживает множество различных типов значений: строки, списки, наборы, отсортированные наборы, хеши, потоки, HyperLogLog, растровые изображения. Используется как для баз данных, так и для реализации кэшей, брокеров сообщений.