LCM — Управление жизненным циклом¶
Компонент LCM (Life Cycle Manager) предназначен для управления инсталляциями (экземплярами) KeyStack. LCM реализует следующие функции:
конфигурация регионов (инсталляции KeyStack) — хранение и управление;
предоставление доступа к конфигурационным файлам KeyStack, которые содержат общие настройки для всех регионов, отражающие лучшие практики внедрений OpenStack ITkey;
генерация паролей и SSL сертификатов для регионов;
установка операционной системы и конфигурация физических серверов для добавления в инсталляцию;
подготовка серверов к работе платформы KeyStack (bootstrap);
развертывание регионов KeyStack;
масштабирование регионов — добавление новых серверов с нужными ролями (control, compute, network);
добавление компонентов KeyStack в существующие регионы;
запуск автоматических тестов rally, tempest;
запуск кластера MariaDB после полной перезагрузки слоя управления регионом;
снятие резервных копий БД инсталляции OpenStack по расписанию;
снятие резервных копий компонентов LCM по расписанию;
управление логическим состоянием (наполнением) регионов: образы виртуальных машин (ВМ), типы виртуальных машин, проекты, сети, агрегаты вычислительных узлов;
обновление компонентов инсталляций.
Инструкция по установке LCM находится в разделе Установка KeyStack LCM.
Архитектура и состав LCM¶
LCM поставляется как выделенный кластер Kubernetes (k0s), развёрнутый на LCM-узле (seed node), в котором работает набор прикладных сервисов. Большинство операций жизненного цикла оркестрируется через CI/CD-конвейеры GitLab, однако сам GitLab является лишь одним из компонентов платформы — наряду с ним LCM включает хранилище секретов, систему инвентаризации, реестр артефактов, средства мониторинга и другие сервисы.
GitLab предоставляет интегрированную среду для управления репозиториями исходного кода, процессами CI/CD (Continuous Integration/Continuous Deployment), мониторинга и управления задачами. Преимуществом использования данного продукта является ускорение процессов развёртывания и эксплуатации с минимальным вмешательством пользователей.
В состав платформы LCM входят следующие прикладные сервисы:
Сервис |
Назначение |
|---|---|
GitLab |
Хранение Git-репозиториев и запуск CI/CD-конвейеров развёртывания. См. GitLab — Хранение кода и запуск пайплайнов. |
Vault |
Централизованное хранение секретов, паролей и сертификатов; может использоваться внешний Vault. См. Vault — Хранение секретов. |
NetBox |
Инвентаризация физической инфраструктуры (IPAM/DCIM). См. NetBox — Управление физической инфраструктурой. |
Sonatype Nexus |
Реестр артефактов и Docker-образов. |
Ironic |
Провижининг физических серверов (bare-metal). |
Портал документации |
Веб-портал с документацией KeyStack. |
VictoriaMetrics / VictoriaLogs |
Сбор и хранение метрик и логов компонентов LCM. |
Состав устанавливаемых сервисов регулируется параметрами конфигурации на этапе установки (например, установку Vault, Nexus и Ironic можно отключить). Подробнее см. раздел Установка KeyStack LCM.
Варианты развёртывания¶
LCM поддерживает два варианта развёртывания:
multi-node — отказоустойчивый кластер из нескольких control plane- и worker-узлов. Используется встроенное распределённое хранилище Rook-Ceph, резервирование реплик сервисов и балансировка нагрузки. Рекомендуется для промышленной эксплуатации.
single-node — установка на один узел. Используется хранилище на базе NFS и встроенные экземпляры баз данных без резервирования. Подходит для стендов и ознакомительных инсталляций.
Выбор варианта выполняется на этапе установки — см. раздел Установка KeyStack LCM.
Безопасность платформы¶
Сетевое взаимодействие между сервисами LCM построено по модели «нулевого доверия» (Zero Trust) с использованием сервисной сети (service mesh) Istio:
весь трафик между подами шифруется по протоколу mTLS (версии не ниже 1.2);
межкомпонентные взаимодействия разрешены только по явному списку (allowlist), остальное запрещено по умолчанию;
входящий и исходящий внешний трафик проходит через выделенные шлюзы (ingress/egress gateway) в пределах namespace соответствующего сервиса.
Хранилище данных LCM¶
По умолчанию LCM использует встроенное хранилище: Rook-Ceph для multi-node и NFS CSI Driver для single-node. На этапе установки встроенное хранилище можно заменить сторонним CSI-драйвером — подробнее см. раздел Установка KeyStack LCM.
Сторонний CSI-драйвер должен соответствовать следующим требованиям:
Поддержка томов с режимами доступа ReadWriteMany (RWX) и ReadWriteOnce (RWO) и возможностью подключения томов с соседних узлов.
StorageClass стороннего CSI должен быть установлен как StorageClass по умолчанию в кластере.
При установке CSI-драйвера необходимо учитывать, что в k0s путь к данным kubelet — /var/lib/k0s/kubelet, а не стандартный /var/lib/kubelet.
Обратите внимание, что корректная работа компонентов LCM со сторонними CSI-драйверами не гарантируется — при возникновении проблем, связанных с использованием стороннего хранилища, рекомендуется обратиться к документации соответствующего CSI-драйвера.