Operator-sdk#

Operator-sdk - инструмент, разработанный для создания приложений-операторов DropApp. Operator-sdk помогает разработчикам приложений-операторов DropApp быстрее разрабатывать, упрощать управление операторами и обеспечивать совместимость с DropApp.

Таблица. Общие команды и параметры.

Команда

Описание

operator-sdk init

Инициализация проекта оператора в текущем каталоге

operator-sdk init --plugins=<plugin-key>

Инициализация проекта оператора в текущем каталоге с помощью специального плагина. Чтобы проверить доступные плагины, запустите operator-sdk --help. Например (operator-sdk init --plugins=helm)

operator-sdk create api [flags]

Позволяет создавать собственные API с помощью GKV, расширяя API DropApp с помощью CustomResourceDefinitions, или позволяет использовать внешние/основные типы. Также генерирует свои соответствующие контроллеры

operator-sdk create webhook [flags]

Для создания шаблонов web-перехватчиков для API, объявленных в проекте. Опция поддерживается только проектами на основе языка Go

make docker-build IMG=<some-registry>/<project-name>:<tag>

Создание образа оператора

make docker-build docker-push IMG=<some-registry>/<project-name>:<tag>

Создание и отправка образа оператора для реестра

make install

Установка CRD в кластер

make uninstall

Удаление CRD в кластере

make run

Запуск контроллера локально и вне кластера

make deploy

Развертывание проекта в кластере

make undeploy

Отмена развертывания проекта в кластер

Таблица. Список команд для проведения тестирования проектов.

Команда

Описание

operator-sdk scorecard ./bundle

Запуск тестов Scorecard для вашего пакета

make test

Запуск тестов Go, действителен только для операторов Go

molecule test

Запуск молекулярных тестов, действителен только для операторов на основе Ansible

helm test

Запуск тестов Helm, действителен только для операторов на базе Helm

Примечание

В таблицах приведен не полный список целей и команд make. Для вывода полного списка введите команду make help в командной строке.

Установка Operator-sdk#

Примечание

В текущем сценарии использования приведена последовательность создания простого оператора Nginx на основе Helm с использованием инструментов и библиотек, предоставляемых Operator-sdk.

В приведенных примерах example.com используется в качестве namespace реестра DaPP Hub. Замените его другим значением, если используется другой реестр или namespace.

  1. Создайте каталог для проекта и инициализируйте:

    mkdir nginx-operator
    cd nginx-operator
    operator-sdk init --domain example.com --plugins helm
    
  2. Создайте API nginx, используя встроенный шаблон диаграмм Helm (из helm create):

    operator-sdk create api --group demo --version v1alpha1 --kind Nginx
    
  3. Создавайте и продвигайте образ своего оператора:

    `make docker-build docker-push IMG="example.com/nginx-operator:v0.0.1"`
    
  4. Установите Operator Lifecycle Manager:

    operator-sdk olm install
    
  5. Сделайте привязку оператора, затем создайте и отправьте образ связки (по умолчанию: example.com/nginx-operator-bundle:v0.0.1):

    make bundle IMG="example.com/nginx-operator:v0.0.1"
    make bundle-build bundle-push IMG="example.com/nginx-operator:v0.0.1"
    

    Выше приведена команда make, которая создает два bundle файла и устанавливает их на сервер nginx. Первый файл будет содержать пакет с именем example.com/nginx-operator, а второй файл будет содержать пакет с именем example.com/nginx-operator:v0.0.1. Это может помочь улучшить производительность сервера, так как каждый пакет будет обрабатываться отдельно, а не все вместе.

    Команда make использует опцию bundle-build для создания двух отдельных bundle файлов. Опция bundle-push используется для установки этих двух пакетов на сервер nginx.

  6. Запустите пакет:

    operator-sdk run bundle example.com/nginx-operator-bundle:v0.0.1
    
  7. Создайте образец пользовательского ресурса nginx:

    kubectl apply -f config/samples/demo_v1alpha1_nginx.yaml
    nginx.demo.example.com/nginx-sample created
    
  8. Удалите Operator-sdk:

    operator-sdk cleanup nginx-operator
    
  9. Разверните Operator-sdk:

    make deploy IMG="example.com/nginx-operator:v0.0.1"
    
  10. Создайте образец пользовательского ресурса nginx:

    kubectl apply -f config/samples/demo_v1alpha1_nginx.yaml
    nginx.demo.example.com/nginx-sample created
    
  11. Удалите deployment Operator-sdk:

    make undeploy