Модуль 3: Создание кастомных контроллеров
Обзор
Теперь, когда вы создали свой первый оператор в Модуле 2, пришло время глубже погрузиться в создание совершенных контроллеров. Этот модуль обучает продвинутым паттернам и приёмам, необходимым для создания готовых к продакшену операторов, управляющих сложными приложениями.
Продолжительность: 6–7 часов
Предварительные требования:
- Завершение Модуля 1: Глубокое погружение в архитектуру Kubernetes
- Завершение Модуля 2: Введение в операторы
- Понимание базового паттерна оператора
Цели обучения
К концу этого модуля вы:
- Глубоко разберётесь в архитектуре controller-runtime
- Спроектируете хорошо структурированные API для своих операторов
- Реализуете надёжную логику согласования
- Научитесь эффективно работать с клиентом Kubernetes
- Создадите оператор базы данных, управляющий PostgreSQL
Структура модуля
- Урок 3.1: Глубокое погружение в Controller Runtime
- Урок 3.2: Проектирование вашего API
- Урок 3.3: Реализация логики согласования
- Урок 3.4: Работа с Client-Go
Проверка предварительных требований
Перед началом убедитесь, что вы завершили:
- ✅ Модуль 1: понимание CRD, контроллеров и согласования
- ✅ Модуль 2: создание вашего первого оператора «Hello World»
- ✅ Умение генерировать каркас проектов kubebuilder
- ✅ Понимание основ функции Reconcile
Если вы не завершили Модуль 2, начните с Модуля 2: Введение в операторы.
Что вы создадите
На протяжении этого модуля вы будете создавать оператор PostgreSQL, который:
- Управляет экземплярами баз данных PostgreSQL
- Обрабатывает создание и конфигурацию базы данных
- Управляет StatefulSet и Service
- Реализует корректную логику согласования
- Использует ссылки-владельцы для управления ресурсами
Это развивает ваш оператор «Hello World» из Модуля 2, добавляя сложность и реальные паттерны.
Настройка
Перед началом этого модуля:
- Проверьте завершение Модуля 2:
- Вы должны были создать оператор «Hello World»
- Вы понимаете структуру проекта kubebuilder
- Вы умеете запускать операторы локально
- Убедитесь, что среда разработки готова:
./scripts/setup-dev-environment.sh - Запущенный кластер kind:
./scripts/setup-kind-cluster.sh
Практические лабораторные работы
Каждый урок включает практические упражнения, ведущие к созданию полноценного оператора PostgreSQL.
- Лабораторная 3.1: Исследование Controller Runtime
- Лабораторная 3.2: Проектирование API для оператора базы данных
- Лабораторная 3.3: Создание оператора PostgreSQL
- Лабораторная 3.4: Продвинутые операции клиента
Решения
Полные рабочие решения для всех лабораторных доступны в каталоге решений:
- Решения лабораторной 3.3 — полный оператор Database (типы, контроллер с StatefulSet/Service)