Dockin Ops — сервис управления операциями Dockin

Dockin — это система управления и обслуживания, которая обеспечивает безопасную работу и управление обслуживанием, оптимизирует производительность выполнения команд, поддерживает управление полномочиями команд и поддерживает оркестровку операций и технического обслуживания.
Для получения дополнительной информации о компонентах Docking посетите https://github.com/WeBankFinTech/Dockin
Введение в компоненты
Dockin-Opserver
dockin-opserver — это агент интерфейса apiserver, разработанный на основе kubernetes client-go, который поддерживает следующие основные функции:
- Управление несколькими кластерами одновременно;
- Управление учётными записями пользователей. При доступе к самому Pod учётные записи не управляются. Поэтому, если у вас есть kubeconfig, вы можете получить доступ ко всем Pods. Для межотделенческих ситуаций существуют риски безопасности;
- Прокси ssh. После входа в Pod через kubectl exec /bin/bash -it пользователи могут выполнять любые команды. Однако из-за особенностей kubernetes существует строгий контроль над памятью, поэтому некоторые операции с использованием памяти, такие как vi для очень больших файлов, могут легко привести к тому, что Pod будет OOM kill. Через прокси ssh мы можем перехватывать все команды, выполняемые пользователями, и выполнять оценку безопасности (чёрные и белые списки);
- Аудит. Любые команды можно выполнить через kubectl exec. Как пользователь выполняет команду, которая вызывает угрозу безопасности. С помощью функции аудита мы проверим все команды, выполненные пользователем, будь то exec или в среде оболочки. Можно отследить соответствующие архивы;
- Предоставление интерфейсов http и websocket для выполнения обычных запросов exec и интерактивных запросов exec;
- Преобразование протоколов. Преобразуйте данные протокола websocket и spdy друг в друга;
- Сохраните время добавления, обновления и удаления pod в redis через функцию informer клиента-go.
Dockin-Opsctl
Подобно клиенту kubectl, двоичный клиент, пользователь и dockin-opserver устанавливают запрос http или websocket, связывают текущий стандартный ввод и стандартный ввод, входят в необработанный режим в интерактивном режиме.
Dockin-Opagent
Агент dockin развёртывается на каждом узле kubernetes через daemonset и в основном имеет следующие функции:
- Монтирование docker.sock для подключения к dockerd;
- Интеграция docker api для работы docker exec;
- Управление соответствием между containerId и podName на текущем узле;
- Обеспечение интерфейса spdy для ответа на запросы exec, инициированные dockin-opserver;
- Связывание потоков ввода и вывода docker api с потоками ввода и вывода spdy.
dockctl
dockctl — это пакет dockin-opsctl:
- dockctl предоставляет пакетную обработку нескольких Pods по подсистемам;
- Улучшает вывод. dockin-opsctl возвращает стандартный вывод, в основном данные json, dockctl улучшит отображение данных json.
Список функций с открытым исходным кодом
- dockctl cmdb, ограничение информации, связанной с Pod, на основе подсистемы;
- exec proxy;
- инструмент ssh: поддержка перехвата команд ssh, поддержка перехват параметров команд, поддержка управления учётными записями;
- управление разрешениями Pod.
План развития
- Оптимизация анализа содержимого оболочки (на основе управляющих символов и символов перехода);
- Загрузка и скачивание файлов (kubectl cp без apiserver);
- захват событий oom;
- kubectl debug.
Демо
SSH

CMDB

Сторонние компоненты
- Кластер kubernetes. Автономную установку можно выполнить с помощью dokin-installer: https://github.com/WeBankFinTech/Dockin-installer.
- Заранее разверните dokin-rm. opserver должен вызывать интерфейс rm для получения информации: dockin-rm. Подготовьте Redis. В Redis хранится чёрный и белый список некоторых команд оболочки. Информацию об изменении пода, которую отправляет apiserver через информер, можно быстро обработать с помощью следующих команд:
docker run -p 6379:6379 -d redis:latest redis-server
Комментарии ( 0 )