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-драйвера.