DevOps FM
4.93K subscribers
637 photos
12 videos
10 files
752 links
♾️ Канал для тех, кто живёт DevOps и системным администрированием.

Новости, статьи, best practices, инструменты и чилл-аут контент. Cloud Native, Docker, Kubernetes, CI/CD, БД, мониторинг etc.

По вопросам — к Ладе @b_vls
Download Telegram
Классный open-source инструмент — Docker Bench 💻

Это скрипт, который проверяет десятки распространенных best practices развертывания контейнеров Docker в продакшене. Все тесты автоматизированы и основаны на CIS Docker Benchmark v1.5.0.

Для работы Docker Bench требуется Docker 1.13.0 или более поздние версии.

Лицензия Apache-2.0, 8.5k звездочек на GitHub 🌟

#open_source
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16👍4
Всем DevOps! 🖖

Собрали 10 сканеров для поиска уязвимостей безопасности и неправильных конфигураций в Kubernetes, делимся!

Часть 1

▪️ Kube-bench
Репозиторий:
https://github.com/aquasecurity/kube-bench

Kube-bench — это сканер, который проверяет, развернут ли Kubernetes в соответствии с best practices безопасности, определенными в CIS Kubernetes Benchmark. Kube-bench был удостоен награды InfoWorld Basic Award 2018.

Тесты настраиваются с помощью файлов YAML, что позволяет легко обновлять этот инструмент по мере развития спецификаций тестов.

Quick start

• Внутри контейнера:
docker run - pid=host -v /etc:/etc:ro -v /var:/var:ro -t aquasec/kube-bench:latest - version 1.18

• Внутри Kubernetes-кластера:
kubectl apply -f https://github.com/aquasecurity/kube-bench/blob/main/job.yaml

▪️ Kube-hunter
Репозиторий:
https://github.com/aquasecurity/kube-hunter

Kube-hunter ищет слабые места безопасности в кластерах Kubernetes. Этот инструмент был разработан для повышения осведомленности и наглядности проблем безопасности в средах Kubernetes. НЕ следует запускать kube-hunter в кластере Kubernetes, которым вы не владеете! Находясь за пределами кластера, kube-hunter сканирует домен или диапазон адресов на наличие открытых портов, связанных с Kubernetes, и проверяет наличие проблем конфигурации, которые делают ваш кластер уязвимым для злоумышленников.

Quick start

• На любой машине выберите удаленное сканирование и укажите IP-адрес или доменное имя вашего
кластера Kubernetes. Это даст вам обзор вашей настройки Kubernetes с точки зрения злоумышленника:
pip install kube-hunter

• На машине в кластере:
docker run -it — rm — network host aquasec/kube-hunter

• В поде внутри кластера:
kubectl create -f https://github.com/aquasecurity/kube-hunter/blob/main/job.yaml

▪️ Kubeaudit
Репозиторий:
https://github.com/Shopify/kubeaudit

Kubeaudit — это инструмент командной строки и пакет Go для аудита кластеров Kubernetes на предмет различных проблем безопасности.

Kubeaudit поставляется с большим списком «аудиторов», которые проверяют различные аспекты, такие как SecurityContext подов. Полный список аудиторов есть в репозитории.

Quick start

• Через Homebrew:
brew install kubeaudit

• Через Helm:
helm upgrade — install kubeaudit secureCodeBox/kubeaudit

▪️ Kube-scan
Репозиторий:
https://github.com/octarinesec/kube-scan

С помощью Kube-scan можно получить оценку риска ваших рабочих нагрузок. Kube-scan дает оценку риска от 0 (нет риска) до 10 (высокий риск) для каждой рабочей нагрузки. Kube-scan предназначен для того, чтобы помочь понять, какие из рабочих нагрузок подвергаются наибольшему риску и почему, а также позволяет определить приоритетность обновлений политики безопасности вашего модуля, определений модулей и файлов манифеста, чтобы держать риск под контролем.

