Datree – это утилита CLI с открытым исходным кодом, которая помогает администраторам Kubernetes разрабатывать политики, которым должна следовать команда.
Это помогает предотвратить ошибки в конфигурациях Kubernetes, которые могут привести к сбою кластеров в производстве.
Обычно Datreee работает путем автоматической проверки изменений кода на предмет нарушений правил и неправильной конфигурации.
При обнаружении нарушений/неправильной конфигурации выдается предупреждение, которое подсказывает разработчику, как исправить проблему.
Datree предлагает администраторам следующие преимущества:
- Включите управление ограничениями: Осуществляйте управление ограничениями в специально отведенном месте по всей организации. Администраторы имеют все полномочия для управления системами.
- Обеспечение ограничений политики при разработке: ограничения обеспечиваются до применения к кластеру. Разработчики получают раннее предупреждение о возникновении неправильной конфигурации. Они могут исправить ошибки до того, как код перейдет в прод.
- Обучение передовым методам: Передовой опыт включает в себя: анализ, ограждение и защиту от всех возможных подводных камней в текущих и будущих сценариях использования. Datree поставляется со встроенными передовыми практиками Kubernetes, поэтому наблюдение со стороны человека не требуется.
- Культура DevOps: Datree предоставляет механизмы, аналогичные другим инструментам разработки, такие как модульные тесты. Это делает его простым в использовании, поскольку разработчики знакомы с ними. Эти инструменты используются для развития культуры DevOps.
Начало работы.
Это руководство требует установки следующих пакетов.
### CentOS / RHEL ###
sudo yum -y install vim curl wget unzip
### Debian / Ubuntu ###
sudo apt update
sudo apt install -y vim curl wget unzip
### Fedora ###
sudo dnf -y install vim curl wget unzip
#1. Установка Datree
Установить Datree на системы Linux/macOS просто.
Все, что вам нужно сделать, это выполнить приведенную ниже команду:
curl https://get.datree.io | /bin/bash
Вывод исполнения:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1736 100 1736 0 0 36936 0 --:--:-- --:--:-- --:--:-- 36936
Installing Datree...
[V] Downloaded Datree
[V] Finished Installation
Usage: $ datree test ~/.datree/k8s-demo.yaml
Using Helm? => https://github.com/datreeio/helm-datree
Using Kustomize? => https://hub.datree.io/kustomize-support
Run 'datree completion -h' to learn how to generate shell autocompletions
На Windows выполните следующую команду в Powershell для установки Datree:
iwr -useb https://get.datree.io/windows_install.ps1 | iex
Приведенные выше команды устанавливают последнюю версию Datree.
Существуют и другие варианты установки, например:
Использование Homebrew:
brew tap datreeio/datree
brew install datreeio/datree/datree
Используя Docker:
docker pull datree/datree
Подтвердите установку:
$ datree version
1.4.3
#2. Использование Datree для сканирования файлов манифеста Kubernetes
После установки вы можете легко использовать Datree для проверки безопасности манифестов Kubernetes.
Используется следующий синтаксис:
datree test [k8s-manifest-file]
Когда проверка запущена, она проходит через 3 основные стадии:
- проверка YAML
- проверка чартов Kubernetes
- проверка политик Kubernetes.
Например, при выполнении проверки моего демонстрационного манифеста команда будет выглядеть следующим образом:
datree test ~/.datree/k8s-demo.yaml
Из вывода можно увидеть подробную информацию о нарушениях, имеющихся в манифесте.
Это дает администраторам необходимые указания по их устранению.
#3. Настройте свою политику
Каждая проверка политики Datree выполняется с использованием политики по умолчанию, которая включает 44 встроенных правила.
Чтобы настроить политику, необходимо вернуться к выполнению терминала и зарегистрироваться, нажав на ссылку, указанную в конце вывода.
+-----------------------------------+------------------------------------------------------+
| Enabled rules in policy “Default” | 21 |
| Configs tested against policy | 1 |
| Total rules evaluated | 21 |
| Total rules skipped | 0 |
| Total rules failed | 4 |
| Total rules passed | 17 |
| See all rules in policy | https://app.datree.io/login?t=bDNVK7Tg9ZSCN76pZPhmT7 |
+-----------------------------------+------------------------------------------------------+
Зарегистрируйтесь, предоставив необходимые учетные данные.
#4. Интегрируйте Datree в ваш CI
Чтобы иметь возможность поддерживать чистые и стабильные репозитории, вовремя предотвращая неправильную конфигурацию, вам необходимо выполнить интеграцию.
Поддерживаются следующие интеграции.
- Плагин Kubectl
- плагин Helm
- Github actions
- Git hooks
- Pre-commit hook
Это руководство демонстрирует, как установить и использовать перечисленные ниже плагины:
Плагин Kubectl
Плагин Kubectl можно установить с помощью команды:
kubectl krew install datree
Синтаксис ниже используется для выполнения сканирования с помощью плагина kubectl-datree.
kubectl datree test [datree CLI args] -- [options]
Например, выполнение сканирования путем выборки всех ресурсов в тестовом пространстве имен и выполнение проверки политики:
kubectl datree test -- -n test
Плагин Helm
Этот плагин используется для проверки чартов на соответствие политике Datree.
Плагин можно установить с помощью команды:
helm plugin install https://github.com/datreeio/helm-datree
Чтобы обновить плагин, просто запустите:
helm plugin update datree
Удалите плагин с помощью команды:
helm plugin uninstall datree
Чтобы запустить проверку политики Datree на диаграммах Helm, выполните команду с приведенным ниже синтаксисом.
helm datree test [CHART_DIRECTORY]
Если вам нужно передать аргументы в ваш шаблон, добавьте — перед ними, как показано ниже:
helm datree test [CHART_DIRECTORY] -- --values values.yaml --set name=prod
Чтобы продемонстрировать, как использовать плагин, я создам образец чарта Helm, как показано ниже:
$ helm create buildachart
Creating buildachart
Теперь проведите тест:
helm datree test buildachart/templates/deployment.yaml
Чтобы интегрировать Datree в CI/CD, вы можете следовать приведенному ниже примеру. Вам необходимо выполнить следующие шаги:
- Получите токен вашей учетной записи (его можно найти в дашборде разделе Settings).
- Установите DATREE_TOKEN в качестве секретной переменной/переменной окружения
- Добавьте Datree в ваш CI-скрипт, как показано в примере ниже:
version: 2.1
jobs:
build:
docker:
- image: circleci/node
steps:
- checkout
- run: npm run build
test:
docker:
- image: circleci/node
steps:
- checkout
- run: curl https://get.datree.io | /bin/bash
- run: datree test ~/.datree/k8s-demo.yaml
workflows:
main:
jobs:
- build
- test
На этом мы завершаем руководство по выполнению проверки безопасности манифестов Kubernetes и чартов Helm с помощью Datree.
Мы можем согласиться с тем, что Datree можно использовать для предотвращения ошибок в конфигурациях Kubernetes, которые могут привести к отказу кластеров в проде.
☸️ Обновление ConfigMap и secrets без перезапуска пода в K8s
☸️ Перехват трафика контейнеров в Kubernetes
☸️ Как установить и настроить OWASP ZAP в Kubernetes или Docker