BI Consult Desktop Logo BI Consult Mobile Logo
  • Russian BI Исследование российских bi
  • Перейти на Fine BI
  • Контакты
  • +7 812 334-08-01
    +7 499 608-13-06
  • Отправить сообщение
  • Главная
  • Продукты Эксперт-BI
    • Дистрибуция
    • Розничная торговля
    • Производство
    • Операторы связи
    • Страхование
    • Банки
    • Лизинг
    • Логистика
    • Нефтегазовый сектор
    • Медицина
    • Сеть ресторанов
    • E-Commerce
    • Сельское хозяйство
    • Энергетика
    • FMCG
    • Девелоперы
    • Маркетплейсы
    • Пищевая промышленность
    • Фармацевтика
    • Построение Data Platform
    • Цифровая трансформация
    • Управление по KPI
    • Финансы
    • Продажи
    • Склад
    • HR
    • Маркетинг
    • Внутренний аудит
    • Категорийный менеджмент
    • S&OP и FP&A
    • Геоаналитика
    • Цепочки поставок (SCM)
    • AutoML
    • Process Mining
    • IBP
    • ИТ (CIO)
    • Закупки
  • Платформы
    • Системы бизнес-анализа (BI)
    • Интегрированное бизнес-планирование (IBP)
    • Хранилища данных (DWH / Lakehouse)
    • Каталоги данных (Data Catalog)
    • Системы ETL и ELT
    • AI / Исскуственный интеллект
    • Шина данных (ESB)
    • Система управления мастер-данными (MDM)
    • Семантический слой
  • Услуги
    • Переход на отечественные BI и DWH системы
    • Консалтинг
    • Пилотный проект
    • Обучение и сертификация
    • Бесплатное обучение
    • Поддержка
    • Технические задания
    • Сбор требований для проекта внедрения BI-системы
    • CI/CD для DWH
    • Аудит BI приложений и DWH
    • Выделенная команда
    • Настойка и поддержка баз данных
    • Разработка BI Стратегии
    • Styleguide для BI-системы
    • Как выбрать BI-систему
  • Курсы
    • Учебный курс Информационная грамотность (Data Literacy)
    • Учебный курс для бизнес-аналитиков
    • Учебный курс для системных аналитиков
    • Учебный курс по Data Governance
    • Учебный курс Как стать CDO
    • Учебный курс Современная архитектура хранилища данных
    • Учебный курс по Fine BI
    • Учебный курс по FineReport
    • Учебный курс по DWH
    • Учебный курс по Data Science (ML, AI)
    • Учебный курс по PostgreSQL
    • Учебный курс по Greenplum
    • Учебный курс по Apache Airflow и NiFi
    • Учебный курс по Open-source BI
    • Учебный курс по ClickHouse
    • Учебный курс по DataLens
    • Учебный курс по Loginom
    • Учебный курс по Modus BI и ETL
    • Учебный курс по Visiology
    • Учебный курс по dbt (Data Build Tool)
  • Компания
    • Руководство
    • Новости
    • Клиенты
    • Карьера
    • Скачать
    • Контакты

BI

  • FineBI
  • FineReport
  • FineDataLink
  • FineChatBI (FineAI)
  • Коннекторы данных из 1С в BI
  • Airflow / Nifi
  • Visiology
  • PIX BI
  • Modus BI
  • Yandex.DataLens
  • Open-source BI: Superset/Metabase
  • Luxms BI
  • AW BI + Alpha BI
  • FlyBI + Форсайт. Аналитическая Платформа
  • Loginom
  • Триафлай
  • AI / Исскуственный интеллект
  • Optimacros
  • Навигатор BI
  • Семантический слой

СУБД

  • Arenadata
  • ClickHouse
  • Greenplum
  • Postgres Professional
  • TData

Другое

  • Построение Data Platform
    • Аналитическое хранилище данных
    • Data Lake и Data Engineering
    • Подробнее про Data Lake
    • Внедрение Lakehouse
      • Apache Doris
      • StarRocks
      • Trino
    • Миграция витрин из пропиетарных DWH на новый стек
    • Учебный курс "Современная архитектура хранилища данных"