Quick start

kubectl apply -f https://raw.githubusercontent.com/octarinesec/kube-scan/master/kube-scan.yaml
kubectl port-forward --namespace kube-scan svc/kube-scan-ui 8080:80

Затем установите для браузера значение http://localhost:8080

▪️ Kubesec
Репозиторий:
https://github.com/controlplaneio/kubesec

Kubesec — это open-source инструмент для оценки риска безопасности рабочих нагрузок Kubernetes на основе их конфигурации YAML.

Kubesec количественно оценивает риск для ресурсов Kubernetes, проверяя файлы конфигурации и файлы манифеста, используемые для развертываний и операций Kubernetes.

Quick start

• Docker Container:
docker.io/kubesec/kubesec:v2 https://hub.docker.com/r/kubesec/kubesec/tags

• Linux/MacOS/Win binary: https://github.com/controlplaneio/kubesec/releases

• Kubernetes Admission Controller: https://github.com/controlplaneio/kubesec-webhook

• Kubectl Plugin: https://github.com/controlplaneio/kubectl-kubesec

Пример использования командной строки:
kubesec scan k8s-deployment.yaml

#open_source
🔥13👍41
Часть 2

▪️ Kube-score
Репозиторий:
https://github.com/zegl/kube-score

Kube-score выполняет статический анализ кода для всех определений объектов Kubernetes. Результатом является список рекомендаций о том, что можно улучшить, чтобы сделать приложение более безопасным и отказоустойчивым.

Онлайн-демо

Quick start

• Docker:
docker pull zegl/kube-score

• Homebrew:
brew install kube-score

• Krew:
kubectl krew install score

Полный список проверок см. в README_CHECKS.md

▪️ KubiScan
Репозиторий:
https://github.com/cyberark/KubiScan

KubiScan сканирует кластеры Kubernetes на наличие рискованных разрешений в модели разрешений управления доступом на основе ролей (RBAC) Kubernetes. KubiScan может сканировать поды, содержащие токены привилегированных сервисных учетных записей, которые можно использовать для атак с целью повышения привилегий или для компрометации кластера.

Quick start

Установка:
- alias kubiscan='python3 https://github.com/cyberark/KubiScan/blob/master/KubiScan.py 

Примеры

• Поиск подов с привилегированной учетной записью:
kubiscan -rp

• Проверка наличия этой учетной записи в списке рискованных:
kubiscan -rs

• Поиск всех правил, которые есть в этой учетной записи службы:
kubiscan -aaes “risky-sa” -ns “default” -k “ServiceAccount”

▪️ Krane
Репозиторий:
https://github.com/Shopify/krane

Krane — это инструмент командной строки, написанный на Ruby. Krane — простой инструмент для статического анализа Kubernetes RBAC. Он выявляет потенциальные риски безопасности в конструкции RBAC K8 и дает предложения по их снижению. Панель управления Krane отображает текущее состояние безопасности RBAC и позволяет перемещаться по определению.

Quick start

Установка:
gem install krane

Затем:
krane deploy <app’s namespace> <kube context>

▪️ Illuminatio
Репозиторий:
https://github.com/inovex/illuminatio

Illuminatio — утилита для автоматического тестирования сетевых политик Kubernetes. Просто запустите illuminatio clean run, и illuminatio просканирует ваш кластер Kubernetes на наличие сетевых политик, создаст соответствующие тестовые примеры и выполнит их, чтобы определить, действуют ли политики.

Quick start

Установка:
pip3 install illuminatio

Или через плагин Kubectl:
-> ln -s $(which illuminatio) /usr/local/bin/kubectl-illuminatio
-> kubectl plugin list — name-only | grep illuminatio

Можно проверять:
illuminatio clean run

▪️ Kubei
Репозиторий:
https://github.com/Erezf-p/kubei

В кластере Kubernetes Kubei используется для анализа непосредственных угроз. Большая часть Kubei написана на языке программирования Go.

