Лабораторная 2.1: Исследование существующих операторов
Связанный урок: Урок 2.1: Паттерн оператора
Навигация: Обзор модуля | Следующая лабораторная: Основы Kubebuilder →
Цели
- Исследовать существующие операторы в экосистеме Kubernetes
- Понять структуру и поведение оператора
- Сравнить развёртывание через оператор и через Helm
- Определить сценарии использования операторов
Предварительные требования
- Запущенный кластер kind
- Настроенный kubectl
- Понимание CRD из Модуля 1
Упражнение 1: изучение OperatorHub
Задача 1.1: просмотрите OperatorHub
- Зайдите на OperatorHub.io
- Просмотрите доступные операторы
- Найдите знакомые вам операторы (Prometheus, PostgreSQL и т. д.)
Вопросы для ответа:
- Какие категории операторов существуют?
- Какие популярные операторы есть?
- Какие проблемы они решают?
Задача 1.2: изучите структуру оператора
Выберите оператор (например, Prometheus Operator) и изучите:
# Search for operator documentation
# Look at:
# - CRD definitions
# - Operator capabilities
# - Use cases
Упражнение 2: установка и исследование оператора
Задача 2.1: установите Prometheus Operator (опционально)
Если вы хотите исследовать реальный оператор:
# Install using Helm (for exploration)
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
# Install Prometheus Operator
helm install prometheus prometheus-community/kube-prometheus-stack
Примечание: это только для ознакомления. Собственные операторы мы будем создавать в этом курсе.
Задача 2.2: изучите ресурсы оператора
# List CRDs created by operator
kubectl get crds | grep prometheus
# Examine a CRD
kubectl get crd prometheuses.monitoring.coreos.com -o yaml | head -50
# See operator deployment
kubectl get deployments -n default | grep prometheus
Упражнение 3: сравнение оператора и Helm
Задача 3.1: разберитесь в различии
Развёртывание через Helm:
# Helm installs once
helm install my-app ./chart
# No ongoing management
Развёртывание через оператор:
# Operator continuously manages
kubectl apply -f custom-resource.yaml
# Operator reconciles continuously
Задача 3.2: определите сценарии использования
Для каждого сценария решите: оператор или Helm?
- Развёртывание простого веб-приложения
- Ответ: Helm (разовая настройка)
- База данных PostgreSQL с резервным копированием
- Ответ: оператор (сложный жизненный цикл)
- Кластер кеша Redis
- Ответ: оператор (stateful, требует управления)
- Статический сайт
- Ответ: Helm (простое развёртывание)
Упражнение 4: анализ паттернов операторов
Задача 4.1: компоненты оператора
На основе изученного в Модуле 1, операторы имеют:
- CRD — определение пользовательского ресурса
- Контроллер — логика согласования
- RBAC — разрешения
# If you installed an operator, examine these:
kubectl get crds
kubectl get deployments
kubectl get clusterroles | grep <operator-name>
Задача 4.2: паттерн согласования
Операторы следуют тому же паттерну, который вы изучили:
graph LR
CR[Custom Resource] --> WATCH[Watch]
WATCH --> RECONCILE[Reconcile]
RECONCILE --> RESOURCES[Resources]
RESOURCES --> STATUS[Update Status]
Это тот же паттерн из Урока 1.3!
Упражнение 5: уровни зрелости операторов
Задача 5.1: определите уровни зрелости
Для каждого исследованного оператора определите его уровень зрелости:
- Уровень 1: базовая установка
- Уровень 2: бесшовные обновления
- Уровень 3: полный жизненный цикл
- Уровень 4: глубокая аналитика
- Уровень 5: автопилот
Задача 5.2: задокументируйте выводы
Составьте простое сравнение:
| Оператор | Уровень зрелости | Ключевые возможности |
|---|---|---|
| Example | Уровень 3 | Резервное копирование, восстановление |
Упражнение 6: когда создавать оператор
Задача 6.1: дерево решений
Используйте дерево решений из урока:
flowchart TD
START[Need to Deploy App] --> Q1{Complex Lifecycle?}
Q1 -->|No| HELM[Use Helm]
Q1 -->|Yes| Q2{Need Ongoing Management?}
Q2 -->|Yes| OPERATOR[Use Operator]
Задача 6.2: ваши сценарии использования
Подумайте о приложениях, которыми вы управляете. Какие из них выиграли бы от операторов?
Примеры:
- База данных с автоматическим резервным копированием → оператор
- Простой API-сервис → Helm
- Кластер очереди сообщений → оператор
Очистка
Если вы устанавливали операторы для ознакомления:
# Remove Helm releases
helm list
helm uninstall <release-name>
# Remove CRDs
kubectl delete crd --all
Итоги лабораторной
В этой лабораторной вы:
- Исследовали существующие операторы в экосистеме
- Разобрались в структуре и компонентах оператора
- Сравнили операторы и Helm-чарты
- Определили, когда использовать операторы
- Проанализировали уровни зрелости операторов
Ключевые уроки
- Операторы — это контроллеры, которые управляют пользовательскими ресурсами
- Операторы кодируют знания предметной области для управления приложениями
- Используйте операторы для сложных stateful-приложений
- Операторы следуют тому же паттерну согласования, что и встроенные контроллеры
- Операторы обеспечивают непрерывное управление, а не разовое развёртывание
Дальнейшие шаги
Теперь, когда вы понимаете, что такое операторы, давайте изучим Kubebuilder — инструмент, который мы будем использовать для их создания!