Главная » Курсы по системам бизнес-анализа и методологии » Учебный курс по DWH » Учебный курс "Использование Kubernetes (k8s) при внедрении BI и DWH" » Модуль 6. CI/CD и GitOps

Модуль 6. CI/CD и GitOps

В BI/DWH меняется всё: схемы БД, ETL/DAG, конфиги, версии коннекторов, дашборды, SSO-настройки. Цель CI/CD и GitOps — превратить хаотичные ручные выкаты в повторяемый, наблюдаемый и обратимый процесс:

  • CI (build/test): собирает артефакты (контейнеры, Helm-чарты, миграции Liquibase/Flyway, экспорт дашбордов).
  • CD (delivery): изменения попадают в репозиторий окружений, откуда их контроллер GitOps (Argo CD/Flux) приводит кластер в нужное состояние.
  • GitOps: кластер — это «отражение Git». Ревью через PR, аудит «кто/когда/что», быстрый rollback.

 

Ключевые выгоды для BI/DWH:

  • предсказуемые релизы и быстрые откаты;
  • безопасные миграции схем (expand/contract);
  • канареечные выкаты фронтов BI без простоя;
  • централизованное управление секретами;
  • контроль соответствия (policy-as-code, подписи образов).

 

Репозитории и границы ответственности

Минимальный набор репозиториев

  1. app-repos — исходники и Dockerfile компонентов:
    postgres-migrations, airflow-dags, superset-config, etl-jobs, trino-conf и т. п.
  2. ops-charts — Helm-чарты/манифесты для приложений (или используем официальные чарт-репозитории с тонкими оверлеями).
  3. env-repo (главный в GitOps) — описывает «что должно стоять» в Dev/Stage/Prod: версии образов, значения Helm, Kustomize-оверлеи, Argo Applications, секреты-ссылки.

Небольшим командам удобно начинать с двух реп: app и env. Крупным — разносить «код» и «операции» отдельно.

 

Шаблон дерева env-repo (пример)

env/
  clusters/
    prod/
      apps/
        airflow/   (helmrelease/values.yaml или kustomize overlay)
        superset/
        postgres/
      argocd-apps/ (Application/ ApplicationSet)
    stage/
    dev/
  policies/        (OPA/Kyverno, PodSecurity, NetworkPolicy по умолчанию)
  secrets/         (ExternalSecrets/SealedSecrets/SOPS файлы-ссылки)

 

Helm vs Kustomize — что выбрать

  • Helm — пакеты с шаблонами и переменными. Отличен для приложений с множеством опций (Airflow, Superset, Postgres-операторы).
  • Kustomize — «патч-оверлеи» поверх чистых YAML. Удобно для системной конфигурации, сетевых политик, Argo-объектов.
  • Комбинация: Helm для приложений, Kustomize для обвязки окружений и кросс-ресурсных патчей.

 

Практика показывает: HelmRelease/Helm-в-Argo + Kustomize overlays — гибко и прозрачно.

 

Argo CD vs Flux — критерии выбора

  • Argo CD: UI из коробки, «app-of-apps», ApplicationSet, Pre/Post-Sync hooks, Rollouts (канареечные/blue-green). Популярен для data-платформ.
  • Flux: декларативность через CRDs, сильный Git-пуллинг, меньше UI, глубже интеграция в Git-события.

 

Рекомендация: стартовать с Argo CD за счёт отличного UX и зрелого community-практикума.

 

Промо окружений Dev → Stage → Prod

Принцип «двух реп» и tag-promotion

  1. CI апп-репозитория собирает образ, подписывает (cosign), публикует в регистр, создаёт git-тег vX.Y.Z.
  2. Бот CI создаёт PR в env-repo (dev-оверлей) с обновлённой версией образа.
  3. После тестов в Dev — PR в Stage; затем — в Prod.
  4. Argo CD подхватывает изменения и синхронизирует кластеры.

