Kubernetes Operator для декларативного управления аддонами кластера через интеграцию с Argo CD.
Addon Operator автоматизирует установку, обновление и управление жизненным циклом дополнительных компонентов (аддонов) в Kubernetes кластерах. Вместо ручного управления Helm релизами, вы описываете желаемое состояние через Custom Resources, а оператор обеспечивает его достижение.
- Декларативное управление — аддоны описываются как Kubernetes ресурсы
- Агрегация конфигурации — сборка Helm values из нескольких источников с приоритетами
- Условная конфигурация — активация настроек в зависимости от состояния кластера
- Управление зависимостями — контроль порядка развёртывания аддонов
- GitOps интеграция — Argo CD как backend для развёртывания
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Addon │────▶│ Addon │────▶│ Argo CD │
│ CRD │ │ Controller │ │ Application │
└─────────────┘ └─────────────┘ └─────────────┘
▲ │
│ ▼
┌─────────────┐ ┌─────────────┐
│ AddonValue │ │ Агрегация │
│ CRD │ │ Values │
└─────────────┘ └─────────────┘
▲ ▲
│ │
┌─────────────┐ ┌─────────────┐
│ AddonPhase │────▶│ Движок │
│ CRD │ │ Criteria │
└─────────────┘ └─────────────┘
make installmake deploy IMG=<your-registry>/addon-operator:latestapiVersion: addons.in-cloud.io/v1alpha1
kind: Addon
metadata:
name: prometheus
spec:
chart: kube-prometheus-stack
repoURL: https://prometheus-community.github.io/helm-charts
version: "55.6.0"
targetCluster: in-cluster
targetNamespace: monitoringkubectl apply -f prometheus-addon.yamlkubectl get addon prometheusПодробная документация доступна в директории docs/:
| Раздел | Описание |
|---|---|
| Быстрый старт | Установка и первые шаги |
| Концепции | Addon, AddonValue, AddonPhase |
| Руководство | Пошаговые инструкции |
| Справочник API | Спецификации CRD |
| Примеры | Готовые конфигурации |
| Устранение неполадок | Решение проблем |
- Kubernetes 1.28+
- Argo CD 2.8+
- Go 1.21+ (для сборки)
# Запуск локально
make run
# Тесты
make test
# Линтер
make lint
# Генерация CRD манифестов
make manifestsApache License 2.0. См. LICENSE.