Введение

В этой статье мы рассмотрим, как создать образец оператора с помощью машинописного текста и развернуть его в нашем кластере. Оператор будет довольно фиктивным в том смысле, что он будет развертывать только некоторые ресурсы на основе CRD, но вы можете настроить его так, чтобы Идея состоит в том, чтобы получить представление обо всем, что нужно для работы оператора за пределами волшебной страны Go и kubebuilder.

Если вы хотите проверить прошлые статьи, посвященные другим альтернативным фреймворкам и языкам, перейдите по ссылке:

Вы заметите, что оба они очень похожи, и это потому, что 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 г.