Механика: иммутабельные версии (semver/commit-sha), никаких latest.

 

Политика контроля изменений

  • Обязательный PR-review (2 глаза), авто-чекапы (OPA/Kyverno, schema lint).
  • Аннотации релизов → Grafana для сопоставления метрик и выката.
  • «Заморозка» окружения в окна пиковых продаж/отчётности.

 

Канареечные релизы

Где это нужно

  • BI-фронты (Superset/Metabase), промежуточные микросервисы, прокси, API.
  • Не применяем для первичных БД и операторов — там другие стратегии (см. ниже).

 

Инструменты

  • Argo Rollouts (поверх Deployment): трафик-сплит через Ingress/Service, прогрев по шагам, автоматический или ручной прогресс.
  • Критерии продвижения: рост 5xx на Ingress, p95 latency, собственные тесты здоровья.

 

Для Superset: canary на 10%/25%/50% трафика; откат при росте ошибок экспорта/авторизации.

 

Миграции схем: Liquibase/Flyway и «expand/contract»

Принцип

  • Expand: сначала добавляем новые сущности/колонки/индексы, совместимые со старой версией кода.
  • Migrate data: фоновые переносы/заполнение новых колонок, пересчёты.
  • Contract: удаляем старое только после того, как весь код перешёл на новое.

 

Как запускать миграции в GitOps

Паттерны:

  • PreSync/Sync hooks в Argo CD: миграция как Job перед развёртыванием приложения (для небольших схем).
  • Отдельный HelmRelease/Argo Application «migrations»: явный шаг, можно катить/откатывать независимо.
  • Airflow-DAG-миграции для тяжёлых backfill’ов (с checkpoint’ами и мониторингом).

 

Практические правила:

  • Миграции идемпотентны и повторяемы.
  • Всегда есть PITR/бэкап (см. Модуль 2) перед изменением.
  • Backfill — отдельный выпуск, чтобы не блокировать быстрый выкат приложения.
  • Миграции выполняются с минимальными блокировками (по возможности CONCURRENTLY, батчи).

 

Управление секретами в пайплайнах

  • Где хранить секреты: Vault/Cloud Secret Manager → в k8s через External Secrets Operator; альтернативы — SOPS/SealedSecrets для «статичных» значений.
  • В CI: подключение к реестру, подпись образов (cosign), креды к артефакт-стораджу — через OIDC-федерацию или краткоживущие токены (не хранить в переменных навсегда).
  • Dynamic creds: Vault Database Engine для краткоживущих пользователей БД (ideally для ETL и ад-hoc миграций).
  • Проверки пайплайна: «секреты в yaml» (secret-scanners), запрет kubectl apply «мимо GitOps».

 

Контроль соответствия и качество релизов

  • Политики: Gatekeeper/Kyverno (запрет привилегий, допустимые реестры, обязательные ресурсы), валидация подписей образов (cosign).
  • Проверки в CI: линтеры Helm/Kustomize, schema-валидация CRD, trivy-скан образов, unit-тесты DAG/SQL.
  • Release-gates: smoke-тесты, пост-деплой проверки SLI/SLO (Inkubate/Probes), «canary-ok → promote».

 

Риски и как их снимать

Риск

Проявление

Митигирующие меры

Смешивание кода и окружения

Неясно, что «поедет» в Prod

Разделить app-repos и env-repo; только env-repo — источник CD

Канареечный успех «на бумаге»

Трафик не сплитится/метрики не читаются

Argo Rollouts, интеграция с Ingress, явные SLO-гейты

«Схема вперёд кода»

Падения из-за несовместимости

Expand/contract, фича-флаги, двустадийный релиз

Миграции без PITR

Невозможность отката

Обязательный бэкап/точка восстановления перед изменением

Секреты в Git

Утечки

ESO/Vault, SOPS, сканеры секретов, OIDC-федерация

Rollback «ломает» данные

Обновили схему, откатили код

Контрактная совместимость, поэтапное отключение старого

«Шумные» алерты в релиз-окна

Слепота к настоящим проблемам

