AI-Ops Documentation

Русский English
  • Главная
  • Карта документации
0. С чего начать
  • Что это за продукт
  • Для кого он
  • Как устроена документация
  • Быстрые ссылки
  • Как начать разработку
  • Как найти нужный сервис
  • К кому идти по вопросам
1. Продукт
Обзор продукта
  • Миссия продукта
  • Ценность для бизнеса
  • Основные сценарии
  • Границы системы
Пользователи и персоны
  • Сегменты пользователей
  • Роли пользователей
  • Основные потребности
Пользовательские сценарии
  • Регистрация / логин
  • Основной пользовательский сценарий
  • Оплата / заказ / действие
  • Поддержка и сценарий восстановления
Функции продукта
Фича: Аутентификация
  • Цель
  • Пользовательская история
  • Бизнес-правила
  • Ограничения
  • Метрики успеха
  • Связанные сервисы
  • Связанные события / данные
  • Фича: Профиль
  • Фича: Организации
  • Фича: Топология
  • Фича: Вычислительные ресурсы
  • Фича: Кластеры
  • Фича: Каталог сервисов
Требования
  • Функциональные требования
  • Нефункциональные требования
  • Требования к производительности
  • Требования к безопасности
  • Конфиденциальность и соответствие
  • Доступность
Метрики
  • Ключевая метрика (North Star)
  • Продуктовые KPI
  • Метрики воронки
  • Метрики качества
  • Метрики экспериментов
2. Домены
Домен: Identity
  • Назначение
  • Основные концепции
  • Сущности
  • Бизнес-правила
  • Сервисы домена
  • Данные домена
  • Связанные фичи
  • Домен: Профиль пользователя
  • Домен: Поиск
  • Домен: Заказы / транзакции
  • Домен: Уведомления
  • Домен: Аналитика
  • Домен: Рекомендации
3. Архитектура
Обзор системы
  • Что входит в систему
  • Что не входит
  • Высокоуровневая диаграмма
C4 Model
  • Контекстная диаграмма
  • Диаграмма контейнеров
  • Диаграмма компонентов
  • Диаграмма развёртывания
Интеграционная архитектура
  • Внешние системы
  • Интеграции API
  • Webhooks
  • Сторонние провайдеры
Потоки данных
  • Онлайн-поток данных
  • Пакетный поток данных
  • Поток событий
  • Владение данными
Архитектура безопасности
  • Аутентификация
  • Авторизация
  • Управление секретами
  • Шифрование
  • Аудит и логирование
Надежность и масштабируемость
  • SLA / SLO
  • Планирование мощностей
  • Отказоустойчивость
  • Обратное давление и повторы
  • Восстановление после сбоев
Архитектурные принципы
  • Границы доменов
  • Принципы проектирования API
  • Принципы проектирования событий
  • Принципы контрактов данных
  • Диаграмма: auth микросервисы
Control plane
  • Архитектура компонентов (control plane)
  • Доменная модель v0
  • Протокол v0 (control plane)
  • Примеры (control plane)
Сервисы (control plane)
Сервис control plane
  • API
  • Модель данных
  • События
  • Модули
  • Операции
Сервис execution plane
  • API
  • Модель данных
  • События
  • Модули
  • Операции
Сервис resource catalog
  • API
  • Модель данных
  • События
  • Модули
  • Операции
4. Инженерия
Сервисы
Каталог сервисов
  • Все сервисы списком
  • Владельцы
  • Критичность
  • Уровень / домен / статус
  • Сервис аутентификации
  • Сервис аккаунтов
  • Облачный сервис
  • Сервис учётных данных
  • Herald
  • Сервис идентификации
  • API Gateway
  • Сервис токенов
Фронтенд
  • Обзор фронтенда
  • Структура приложения
  • Routing (фронтенд)
  • State management (фронтенд)
  • Design system (фронтенд)
  • UI components (фронтенд)
  • API контракты фронтенда
  • Обработка ошибок (фронтенд)
  • Performance (фронтенд)
  • Feature flags (фронтенд)
  • Тестирование фронтенда
Бэкенд
  • Обзор бэкенда
  • Паттерны сервисов
  • Рекомендации по API
  • Событийные паттерны
  • Паттерны доступа к БД
  • Кэширование
  • Асинхронные задачи и воркеры
  • Идемпотентность
  • Обработка ошибок
  • Тестирование бэкенда
Данные
  • Обзор данных
  • Системы-источники
  • Контракты данных
  • Каталог схем событий
  • Хранилище данных
  • Витрины данных
  • ETL / ELT-пайплайны
  • Качество данных
  • Происхождение данных
  • Политики хранения
  • Политики доступа
ML / DS
  • Обзор ML/DS
  • Сценарии (ML)
  • Каталог моделей
  • Feature store
  • Training pipelines
  • Inference pipelines
  • Offline evaluation
  • Online evaluation / A-B
  • Мониторинг (ML)
  • ML runbooks