Kubei — это инструмент сканирования уязвимостей и сравнительного анализа CIS Docker, который позволяет пользователям получить точную и немедленную оценку рисков своих кластеров Kubernetes.

Quick start

Для развертывания Kubei в кластере:
kubectl apply -f https://raw.githubusercontent.com/Portshift/kubei/master/deploy/kubei.yaml

Затем перенаправьте порты в веб-приложение Kubei:
kubectl -n kubei port-forward $(kubectl -n kubei get pods -lapp=kubei -o jsonpath=’{.items[0].metadata.name}’) 8080

В браузере перейдите по адресу http://localhost:8080/view/ и нажмите «GO», чтобы запустить сканирование.

Чтобы проверить состояние Kubei и ход текущего сканирования, выполните следующую команду:
kubectl -n kubei logs $(kubectl -n kubei get pods -lapp=kubei -o jsonpath=’{.items[0].metadata.name}’)

Обновите страницу (http://localhost:8080/view/), чтобы обновить результаты.

#open_source
🔥5👍4
This media is not supported in your browser
VIEW IN TELEGRAM
Всем DevOps! 🖖

Очень вероятно, что вам знаком этот инструмент (все-таки 38k звездочек на GitHub), но кажется не лишним рассказать про него еще раз :)

diveopen-source инструмент для изучения образа Docker, содержимого слоев и поиска способов уменьшить размер образа Docker/OCI.

Чтобы проанализировать образ Docker, просто запустите dive с тегом / id / digest образа:

dive <your-image-tag>

Или вы можете использовать dive напрямую с помощью команды docker:

alias dive="docker run -ti --rm -v /var/run/docker.sock:/var/run/docker.sock wagoodman/dive"
dive <your-image-tag>

# for example
dive nginx:latest

Или вы можете создать свой образ и сразу приступить к его анализу:

dive build -t <some-tag>

💻 Ссылка на GitHub

#open_source
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥101
Всем DevOps! 🖖

Уверены, что вы знакомы с Kubernetes (его еще называют k8s). У Kubernetes много плюсов, но есть один существенный минус — кластер Kubernetes немного сложен в настройке и требует значительных ресурсов, что затрудняет развертывание на локальной машине для обучения или разработки. В общем, не всегда возможно перейти на полноценный k8s. К счастью, на этот случай есть более легкое решение в виде k3s.

Про него и пойдет речь в сегодняшних постах. Разумеется, потом оформим все части в одну подборку 😉

Из истории k3s

Во время создания Rio (одна из разработок для kubernetes от Rancher Labs), разработчик Даррен Шепард был разочарован, что для тестирования постоянно требовалось запускать новый кластер Kubernetes. Он знал, что это занимает много времени и, если он сможет запускать кластер быстрее, то сможет выделять больше времени на написание кода и новые фичи. Даррен был хорошо знаком с исходным кодом Kubernetes и начал его разбирать, удаляя все ненужные компоненты, чтобы обеспечить быстрый запуск.

В 2019 году компания Rancher Labs объявила о запуске нового open source-проекта k3s, который представлял собой легкий и простой в установке дистрибутив k8s, предназначенный для разработчиков, ищущих способ запуска Kubernetes на платформах с ограниченными ресурсами.

Чтобы адаптировать Kubernetes к слабому железу, Rancher Labs:

• Удалили старый и неиспользуемый код. По словам разработчиков из кода было вырезано порядка 1000 строк;

• Вместо Docker использовали conteinerd;

• Добавили поддержку Kine, в качестве хранилища по умолчанию;

• Удалили драйвера облачных провайдеров.

*️⃣1/4: продолжение следует :)

#лонгрид #open_source
Please open Telegram to view this post
VIEW IN TELEGRAM
9👍7🔥7🌚2
Отличия от k8s

• В k3s нет четкого различия между мастер и воркер нодами. Управление подами происходит на любой ноде, независимо от роли, которую они играют. Таким образом, понятия мастер и воркер нод не применимы к кластеру k3s