Особые SLO-порогы на период canary, аннотации релизов в Grafana

Случайный kubectl apply в прод

Обход GitOps

Read-only доступ, Admission-Webhook, аудит API-сервера

 

Мини-примеры (только необходимый код)

Argo CD Application (env-repo, Stage)

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: superset-stage
  namespace: argocd
spec:
  project: default
  source:
    repoURL: https://git.company/env
    path: clusters/stage/apps/superset
    targetRevision: main
  destination:
    server: https://kubernetes.default.svc
    namespace: bi
  syncPolicy:
    automated: { prune: true, selfHeal: true }
    syncOptions: ["CreateNamespace=true"]

 

Kustomize overlay (управление версиями образов)

# clusters/stage/apps/superset/kustomization.yaml
resources:
- ../../base/superset
images:
- name: apache/superset
  newTag: 3.1.0-2025-08-10 # продвижение через PR
configMapGenerator:
- name: superset-config
  literals:
  - FEATURE_FLAG_CANARY_ROUTES=true

 

(Дальше всё зашито в Git: PR меняет newTag, Argo CD синхронизирует.)

 

Практика: полноценный GitOps для «Postgres + Airflow + Superset»

Цель практики

  • Подготовить env-repo (Dev/Stage/Prod) и подключить его в Argo CD.
  • Завести приложения: Postgres (оператор или StatefulSet), Airflow (официальный Helm), Superset (официальный Helm).
  • Организовать миграции Postgres (Liquibase/Flyway), выпуск DAG и канареечный релиз Superset.
  • Настроить секреты через External Secrets и промо Dev→Stage→Prod через PR.

 

Шаги

  1. Развернуть Argo CD в платформенном неймспейсе.
    • Создать Application уровня «app-of-apps»: clusters/dev, clusters/stage, clusters/prod.
    • Включить RBAC и SSO к Argo (OIDC) — чтобы доступ был по ролям.
  2. Подготовить env-repo:
  3. Дерево clusters/{dev,stage,prod}/apps/{postgres,airflow,superset}.
  4. Для Postgres — либо оператор (Patroni/StackGres), либо простой StatefulSet (для практики).
  5. Для Airflow и Superset — использовать официальные charts, вынести values.yaml в каждый оверлей.
  6. Добавить ExternalSecret для подключений БД и SSO секретов (см. Модуль 4).
  7. postgres-migrations: pipeline собирает Liquibase-контейнер (или кладёт changelog в артефакты), запускает юнит-тесты миграций на временной БД, подписывает образ.
  8. airflow-dags: сборка образа воркеров/шедулера с DAG внутри; линтер DAG, smoke-тест DAG (dry-run).
  9. superset-config: экспорт baseline-дашбордов/ролей/фич-флагов как код; сборка образа для инициализации (скрипт импорта).
  10. В env-repo создать отдельный «релиз» миграций как Helm/Kustomize-ресурс с PreSync hook (Job), который:
    1. берёт из ExternalSecret креды;
    2. выполняет Liquibase/Flyway update;
    3. пишет «версию схемы» в таблицу schema_version.
  11. Для тяжёлых backfill’ов — отдельный Airflow DAG с чекпоинтами.
  12. CI после успешных тестов создаёт PR в clusters/dev/... на обновление тегов образов postgres-migrations, airflow, superset.
  13. После наблюдения (SLO-дашборд зелёный) — PR в clusters/stage/....
  14. В Stage включить Argo Rollouts для Superset: ступить 10%→50%→100%, остановка по ошибкам 5xx/latency.
  15. Поднять Vault/Secret Manager; накатить External Secrets Operator.
  16. Для БД — по возможности динамические логины (Vault DB Engine) с TTL; иначе — статические, но с ротацией.
  17. В CI — OIDC-федерация к регистру/артефакт-стораджу, без «вечных» токенов.
  18. До продвижения на Prod проверяем:
  19. CI для app-репозиториев:
  20. Описание миграций в GitOps:
  21. Промо Dev → Stage:
  22. Секреты:
  23. SLO-гейты:
    1. доступность Superset (2xx/3xx) ≥ 99% за 1 час canary;
    2. p95 latency UI < 3 c;
    3. Airflow DAG «ежедневка» прошёл;
    4. Postgres нет долгих транзакций/блокировок;
    5. бэкап БД «свежий» (< 24 ч).
  24. Гейты оформлены как проверки PR (CI дергает PromQL/Alertmanager API).
  25. Release notes и аннотации:
  26. В PR — список изменений MIG/ETL/BI, риски, план отката.
  27. В Grafana — аннотации на время canary/rollout.
  28. Для Superset — rollback в Argo Rollouts (возврат на предыдущий ReplicaSet).
  29. Для DAG — вернуть тег образа в env-repo.
  30. Для миграций — только если предусмотрены rollback-скрипты; иначе — PITR БД до точки перед релизом.
  31. Откат:

 