QA / Качество
  • Стратегия качества
  • Пирамида тестов
  • Тестовые окружения
  • Тестовые данные
  • Ручное тестирование
  • Автоматизированное тестирование
  • Нагрузочное тестирование
  • Тестирование безопасности
  • Критерии приёмки релиза
  • Процесс разбора багов
5. Платформа
Инфраструктура
  • Ansible
  • WireGuard
  • Kubernetes
  • Longhorn
  • Ingress
  • PostgreSQL Cluster
  • Redis
  • Kafka
  • Vault
  • MinIO
  • Authentik
  • Monitoring
  • Logging
  • Tracing
  • Nexus
  • SonarQube
  • GlitchTip
  • GitLab Runner
  • Kubernetes Dashboard
  • OLM
  • Deploy
  • Internal DNS
  • Обзор (инфраструктура)
  • Config generator
  • Пример (инфраструктура)
  • Скрипты (инфраструктура)
Окружения
  • Локальное
  • Stage
  • Pre
  • Продакшен (prod)
  • Tech
  • Облако
  • Объектное хранилище
  • CI/CD
  • Секреты и сертификаты
Наблюдаемость
  • Логирование
  • Метрики
  • Трейсинг
  • Алертинг
  • Резервное копирование и восстановление
6. Разработка
  • Быстрый старт
  • Локальная настройка
  • Карта репозиториев
  • Стандарты кода
  • Git-процесс
  • Стратегия ветвления
  • Руководство по код-ревью
  • Критерии готовности
  • Процесс релиза
  • Флаги фич
  • FAQ разработчика
  • Миграция secure auth
7. Эксплуатация
  • Дежурство
  • Управление инцидентами
  • Уровни критичности
  • Политика эскалации
  • Постмортемы
  • Ранбуки
  • Управление изменениями
  • Непрерывность бизнеса
8. Аналитика
  • План трекинга событий
  • Определения KPI
  • Каталог дашбордов
  • Словарь метрик
  • Эксперименты
  • Стандарты отчётности
9. Управление
  • Решения (ADR)
  • Политика статуса контента
  • Changelog обновлений документации
Безопасность и соответствие
  • Модель угроз
  • Безопасная разработка
  • Управление доступом
  • Конфиденциальность
  • Реагирование на инциденты
Ответственность и владельцы
  • Команды
  • Зоны ответственности команд
  • Владельцы сервисов
  • Владельцы доменов
  • Контакты
Глоссарий
  • Бизнес-термины
  • Продуктовые термины
  • Технические термины
  • Сокращения

Index

Документация по установке и использованию GitLab Runner Operator через OLM (Operator Lifecycle Manager) в рамках платформы AIOps.


Оглавление

  • Описание
  • Архитектура
  • Namespaces
  • Быстрый старт (OLM)
  • Команды Makefile
  • Конфигурация Runner
  • Метрики и мониторинг
  • Подключение к GitLab
  • RBAC для доступа к секретам PostgreSQL
  • Troubleshooting
  • Ссылки

Описание

GitLab Runner Operator — официальный Kubernetes-оператор от GitLab для управления GitLab Runner инстансами через CRD Runner.

В данном проекте оператор устанавливается строго через OLM, что гарантирует:

  • корректную установку CRD (полная схема)
  • управляемые обновления оператора
  • отсутствие «урезанных» CRD и рассинхронизации схем

Архитектура

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
┌──────────────────────────────────────────┐
│ OLM (Operator Lifecycle Manager)         │
│ namespace: olm                           │
│                                          │
│ ├─ olm-operator                          │
│ ├─ catalog-operator                     │
│ └─ operatorhubio-catalog                │
└──────────────────────────────────────────┘
                │
                ▼
┌──────────────────────────────────────────┐
│ GitLab Runner Operator                   │
│ namespace: tech-gitlab-runner-operator   │
│                                          │
│ ├─ Controller Manager                    │
│ │   └─ CRD: runners.apps.gitlab.com      │
│ │      (полная схема через OLM)          │
│ └─ kube-rbac-proxy (/metrics)            │
└──────────────────────────────────────────┘
                │
                ▼
┌──────────────────────────────────────────┐
│ GitLab Runner Instances                  │
│ namespace: tech-gitlab-runner-instances  │
│                                          │
│ ├─ Runner (CR)                           │
│ │   └─ gitlab-runner-tech                │
│ ├─ Runner Pod                            │
│ └─ CI Build Pods (Kubernetes executor)   │
└──────────────────────────────────────────┘

Namespaces

Компонент Namespace
OLM olm, operators
GitLab Runner Operator tech-gitlab-runner-operator
GitLab Runner instances tech-gitlab-runner-instances
Monitoring (Prometheus) tech-monitoring