• Отсутствуют необязательные компоненты Kubernetes, например, плагины объема хранилища и API-интерфейсы облачных провайдеров.

• Добавлены некоторые элементы, включая containerd, Flannel, CoreDNS, CNI, ingress controller Traefik, локальное хранилище данных, встроенный сервис Load Balancer. Все эти элементы упакованы в один бинарный файл и выполняются в рамках одного процесса. Дистрибутив также поддерживает Helm-charts из коробки.

• K3s не имеет внешних зависимостей. Это означает, что вам не нужно ничего устанавливать, чтобы запустить его.

• Автоматическое развертывание. Оно позволяет развертывать манифесты Kubernetes и Helm-чарты, помещая их в определенный каталог. То есть k3s отслеживает изменения и заботится об их применении без дальнейшего взаимодействия. Просто создайте/обновите свою конфигурацию, и k3s обеспечит актуальность ваших deployments.

*️⃣2/4: продолжение следует :)

#лонгрид #open_source
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍71
Архитектура

На приведенном выше рисунке показана разница между сервером k3s и узлами агента k3s. (Источник здесь)

Если копнуть глубже, то k3s упакован и развернут в виде одного бинарного файла размером приблизительно 60 МБ, представляющего из себя самодостаточный инкапсулированный объект, который запускает почти все компоненты кластера Kubernetes.

На рисунке мы наблюдаем две ноды, на одной из которых работает k3s service, а на второй агент k3s. API server проверяет и настраивает данные для объектов API — например pods, services и т.д. Controller Manager наблюдает за общим состоянием кластера через API-сервер, вносит в него изменения и переводит из текущего состояния в желаемое. Scheduler назначает модули узлам в соответствии с их текущим состоянием, ограничениями и доступными ресурсами. Kubelet как основной агент узла в кластере, работающий на каждой ноде. Kine, где в качестве хранилища по умолчанию используется SQLite. Containerd как исполняемая среда для запуска контейнеров. Связь между агентом и сервером осуществляется через туннельный прокси.

*️⃣3/4: продолжение следует :)

#лонгрид #open_source
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥32
Как можно развернуть k3s

Кластер из одной ноды
(изображение 1)

Этот самый упрощенный метод для разворачивания кластера k3s, который оптимизирован для пограничных устройств. Вы просто запускаете команду установки при помощи команды curl, и она разворачивает полноценный кластер Kubernetes. Но стоит сразу обратить внимание, что данная архитектура развертывания не сможет обеспечить вам отказоустойчивость.

Один кластер с несколькими агентами (изображение 2)

Этот метод также использует один сервер к которому вы можете добавить агентов в кластер. Агенты безопасно подключаются с помощью токена, который сервер создает при запуске. В этой конфигурации каждый узел агента регистрируется на одном и том же узле сервера. Пользователь k3s может управлять ресурсами Kubernetes, вызывая API k3s на узле сервера.

Высокодоступный сервер k3s с внешней БД (изображение 3)

Этот метод можно использовать, если вам важно настроить отказоустойчивый кластер. Данный кластер k3s состоит из:

• Двух или более серверных узлов, которые будут обслуживать API Kubernetes и запускать другие службы плоскости управления.

• Внешнего хранилища данных (вместо встроенного хранилища данных SQLite, которое используется в конфигурациях с одним сервером по умолчанию).

Fun facts про k3s

• Более 1 миллиона загрузок. С февраля 2019 года k3s скачали более 1 миллиона раз, в среднем 20 000 установок в неделю.

• На момент 2023 года имеет на гитхабе более 24 тысяч звезд, что говорит о заинтересованности сообщества в данном проекте.

• Не существует ни полной формы названия k3s, ни официального произношения. Разработчики хотели, чтобы установка Kubernetes была вдвое меньше с точки зрения занимаемой памяти. А так как Kubernetes состоит из 10 букв, которое сообщество стилизовали под k8s, ребята из Rancher Labs просто уменьшили вдвое количество букв в Kubernetes и стилизовали под k3s.

