Компоненты Nova Container Platform
Компоненты Nova Container Platform могут быть внешними и внутренними. Набор компонентов и их тип зависит от комбинации методов установки платформы.
Внешние компоненты
Внешние компоненты обеспечивают доступность ресурсов, необходимых для установки платформы в инфраструктуре, ее обслуживания и масштабирования.
В таблице ниже представлен перечень внешних компонентов Nova Container Platform.
Компонент | Описание | Размещение |
---|---|---|
Хранилище образов | Централизованное хранилище, где размещаются образы, необходимые для установки и обновления платформы. | При установке платформы из сети Интернет используется централизованное публичное хранилище hub.nova-platform.io При установке в закрытом сетевом контуре используется централизованное хранилище в Nova Universe. |
Сервис проверки лицензии | Сервис, необходимый для проверки лицензионной информации и получения аутентификационных данных для доступа к публичному хранилищу образов и сервису доставки ПО. | При установке платформы из сети Интернет используется централизованный сервис access.nova-platform.io При установке в закрытом сетевом контуре наличие данного сервиса не требуется. |
Сервис доставки ПО | Централизованное хранилище Git-репозиториев, которые содержат необходимые сценарии автоматизации для обеспечения жизненного цикла платформы. | При установке платформы из сети Интернет используется централизованное публичное хранилище code.nova-platform.io При установке в закрытом сетевом контуре используется централизованное хранилище в Nova Universe. |
Сервис настройки ПО | Сервис, который генерирует необходимые сценарии автоматизации для платформы на основе исходного кода, размещаемого в репозиториях сервиса доставки ПО. Агенты Nova Host Agent взаимодействуют с сервисом настройки ПО и выполняют полученные сценарии в ОС узлов кластера. | При установке платформы из сети Интернет используется централизованное публичное хранилище sun.nova-platform.io При установке в закрытом сетевом контуре используется централизованное хранилище в Nova Universe. |
Сервер управления Nova Universe | Отдельный сервер, поставляемый в виде образа ВМ. Предназначен для установки платформы в закрытом сетевом контуре. Предоставляет сервисы: - хранилище образов - сервис доставки ПО - сервис настройки ПО |
В инфраструктуре в виде отдельной ВМ. |
Внутренние компоненты
Внутренние компоненты Nova Container Platform размещаются как на узлах в плоскости управления Kubernetes (Control Plane), так и на вычислительных (Compute) узлах. В зависимости от среды и метода развертывания платформы, набор ее внутренних компонентов может меняться. Например, при использовании 3 и более инфраструктурных узлов автоматически будет добавлен компонент Thanos, или при использовании сетевого плагина Cilium будет автоматически добавлен компонент Hubble UI.
На схеме ниже представлены основные внутренние компоненты Nova Container Platform.
Обзор компонентов
Провайдеры инфраструктуры
Установщик Nova Container Platform использует Terraform и его инфраструктурные провайдеры для взаимодействия с инфраструктурными средами.
Провайдер инфраструктуры является компонентом (плагином) Terraform, в котором реализованы механизмы управления инфраструктурными объектами через API. Провайдеры инфраструктуры Terraform разрабатываются сообществом и дорабатываются ОРИОН для совместимости с Nova Container Platform.
Nova Container Platform поддерживает развертывание с использованием различных провайдеров инфраструктуры. Вы можете получить актуальный перечень поддерживаемых провайдеров в разделе Перечень матриц совместимости и протестированных интеграций.
Провайдеры инфраструктуры Terraform входят в состав nova-ctl
, поэтому для их работы вам не требуется иметь постоянное Интернет-соединение или загружать их отдельно.
Перед установкой платформы nova-ctl
может предоставить пользователю в интерактивном режиме предзаполненный шаблон файла конфигурации nova-deployment-conf.yaml
в зависимости от выбранного провайдера инфраструктуры.
В ходе установки платформы nova-ctl
автоматически подготавливает конфигурационные файлы Terraform и уведомляет пользователя о планируемых изменениях в инфраструктуре (например, создание необходимого количества ВМ, дисков, сетевых интерфейсов и т.п.).
До инициализации кластера Kubernetes nova-ctl
хранит состояние объектов Terraform (.tfstate
) локально, а после его инициализации сохраняет состояние в кластер Kubernetes.
Взаимодействие установщика nova-ctl
c провайдером инфраструктуры Terraform на этапе развертывания кластера представлено на рис. 2.
При операции масштабирования узлов кластера установщик nova-ctl
получает состояние инфраструктуры .tfstate
из кластера Kubernetes, изменяет его согласно данным, полученным от пользователя и применяет изменения в инфраструктуре.
Схема ниже демонстрирует процесс масштабирования кластера в контексте взаимодействия установщика платформы с пользователем и кластером Kubernetes.
Nova Host Agent
Nova Container Platform устанавливается на классические ОС. В ходе установки платформы на каждый узел устанавливается агент Nova Host Agent, который отвечает за настройку ОС, компонентов платформы и отслеживает изменения конфигураций.
Nova Container Platform использует модель внесения изменений "In-place" при работе с ОС, а Nova Host Agent обеспечивает консистетность конфигураций за счет периодической синхронизации с сервисом настройки ПО и запуска сценариев конфигурации узлов кластера.
На схеме ниже отображено взаимодействие утилиты nova-ctl с Nova Host Agent и сервисом настройки ПО.
Сценарии конфигурации узлов кластера декларативны, то есть описывают конечное желаемое состояние компонентов. Повторное выполнение сценариев изменяет состояние только тех компонентов, которые были изменены.
С помощью Nova Host Agent в ОС могут быть добавлены новые компоненты, обновлены существующие компоненты, обновлены пакеты, выполнены различные сценарии настройки.
Кластер Kubernetes
В таблице ниже представлено описание ключевых компонентов кластера Kubernetes в Nova Container Platform:
Компонент | Описание |
---|---|
Containerd | Среда исполнения контейнеров, используемая в Nova Container Platform, совместимая с Kubernetes, предоставляющая интерфейс (CRI) взаимодействия с Kubelet. |
Calico CNI | Один из плагинов для сетевых интерфейсов контейнеров (CNI), доступный для установки в Nova Container Platform. |
Cilium CNI | Один из плагинов для сетевых интерфейсов контейнеров (CNI), доступный для установки в Nova Container Platform. К данному плагину дополнительно устанавливается ПО Cilium Hubble для отслеживания сетевого взаимодействия контейнеров в реальном времени. |
NGINX Ingress | Основной балансировщик нагрузки, устанавливаемый в платформу на узлы с ролью infra и ingress . В Nova Container Platform балансировщики NGINX Ingress имеют два отдельных DaemonSet , разделяя нагрузку на служебные и пользовательские сервисы. Тем самым повышается независимость и доступность публикуемых служебных и пользовательских сервисов. |
Scheduler | Стандартный компонент Kubernetes, задача которого состоит в определении подходящих узлов для вновь создаваемых Pod . |
Controller Manager | Стандартный компонент, обеспечивающий основные циклы управления Kubernetes. Controller Manager отслеживает конфигурации в Etcd в кластере и вносит необходимые изменения для достижения указанного состояния какого-либо компонента. |
API Server | Стандартный компонент, который предоставляет интерфейс взаимодействия (API) компонентам кластера и пользователям, проверяет и обслуживает их REST-запросы. |
Descheduler | Компонент кластера Kubernetes в Nova Container Platform, задача которого поддерживать баланс размещения Pod на узлах кластера. Поскольку стандартный Kubernetes Scheduler определяет подходящие узлы для размещения только новых Pod , то в динамичной инфраструктуре кластера может возникать разбалансировка ресурсов (например, когда добавляется или удаляется узел кластера, или узел кластера неутилизирован). Descheduler имеет несколько стратегий по оптимизации распределения нагрузки в кластере, а также возможность конфигурации дополнительных стратегий пользователем. |
etcd | Основное хранилище данных Kubernetes в формате "ключ-значение". |
Local Path CSI | Компонент кластера Kubernetes в Nova Container Platform, который позволяет утилизировать локальное хранилище на инфраструктурных узлах кластера. Локальное хранилище используется для временного хранения метрик системы мониторинга и данных платформы безопасности Neuvector. |
Secrets Manager | Компонент Nova Container Platform для реализации глобального внешнего хранилища секретов, внешней инфраструктуры PKI и OAuth-провайдера аутентификации. |
Secrets Manager CSI | Компонент кластера, который позволяет использовать хранилище секретов Secrets Manager в качестве поставщика секретов SecretProviderClass для компонента Secrets Store CSI. Secrets Manager CSI позволяет синхронизировать Secrets в Kubernetes c хранилищем секретов Secrets Manager. В Nova Container Platform вся чувствительная информация (учетные данные, параметры подключения к OAuth, PKI) хранится в Secrets Manager. Информация, которая должна быть доступна в Kubernetes в виде ресурса Secret , передается в кластер c помощью Secrets Manager CSI и Secrets Store CSI и синхронизируется с Secrets Manager на постоянной основе. |
Secrets Manager PKI | Инфраструктура PKI, организованная в рамках хранилища секретов Secrets Manager. В Nova Container Platform управление центрами сертификации, а также управление конечными сертификатами Kubernetes интегрировано с Secrets Manager. На узлах кластера не хранятся приватные ключи центров сертификации. Узлы кластера взаимодействуют с Secrets Manager через API для получения или обновления своих сертификатов. |
Secrets Manager OAuth | Реализация доступа к ресурсам Nova Container Platform и в частности к Kubernetes API по протоколу OAuth с помощью Secrets Manager OIDC Provider. Secrets Manager позволяет использовать внешних поставщиков аутентификации (например, Active Directory, LDAP, OIDC, Github, Octa), а также имеет собственный каталог пользователей. В Nova Container Platform интеграция с Secrets Manager OAuth также поддерживается и для утилиты kubectl . |
Secrets Store CSI | Компонент Nova Container Platform, который позволяет с помощью поставщика секретов переносить ключи, секреты или сертификаты в кластер Kubernetes, сохранять их в объектах Secret или ConfigMap и монтировать в Pod в виде тома. В Nova Container Platform поставщиком секретов является хранилище Secrets Manager. |
Metrics Server | Компонент Nova Container Platform, отвечающий за предоставление метрик контейнеров. Metrics Server не хранит метрики локально, используется для быстрой оценки использования ресурсов Pod и интегрируется через Metrics API со службами автоматического горизонтального масштабирования (Horizontal Pod Autoscaler) и автоматического вертикального масштабирования (Vertical Pod Autoscaler). |
Prometheus Adapter | Адаптер Prometheus для Kubernetes Metrics API, позволяющий использовать пользовательские метрики в сценариях автоматического масштабирования. |
cAdvisor | Компонент Nova Container Platform для сбора подробной информации о потребляемых контейнерами ресурсах. |
VPA | Служба автоматического вертикального масштабирования Pod (Vertical Pod Autoscaler). |
Сервисы платформы
В таблице ниже представлено описание базовых сервисов платформы, предустанавливаемых в кластер Kubernetes в Nova Container Platform:
Компонент | Описание |
---|---|
Prometheus | Система мониторинга и оповещения в Nova Container Platform. |
Grafana | Система визуализации данных мониторинга в Nova Container Platform. |
Alertmanager | Компонент системы мониторинга в Nova Container Platform, задача которого обрабатывать поступающие предупреждения, дедуплицировать их, группировать и маршрутизировать получателям согласно установленной конфигурации. |
Thanos Query | Масштабируемый компонент системы мониторинга, предназначенный для осуществления запросов в несколько экземпляров Prometheus. Thanos Query устанавливается в кластер, когда количество инфраструктурных узлов три и более. |
Logging Operator | Оператор Kubernetes для автоматического развертывания и конфигурации сбора логов с помощью агентов Fluentd или Fluentbit. После установки Nova Container Platform пользователь может сразу настроить сбор логов в кластере и их экспорт во внешнюю систему хранения. Кроме этого, поддерживается интеграция с модулем Opensearch, если пользователь планирует размещать систему хранения логов в кластере Kubernetes. |
Opensearch | Масштабируемая платформа с открытым исходным кодом для реализации задач поиска информации, аналитики и визуализации данных. Opensearch является отвлетвлением коммерческого продукта Elasticsearch. В Nova Container Platform Opensearch может быть установлен опционально для хранения логов компонентов платформы. |
Fluenbit | Производительный, легковесный обработчик логов, предназначенный для сбора данных и их передачи в различные системы. В Nova Container Platform Fluenbit может быть настроен с помощью Logging Operator, а передача данных - в платформу Opensearch. |
Fluentd | Аналогичный Fluenbit производительный обработчик логов, предназначенный для сбора данных и их передачи в различные системы. Имеет преимущество перед Fluenbit в количестве доступных плагинов для сбора информации. В Nova Container Platform Fluentd может быть настроен с помощью Logging Operator, а передача данных - в платформу Opensearch. |
Kibana | Система визуализации данных Opensearch в Nova Container Platform. В Nova Container Platform Kibana предустанавливается и настраивается вместе с модулем Opensearch. |
Neuvector | Комплексная платформа для управления безопасностью в Nova Container Platform. Осуществляет постоянный мониторинг платформы, процессов, файловых систем, поведенческий анализ работы контейнеров. С помощью Neuvector пользователь может выполнять сканирование образов контейнеров в различных хранилищах, проводить аудит безопасности узлов и контейнеров, а также оценивать риски информационной безопасности в различных аспектах. |
Secrets Webhook | Webhook для Kubernetes, который широко используется в Nova Container Platform для передачи секретов "на лету" из хранилища Secrets Manager в запускаемое приложение. Перед запуском приложения, Webhook изменяет его манифест и добавляет специальный init-контейнер, который получает из Secrets Manager необходимую информацию (например, данные какой-либо учетной записи) и сохраняет ее в память, доступную для чтения только данному процессу. Таким образом, конфиденциальная информация не хранится ни на узлах кластера, ни в хранилище etcd. Приложения получают доступ только к своим секретам в Secrets Manager на основе Kubernetes RBAC и механизмов безопасности Secrets Manager. |
CertManager | Компонент в кластере для управления X.509 сертификатами. В Nova Container Platform CertManager полностью интегрирован с Secrets Manager PKI, и может автоматически выпускать и обновлять сертификаты для конечных приложений. |
Gitea | Компонент Nova Container Platform для хостинга и управления Git-репозиториями. Gitea используется для зеркалирования релизного репозитория с конфигурациями сервисов платформы. Gitea является единым источником конфигураций всех сервисов платформы и используется службой непрерывной доставки FluxCD. |
FluxCD | Служба непрерывной доставки в Nova Container Platform. Используется для установки и поддержания консистентности конфигураций всех сервисов платформы и дополнительных модулей. |
Reflector | Компонент Nova Container Platform, который выполняет задачи копирования объектов Secret и ConfigMap между Namespace в случаях, когда это необходимо (например, при распространении цепочки доверенных сертификатов). |
Reloader | Компонент Nova Container Platform, который может выполнять процесс перезапуска (rollout restart ) объектов Deployment , DaemonSet , StatefulSet при измененении монтируемого ими файла конфигурации в ConfigMap или Secret . |
Harbor | Хранилище образов контейнеров, опционально поставляемое в составе Nova Container Platform. В фунционал Harbor также входит сканирование образов контейнеров на уязвимости, цифровая подпись образов контейнеров и размещение репозитория Helm. |
Nova DNS | Компонент Nova Container Platform на основе CoreDNS, который отвечает за обслуживание DNS-зоны по умолчанию для Ingress-ресурсов. Пользователь также может осуществлять перенаправление запросов с собственных DNS-серверов на инфраструктурные узлы с Nova DNS в случаях, когда не планирует обслуживание DNS-зоны самостоятельно. |
Nova Console | Графический веб-интерфейс управления Nova Container Platform, который позволяет выполнять большинство задач по администрированию платформы. Также веб-интерфейс предоставляет отдельный режим для работы пользователей, с помощью которого можно оперативно развертывать приложения и получать данные мониторинга. |