Быстрый старт (OLM)

1. Установка OLM

1
make olm-install

Что делает команда:

  • устанавливает CRD OLM
  • разворачивает olm-operator и catalog-operator
  • создаёт namespaces olm и operators

Проверка:

1
2
kubectl get pods -n olm
kubectl get pods -n operators

2. Установка GitLab Runner Operator через OLM

1
make gitlab-runner-olm-install

В процессе:

  • создаётся Subscription из OperatorHub (channel stable)
  • OLM устанавливает полную CRD Runner
  • оператор управляется через ClusterServiceVersion (CSV)

Проверка:

1
2
3
kubectl get subscription -n operators
kubectl get csv -n operators
kubectl get crd runners.apps.gitlab.com

3. Создание секрета с токеном GitLab

Получите токен в GitLab:

1
Settings → CI/CD → Runners

Создание секрета:

1
make gitlab-runner-create-secret

Параметры секрета:

  • name: gitlab-runner-token
  • namespace: tech-gitlab-runner-instances
  • key: runner-registration-token

4. Создание Runner instance

1
make gitlab-runner-create-instance

После этого оператор создаст Runner Pod и зарегистрирует его в GitLab.


5. Проверка статуса

1
make gitlab-runner-status

Также можно проверить вручную:

1
2
kubectl -n tech-gitlab-runner-operator get pods
kubectl -n tech-gitlab-runner-instances get pods

Команды Makefile

OLM

1
2
make olm-install
make olm-uninstall

GitLab Runner Operator

1
2
3
make gitlab-runner-olm-install
make gitlab-runner-status
make gitlab-runner-uninstall

Runner instances

1
2
3
make gitlab-runner-create-secret
make gitlab-runner-create-instance
make gitlab-runner-update-instance

RBAC для PostgreSQL

1
2
make gitlab-runner-apply-rbac     # Применить RBAC для доступа к секретам PostgreSQL
make gitlab-runner-check-rbac     # Проверить текущие права доступа

Конфигурация Runner

Пример Runner Custom Resource:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
apiVersion: apps.gitlab.com/v1beta2
kind: Runner
metadata:
  name: gitlab-runner-tech
  namespace: tech-gitlab-runner-instances
spec:
  gitlabUrl: https://gitlab.com/
  token: gitlab-runner-token

  tags: "kubernetes,ci"
  runUntagged: true
  locked: false

  concurrent: 10
  interval: 30
  logFormat: json

  namespace: tech-gitlab-runner-instances
  buildImage: alpine:latest

Основные параметры:

  • tags — используются в .gitlab-ci.yml
  • concurrent — максимальное число параллельных jobs
  • namespace — где создаются build pods
  • buildImage — образ по умолчанию

Метрики и мониторинг

Метрики оператора

Источник:

  • Service: gitlab-runner-controller-manager-metrics-service
  • Namespace: tech-gitlab-runner-operator
  • Port: 8443
  • Protocol: HTTPS (через kube-rbac-proxy)

Используется отдельный ServiceMonitor с:

  • scheme: https
  • bearerTokenFile
  • insecureSkipVerify: true

Метрики GitLab Runner

По умолчанию отключены.

Для включения требуется:

  • установка оператора через OLM
  • расширенная CRD
  • включение через listenAddr или spec.config

После включения:

  • port: 9242
  • path: /metrics
  • Service: gitlab-runner-tech

Prometheus

Метрики собираются через ServiceMonitor в namespace tech-monitoring:

  • отдельный monitor для оператора
  • отдельный monitor для runner

Подключение к GitLab

Проверка регистрации Runner

В GitLab:

1
Settings → CI/CD → Runners

Runner должен появиться со статусом online и тегами:

1
kubernetes, ci

Использование в .gitlab-ci.yml

1
2
3
4
5
job:
  tags:
    - kubernetes
  script:
    - echo "Running on GitLab Runner (Kubernetes)"

RBAC для доступа к секретам PostgreSQL

GitLab Runner автоматически читает credentials для миграций из Kubernetes секретов, если они не указаны явно в GitLab CI/CD Variables.

Установка RBAC

1
make gitlab-runner-apply-rbac

Команда применяет манифест gitlab-runner-rbac.yaml, который создаёт: * Role gitlab-runner-postgres-secrets-reader в namespace tech-postgres-databases * RoleBinding для ServiceAccount gitlab-runner-app-sa

Проверка прав

1
make gitlab-runner-check-rbac

Команда проверяет: * Существование ServiceAccount * Права на чтение секретов в namespace tech-postgres-databases * Наличие RoleBinding

Ожидаемый результат:

1
2
Checking permissions to read secrets in tech-postgres-databases:
yes