*️⃣4/4

#лонгрид #open_source
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥42
k3s: легковесный дистрибутив Kubernetes

Часть 1: из истории k3s

Часть 2: отличия от k8s

Часть 3: архитектура

Часть 4: как можно развернуть k3s и Fun facts

▪️ Ссылка на репозиторий k3s

▪️ Ссылка на документацию k3s

▪️ Полезная ссылка из комментариев: «k3d — легкая оболочка для запуска k3s в докере»

#лонгрид #open_source
👍84🔥3
+1 полезный open-source инструмент — KubeLinter 💻

Он анализирует YAML-файлы Kubernetes и Helm-чарты и проверяет их на соответствие различным best practices, уделяя особое внимание готовности к работе и безопасности.

Некоторые распространенные проблемы, которые выявляет KubeLinter — запуск контейнеров от имени non-root user, соблюдение минимальных привилегий и хранение конфиденциальной информации только в секретах.

Лицензия Apache License 2.0, 2.5k звездочек на GitHub ⭐️

P.S. Статьи про работу с этим инструментом:

«Ensuring YAML best practices using KubeLinter»

«Analyze Kubernetes files for errors with KubeLinter»

«How to add a new check in KubeLinter?»

«Extending kube-linter To Build A Custom Template»

#open_source
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13👍4
This media is not supported in your browser
VIEW IN TELEGRAM
Мы уже упоминали ( и не раз) этого автора и его обучающие материалы, теперь хотим обратить внимание на одну полезную open-source разработку.

Да, есть вероятность, что вы про нее слышали, но будет не лишним упомянуть еще раз.

k'exp — Kubernetes Explorer

k'exp отражает состояние вашего кластера в режиме реального времени, показывает «связанные» объекты и может показывать информацию по конкретным объектам.

Здесь — плейлист с демо-видео :)

💻 Репозиторий инструмента

P.S. Другие open-source проекты автора можно найти вот здесь.

#open_source
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥32
Инструменты

nxs-universal-chart

Универсальный Helm-чарт. Создан для установки любых приложений в Kubernetes / OpenShift и другие оркестраторы, совместимые с собственным API Kubernetes. Apache 2.0 license

helmfile

По сути это обёртка для Helm, которая позволяет в одном месте описывать множество Helm релизов, параметризовать их чарты для нескольких окружений, а также задавать порядок их деплоя.

helm-diff

Плагин Helm, который показывает разницу, объясняющую, что изменится при обновлении Helm. По сути, этот инструмент генерирует разницу между последней развернутой версией выпуска и версией helm upgrade --debug --dry-run

helm-unittest

Плагин, позволяющий писать тесты для Helm-чартов на чистом Yaml, отображать их локально и ничего не добавлять в кластер.

2/2

#лонгрид #open_source
👍23🗿1
This media is not supported in your browser
VIEW IN TELEGRAM
Helm Diff Plugin — плагин Helm, который показывает превью изменений

Команды:

release — shows diff between release's manifests

revision — shows diff between revision's manifests

rollback — shows a diff explaining what a helm rollback could perform

upgrade — shows a diff explaining what a helm upgrade would change

2.3k звездочек! ⭐️

💻 Репозиторий на GitHub

#open_source
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍5👌2
Возможно, вы знакомы с nxs-backupopen-source инструментом для бэкапов. Про него были статьи на Хабре эта и эта.

В общем, если вы им пользуетесь или хотите начать пользоваться, то появился отдельный канал про nxs-backup. В нем будут анонсы релизов, новых функций, исправлений ошибок и информация про мероприятия.

Еще есть чат — там вам ответят не только другие пользователи, но и авторы nxs-backup.

P.S. Всем DevOps и хороших выходных! 🔥

#open_source
🔥12👍5