Результат

  • В Dev/Stage/Prod стоят управляемые версии Postgres, Airflow, Superset.
  • Любое изменение идёт через PR в env-repo; Argo CD отображает статус и синхронизацию.
  • Миграции схем проходят как управляемые Jobs с бэкапом/контролем.
  • Superset выкатывается канареечно, метрики SLO — зелёные.

 

Чек-лист «ГОТОВНОСТЬ К PROD»

  • Разделены app-repos и env-repo; включён Argo CD с SSO и RBAC.
  • Helm/Kustomize стандартизированы (шаблоны оверлеев Dev/Stage/Prod).
  • Канареечные выкаты возможны (Argo Rollouts + Ingress трафик-сплит).
  • Миграции БД описаны и запускаются автоматически с PreSync/отдельным релизом; есть PITR-план.
  • Секреты — через ESO/Vault; для CI — OIDC-федерация/краткоживущие токены.
  • Политики безопасности (Gatekeeper/Kyverno) стоят «enforce»; подписи образов валидируются.
  • CI включает тесты DAG/миграций/линты, скан уязвимостей, SBOM.
  • SLO-дашборды и алерты настроены; PR-гейты читают метрики.
  • Описаны runbook’и: откат Superset, откат DAG, восстановление БД (PITR).
  • Включён аудит: кто промотировал релиз, какие изменения в env-repo.

 

Хороший GitOps в BI/DWH — это не только «Argo CD + Helm». Это организация жизни изменений: версионирование артефактов, безопасные миграции схем, канареечные выкаты фронтов BI, секреты как сервис, политики как код и SLO-гейты на каждом шаге. Когда все части соединены, релизы становятся частыми и безопасными, а откат — быстрым и предсказуемым.

 

 

 

Узнать стоимость решенияЗапросить видео презентацию

← Предыдущая статья
Модуль 5. Наблюдаемость и эксплуатация
Следующая статья →
Модуль 7. Стек данных на k8s (open-source)
Запросить видео презентацию Запросить доступ к демо стенду online Узнать стоимость лицензий

Задать вопрос

loading...

Решения

Анализировать ФинансыУвеличивайте ПродажиОптимальный Склад и ЛогистикаМаркетинговые Метрики