Как это работает

  1. Если в CI указана переменная MIGRATION_ENV_VARS_* (например, MIGRATION_ENV_VARS_STAGE), используется она
  2. Если переменная не указана, система автоматически:
  3. Определяет окружение из CI_ENVIRONMENT_NAME (stage/pre/production)
  4. Читает секрет pg-user-{SERVICE}-{ENV} из namespace tech-postgres-databases
  5. Извлекает credentials и создаёт .env.migration для docker

Обратная совместимость

Старый способ через GitLab CI/CD Variables продолжает работать. Автоматическое чтение K8s секретов включается только если MIGRATION_ENV_VARS_* не указана.

Требования

  • Секрет должен существовать: make postgres-init-service-db SERVICE=your-service
  • RBAC должен быть применён: make gitlab-runner-apply-rbac
  • KUBECONFIG должен быть настроен в CI jobs (уже есть через KUBECONFIG_STAGE/PRE/PROD)

Безопасность

RBAC ограничивает права GitLab Runner: * Только чтение (get) секретов * Только в namespace tech-postgres-databases * Только секреты с префиксом pg-user-*


Troubleshooting

Operator не запускается

1
2
kubectl -n operators get csv
kubectl -n tech-gitlab-runner-operator logs deploy/gitlab-runner-gitlab-runnercontroller-manager -c manager

ImagePullBackOff: ose-kube-rbac-proxy

В gitlab-runner-operator.yaml у Subscription задано RELATED_IMAGE_KUBE_RBAC_PROXY → публичный kube-rbac-proxy (quay.io/brancz/...), чтобы при установке с нуля OLM мог подставить override (как задумано в Operator SDK для related images).

Если в конкретной версии CSV sidecar всё ещё тянет битый digest из манифеста bundle — это уже разовая операция в кластере (например kubectl set image … kube-rbac-proxy=…), а не часть репозитория.


CRD не принимает новые поля

Причины:

  • оператор установлен не через OLM
  • CRD применена вручную
  • конфликт версий

Проверка схемы:

1
kubectl explain runner.spec

Runner не регистрируется в GitLab

1
2
kubectl -n tech-gitlab-runner-instances get secret gitlab-runner-token
kubectl -n tech-gitlab-runner-instances logs -l app=gitlab-runner

Build pods не создаются

1
2
kubectl top nodes
kubectl -n tech-gitlab-runner-instances get events --sort-by='.lastTimestamp'

Ссылки

  • GitLab Runner Operator (OperatorHub) https://operatorhub.io/operator/gitlab-runner-operator
  • GitLab Runner Operator Docs https://docs.gitlab.com/runner/install/operator/
  • Operator Lifecycle Manager https://olm.operatorframework.io/
  • GitLab Runner https://docs.gitlab.com/runner/
Меню
Главная Карта документации
0. С чего начать
С чего начать Что это за продукт Для кого он Как устроена документация Быстрые ссылки Как начать разработку Как найти нужный сервис К кому идти по вопросам
1. Продукт
Продукт
2. Домены
Домены Домен: Профиль пользователя Домен: Поиск Домен: Заказы / транзакции Домен: Уведомления Домен: Аналитика Домен: Рекомендации
3. Архитектура
Архитектура Диаграмма: auth микросервисы
4. Инженерия
Инженерия
5. Платформа
Платформа Облако Объектное хранилище CI/CD Секреты и сертификаты Резервное копирование и восстановление
6. Разработка
Разработка Быстрый старт Локальная настройка Карта репозиториев Стандарты кода Git-процесс Стратегия ветвления Руководство по код-ревью Критерии готовности Процесс релиза Флаги фич FAQ разработчика Миграция secure auth
7. Эксплуатация
Эксплуатация Дежурство Управление инцидентами Уровни критичности Политика эскалации Постмортемы Ранбуки Управление изменениями Непрерывность бизнеса
8. Аналитика
Аналитика План трекинга событий Определения KPI Каталог дашбордов Словарь метрик Эксперименты Стандарты отчётности
9. Управление
Управление Решения (ADR) Политика статуса контента Changelog обновлений документации

На странице

Оглавление Описание Архитектура Namespaces Быстрый старт (OLM) 1. Установка OLM 2. Установка GitLab Runner Operator через OLM 3. Создание секрета с токеном GitLab 4. Создание Runner instance 5. Проверка статуса Команды Makefile OLM GitLab Runner Operator Runner instances RBAC для PostgreSQL Конфигурация Runner Метрики и мониторинг Метрики оператора Метрики GitLab Runner Prometheus Подключение к GitLab Проверка регистрации Runner Использование в .gitlab-ci.yml RBAC для доступа к секретам PostgreSQL Установка RBAC Проверка прав Как это работает Обратная совместимость Требования Безопасность Troubleshooting Operator не запускается ImagePullBackOff: ose-kube-rbac-proxy CRD не принимает новые поля Runner не регистрируется в GitLab Build pods не создаются Ссылки