Введение
В этой статье мы рассмотрим, как создать образец оператора с помощью машинописного текста и развернуть его в нашем кластере. Оператор будет довольно фиктивным в том смысле, что он будет развертывать только некоторые ресурсы на основе CRD, но вы можете настроить его так, чтобы Идея состоит в том, чтобы получить представление обо всем, что нужно для работы оператора за пределами волшебной страны Go и kubebuilder.
Если вы хотите проверить прошлые статьи, посвященные другим альтернативным фреймворкам и языкам, перейдите по ссылке:
- Облачные нативные приложения с kubebuilder и любыми операторами kubernetes.
- Тестирование Operator SDK и создание механизма предварительной загрузки для Kubernetes.
Вы заметите, что оба они очень похожи, и это потому, что operator-sdk использует kubebuilder.
Источник этой статьи находится здесь Оператор TypeScript, а изображение докера находится здесь, также эта статья основана на этом примере из Оператора в JavaScript Nodeshift.
Предварительные требования
Давайте перейдем к примеру
Создание кластера
Нам понадобится кластер для запуска и тестирования нашего оператора, поэтому вид довольно прост и достаточно легкий, чтобы работать где угодно.
Создание нашего оператора
Создание всех необходимых ресурсов для работы нашего оператора
Развертывание нашего оператора
Создание нашего настраиваемого ресурса, чтобы увидеть оператор в действии
Журналы от оператора
Примеры журналов, основанных на создании, обновлении и удалении нашего настраиваемого ресурса
Краткое сравнение operator-sdk и пользовательского оператора?
В Go вы должны иметь в виду некоторые основные отличия:
- Генерация кода из фреймворка для RBAC, контроллеров и т. Д.
- Готовые инструменты для создания, развертывания и управления вашим оператором.
В TypeScript или JavaScript вам нужно обрабатывать больше вещей, которые можно легко сделать из системы CI. В этом примере я использовал действия github для создания изображения, и в этом примере уже было настроено все остальное, чтобы сделать машинописный текст пригодным для использования с кубернетами в качестве примера, но вы в основном используете API и настраиваете все самостоятельно, отличий больше, но это основные, которые я заметил или обратил свое внимание.
Сборка и продвижение (образ докера)
В этом случае нам не нужно делать это, он будет управляться действиями с использованием бесплатного реестра контейнеров, который они предоставляют, он создаст и отправит образ, соответствующий имени ветки, обратите внимание, что он полностью прозрачен, вам не нужно Чтобы настроить что-либо на репо, вы можете увидеть результат здесь.
Местное развитие
Бонус: если вы хотите запустить оператор локально при разработке или отладке, вы можете легко сделать это с помощью ts-node
, например: Причина, по которой я использовал его таким образом, заключалась в основном в предположении нулевой конфигурации, и это возможно, потому что ts-node указан как зависимость разработки, также образ докера можно было бы использовать с небольшой конфигурацией.
Обратите внимание, что я не добавил весь код из папки ресурсов или настройки для проекта машинописного текста, я рекомендую вам проверить это непосредственно в репозитории, чтобы понять все недостающие части.
Теперь давайте посмотрим на код
Достаточно слов, давайте посмотрим код, я добавил комментарии и немного изменил исходный код
Файл deployment.json
Этот файл в основном развертывается, когда мы создаем собственный ресурс.
И наконец наш кастомный ресурс
Таким образом мы сообщаем нашему оператору, что нам нужен оператор для создания ресурсов для данной задачи.
Дополнительный
Чтобы получить более подробную информацию и увидеть, как все сочетается друг с другом, я рекомендую вам клонировать репо, протестировать его и изменить самостоятельно.
Убираться
Чтобы очистить оператора от кластера, вы можете сделать это
Заключительные примечания
Не забудьте проверить ссылки, если хотите узнать больше о примерах из Nodeshift, и я надеюсь, вам понравилось, увидимся в twitter или github!
Источник этой статьи находится здесь
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: я не использую OpenShift, но все примеры легко перевести в обычный кластер.
Опечатки
Если вы заметили какую-либо ошибку или у вас есть предложение, отправьте мне сообщение, чтобы она была исправлена.
Также вы можете проверить исходный код и изменения в сгенерированном коде и исходниках здесь.
Первоначально опубликовано на https://techsquad.rocks 22 июля 2021 г.