Статический анализ для Kubernetes
Kubelinter анализирует файлы Kubernetes Yaml и Helm Hards и проверяет их на различных лучших практиках с акцентом на готовность к производству и безопасность.
Kubelinter запускает разумные проверки по умолчанию, предназначенную для предоставления вам полезной информации о ваших файлах Kubernetes YAML и хлевовых диаграммах. Это должно помочь командам проверить рано и часто на неправильные конфигурации безопасности и лучшие практики DevOps. Некоторые общие примеры их включают в себя запущенные контейнеры в качестве пользователя, не являющегося корнями, обеспечение наименьшей привилегии и хранение конфиденциальной информации только в секретах.
Kubelinter настраивается, поэтому вы можете включить и отключить чеки, а также создавать свои собственные проверки, в зависимости от политик, с которыми вы хотите следовать в своей организации.
Когда проверка ворса не удается, Kubelinter сообщает о рекомендациях о том, как решить любые потенциальные проблемы и возвращает код выхода ненулевого выхода.
Посетите https://docs.kubelinter.io для подробной документации по установке, использованию и настройке Kubelinter.
Двоичные файлы kube-linter можно найти здесь: https://github.com/stackrox/kube-linter/releases/latest
Чтобы установить, используя go, запустите следующую команду:
go install golang.stackrox.io/kube-linter/cmd/kube-linter@latestВ противном случае загрузите последний двоичный файл из выпусков и добавьте его на свой путь.
Чтобы установить с помощью Homebrew или LinuxBrew, запустите следующую команду:
brew install kube-linter nix-shell -p kube-linter
docker pull stackrox/kube-linter:latest
Установка Kubelinter из источника так же проста, как и следующие шаги:
Во -первых, клонировать репозиторий Кубелинтер.
git clone [email protected]:stackrox/kube-linter.git Затем составьте исходный код. Это создаст двоичные файлы Kube-Linter для каждой платформы и помещает их в папку .gobin .
make buildНаконец, вы готовы начать использовать Kubelinter. Проверьте свою версию, чтобы убедиться, что вы успешно установили Kubelinter.
.gobin/kube-linter versionЕсть несколько слоев тестирования. Ожидается, что каждый слой пройдет.
go ЕДИНЦИОННЫЕ Тесты:
make testТестовые тесты на сквозные интеграции:
make e2e-test И, наконец, сквозные интеграционные тесты с использованием bats-core :
make e2e-batsИзображения Кубелинтер подписаны Cosign. Мы рекомендуем проверить изображение перед его использованием.
После того, как вы установили Cosign, вы можете использовать открытый ключ Kubelinter, чтобы проверить изображение Kubelinter:
cat kubelinter-cosign.pub
-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEl0HCkCRzYv0qH5QiazoXeXe2qwFX
DmAszeH26g1s3OSsG/focPWkN88wEKQ5eiE95v+Z2snUQPl/mjPdvqpyjA==
-----END PUBLIC KEY-----
cosign verify --key kubelinter-cosign $IMAGE_NAMEKubelinter также предоставляет подписи без ключа Cosign.
Вы можете проверить изображение Kubelinter:
# NOTE: Keyless signatures are NOT PRODUCTION ready.
COSIGN_EXPERIMENTAL=1 cosign verify $IMAGE_NAME Запуск Kubelinter, чтобы пробить ваши файлы YAML, требуется только два шага в его самой основной форме.
Найдите файл YAML, который вы хотели бы проверить на лучшие практики готовности к производству:
Запустите следующую команду:
kube-linter lint /path/to/your/yaml.yaml Рассмотрим следующий пример спецификации POD файл pod.yaml . Этот файл имеет две проблемы с готовностью к производству и одна проблема безопасности:
Проблема безопасности:
Производственная готовность:
Пределы памяти контейнера не установлены, что может позволить ему потреблять чрезмерную память
apiVersion : v1
kind : Pod
metadata :
name : security-context-demo
spec :
securityContext :
runAsUser : 1000
runAsGroup : 3000
fsGroup : 2000
volumes :
- name : sec-ctx-vol
emptyDir : {}
containers :
- name : sec-ctx-demo
image : busybox
resources :
requests :
memory : " 64Mi "
cpu : " 250m "
command : [ "sh", "-c", "sleep 1h" ]
volumeMounts :
- name : sec-ctx-vol
mountPath : /data/demo
securityContext :
allowPrivilegeEscalation : falseСкопируйте YAML выше, чтобы Pod.yaml и пробивайте этот файл, выполнив следующую команду:
kube-linter lint pod.yamlKubelinter запускает свои рекомендации по умолчанию и отчеты. Ниже приведен выход из нашей предыдущей команды.
pod.yaml: (object: <no namespace>/security-context-demo /v1, Kind=Pod) The container "sec-ctx-demo" is using an invalid container image, "busybox". Please use images that are not blocked by the `BlockList` criteria : [".*:(latest)$" "^[^:]*$" "(.*/[^:]+)$"] (check: latest-tag, remediation: Use a container image with a specific tag other than latest.)
pod.yaml: (object: <no namespace>/security-context-demo /v1, Kind=Pod) container "sec-ctx-demo" does not have a read-only root file system (check: no-read-only-root-fs, remediation: Set readOnlyRootFilesystem to true in the container securityContext.)
pod.yaml: (object: <no namespace>/security-context-demo /v1, Kind=Pod) container "sec-ctx-demo" has memory limit 0 (check: unset-memory-requirements, remediation: Set memory limits for your container based on its requirements. Refer to https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#requests-and-limits for details.)
Error: found 3 lint errors
Чтобы узнать больше об использовании и настройке Kubelinter, посетите страницу документации.
Ниже приведены учебные пособия по Kubelinter, написанные пользователями. Если у вас есть тот, который вы хотели бы добавить в этот список, отправьте PR!
Если вы хотите взаимодействовать с сообществом Kubelinter, включая сопровождающих и других пользователей, вы можете присоединиться к Slack Workspace здесь.
Чтобы внести свой вклад, ознакомьтесь с нашим руководством.
В качестве напоминания, все участие в сообществе Кублинтер регулируются нашим кодексом поведения.
Кубелинтер находится на ранней стадии развития. В будущем могут произойти нарушающие изменения в форматах использования команды, флагов и форматов файлов конфигурации. Тем не менее, мы рекомендуем вам использовать Kubelinter для проверки вашей среды Yaml Files, посмотреть, что ломается и внести свой вклад.
Kubelinter лицензирован по лицензии Apache 2.0.
Кубелинтер сделан с ❤ от Stackrox.
Если вы заинтересованы в Kubelinter или в любом другом классном вещах, пожалуйста, знайте, что мы нанимаем! Проверьте наши открытые позиции. Мы хотели бы услышать от вас!