Клиенты
  • «Балтийский лизинг» — первая компания в России, получившая лицензию № 0001 от Министерства экономики РФ на лизинговую деятельность, лицензия зарегистрирована 2 сентября 1996 года. «Балтийский лизинг» работает на российском рынке 33 года: компания представлена 79 филиалами по всей стране, сегодня в штате более 1300 сотрудников. За последние десять лет компания профинансировала имущество для 80 000 клиентов.

  • Розничный и интернет-магазин 12 Storeez один из лидеров на рынке женской одежды. С географией рынка не только на территории России, своя продукция представлена еще и в таких странах как Казахстан и Дубай.

  • Ручная обработка заявок на займы в МФО ДоброЗайм была малоэффективной и приводила к высоким затратам по ФОТ отдела верификации и андеррайтинга. При этом время обработки заявок было высоким, как и количество ошибок под влиянием человеческого фактора. Дополнительные сложности создавал сложный документооборот, обусловленный неконсолидированной кредитной историей и скоринговой оценкой. Все это суммарно мешало масштабированию бизнеса МФО.

  • Ситилинк

    Электронный дискаунтер «Ситилинк» — один из крупнейших онлайн‑ритейлеров России (3‑е место по объему онлайн‑продаж в рейтинге Data Insight и Ruward 2016 года E‑commerce Index TOP‑100, 8 место в рейтинге Forbes «20 самых дорогих компаний Рунета — 2017»). На рынке работает 9 лет.

    В ассортименте дискаунтера более 50 000 наименований компьютерной цифровой, бытовой и садовой техники, офисной мебели и других товарных категорий. Более 700 мировых брендов в портфеле. Около 4 000 сотрудников по всей России

  • Решения
    • Дистрибуция
    • Розничная торговля
    • Производство
    • Операторы связи
    • Страхование
    • Банки
    • Лизинг
    • Логистика
    • Нефтегазовый сектор
    • Медицина
    • Сеть ресторанов
    • E-Commerce
    • Энергетика
    • Фармацевтика
  • Услуги
    • Переход на отечественные BI и DWH
    • Консалтинг
    • Пилотный проект
    • Обучение и сертификация
    • Бесплатное обучение
    • Техническая поддержка
    • Технические задания
    • Сбор требований для проекта внедрения BI-системы
    • CI/CD для DWH
    • Аудит BI приложений
    • Выделенная команда
    • Настойка и поддержка баз данных
    • Разработка BI Стратегии
    • Styleguide для BI-системы
    • Как выбрать BI-систему
  • Платформы
    • FineBI
    • FineReport
    • FineDataLink
    • Коннекторы данных из 1С в BI
    • Airflow + NiFi
    • Visiology
    • Luxms BI
    • Modus BI
    • PIX BI
    • Arenadata
    • ClickHouse
    • Greenplum
    • Postgres Professional
    • Open-source BI: Superset/Metabase
    • Loginom
    • Yandex.DataLens
    • AI / Исскуственный интеллект
    • Optimacros
    • Шины данных
  • Курсы
    • Учебный курс Информационная грамотность
    • Учебный курс для бизнес-аналитиков
    • Учебный курс для системных аналитиков
    • Учебный курс по Data Governance
    • Учебный курс Как стать CDO
    • Учебный курс Современная архитектура хранилища данных
    • Учебный курс по Fine BI
    • Учебный курс по FineReport
    • Учебный курс по DWH
    • Учебный курс по Data Science (ML, AI)
    • Учебный курс по PostgreSQL
    • Учебный курс по Apache Airflow и NiFi
    • Учебный курс по Open-source BI
    • Учебный курс по ClickHouse
    • Учебный курс по DataLens
    • Учебный курс по Loginom
    • Учебный курс по Modus BI и ETL
    • Учебный курс по Visiology
    • Учебный курс по dbt
  • Функциональные решения
    • Создание Data Lake
    • Цифровая трансформация
    • Управление по KPI
    • Финансы
    • Продажи
    • Склад
    • HR
    • Маркетинг
    • Внутренний аудит
    • Категорийный менеджмент
    • S&OP и прогнозная аналитика
    • Геоаналитика
    • Цепочки поставок (SCM)
    • AutoML
    • Process Mining
    • Сквозная аналитика
  • Компания
    • О нас
    • Руководство
    • Новости
    • Клиенты
    • Скачать
    • Контакты
    • Политика конфиденциальности
RutubeVkontakteLinkedInYouTube
ООО "Би Ай Консалт",
ИНН: 7811437757,
ОГРН: 1097847154184
199178, Россия,
Санкт-Петербург,
6-ая линия В.О., Д. 63, 4 этаж
Тел: +7 (812) 334-08-01
Тел: +7 (499) 608-13-06
E-mail: info@biconsult.ru

 

 

 

 

 

×

Пользуясь сайтом, вы соглашаетесь с использованием cookies и политикой конфиденциальности.