Один из самых удобных способов записать данные это использование готовых форматов, такие как JSON или YAML.
Из плюсов такого подхода стоит отметить вот что:
🔸 готовый, повсеместно используемый и поддерживаемый формат
🔸 простой и понятный файл, удобочитаемый для человека
🔸 можно легко редактировать в любом текстовом редакторе без специальных программ и библиотек
Но есть и минусы
🔹 затраты времени при записи файла (кодирование данных в нужный формат строки)
🔹 затраты времени при чтении файла (декодирование данных в Python объекты)
🔹 размер файла увеличивается из-за разметки данных (скобки, запятые, переносы, отступы...)
🔹 перед записью все данные должны быть помещены в память в полном объёме (не всегда)
🔹 при чтении необходимо считать весь файл в память и только потом декодировать данные
Если нужно писать немного данных в несколько файлов, то затраты по времени не ощутимы. Обычно это файлы конфига или какие-либо метаданные. Это отличный вариант под такие задачи.
Есть и другой поход к записи файлов - это бинарные файлы. Используется, когда данных достаточно много и никто их не собирается читать глазками😳.
🔸 очень быстрая запись
🔸 чтение значительно быстрей чем JSON, YAML итд
🔸 размер файла значительно меньше, так как нет разметки
🔸 можно записывать данные по мере поступления не загружая всё в память
🔸 можно извлечь любую часть данных независимо
Из минусов
🔹 нужно определить свой формат записи данных (если не используете готовую спецификацию определённого формата)
🔹 не получится открыть файл и визуально понять что там записано, а для чтения файла потребуется знать его спецификацию.
🔹 не так-то просто создать такой файл без специальной библиотеки
В таком виде удобно записывать большой массив любых однородных данных. Например, мониторинг валютной биржи или кэшированная анимация 3D геометрии.
(Это не означает что нельзя записать данные разного типа, просто это будет не так удобно)
Представьте себе JPG-картинку. По сути это немного мета-информации и большой массив пикселей. Тоже самое со звуком или видео файлом. Поэтому, если вы попробуете открыть картинку в текстовом редакторе вы увидите что-то вроде такого
f15d cd29 a564 4578 ...
09e2 9bc4 a696 1253 ...
84e9 4de1 3b23 c24a ...
2534 5161 28e0 709d ...
...
Это и есть записанные байтики. И для их чтения требуется определённый софт который знает что с ними делать. Под каждый тип файла.
К чему это я? Читайте в следующем посте...
#tricks#basic
• Если помните, то несколько месяцев назад я делился с вами очень крутым материалом, где подробно описан опыт автора по ручному развертыванию Kubernetes без использования автоматизированных инструментов. Так вот, есть еще одна статья, не менее интересная и полезная. На этот раз автор описывает настройки аудита в Kubernetes, его возможности и примеры конфигураций, которые помогут вам сформировать эффективную политику аудита для вашего кластера.
➡Что такое аудит;
➡Политика аудита;
➡Параметры фильтрации;
➡Уровни логирования;
➡Стадии omitStages;
➡Подавление системного шума;
➡Фильтрация по пользователям;
➡Защита чувствительных данных;
➡Детализация для важных API;
➡Настройка API-сервера;
➡Заключение.
#Kubernetes
• Популярность Kubernetes растет, порог входа снижается, но вопросам безопасности порой оказывают недостаточное внимание.
•KubeHound - это как Bloodhound, но только для Kubernetes. Тулза предназначена для построения графов и вычисления путей атак для компрометации кластера. Принцип работы следующий:
➡KubeHound анализирует Kubernetes-кластер;
➡Собирает данные о ролях, привязках, сервисных аккаунтах, настройках Pod и сетевых политиках;
➡Формирует граф атак, определяя цепочки эксплуатации, показывая найденные уязвимости и их комбинации.
➡Выводит отчет, выделяя риски и рекомендациями по исправлению.
• Куча дополнительной информации по использованию KubeHound можно найти по ссылкам ниже:
➡️https://github.com/DataDog/KubeHound
➡️https://kubehound.io
• Дополнительно: подборка бесплатных инструментов с открытым исходным кодом для обеспечения безопасности Kubernetes.
#Kubernetes
👩💻 Kubernetes The Hard Way.
• Автор этого гайда работал над ним около двух лет, осуществил тысячи перезапусков и пересобрал сотни кластеров — всё это вылилось в одну, но очень насыщенную статью. Kubernetes вручную, от и до, без kubeadm и прочих поблажек.
- Удобные alias’ы, функции и обёртки;
- Десятки скриптов, которые реально работают в бою;
- Важные моменты, о которых молчат в туториалах.
➡Введение;
➡Почему «The Hard Way»;
➡Архитектура развертывания;
➡Создание инфраструктуры;
➡Базовая настройка узлов;
➡Загрузка модулей ядра;
➡Настройка параметров sysctl;
➡Установка компонентов;
➡Настройка компонентов;
➡Проверка готовности компонентов;
➡Работа с сертификатами;
➡Создание корневых сертификатов;
➡Создание сертификатов приложений;
➡Создание ключа подписи ServiceAccount;
➡Создание всех сертификатов;
➡Создание конфигураций kubeconfig;
➡Создание всех kubeconfig;
➡Проверка блока сертификатов;
➡Создание static pod-ов управляющего контура;
➡Создание всех static pod-ов управляющего контура;
➡Создание static pod-ов ETCD кластера;
➡Запуск службы Kubelet;
➡Проверка состояния кластера;
➡Настройка ролевой модели;
➡Загрузка конфигурации в кластер;
➡Загрузка корневых сертификатов в кластер;
➡Маркировка и ограничение узлов.
#Kubernetes
• Недавно на хабре был обновлен очень объемный гайд по установке Kubernetes, который включает в себя очень много полезной информации для новичков. Стоит отметить, что Kubernetes — это большая и довольно сложная тема, но если вы изучите это пошаговое руководство, то у вас появился работающий стенд для экспериментов, что послужит отличным началом для изучения k8s: https://habr.com/ru/articles/725640
• Обратите внимание, что руководство содержит много дополнительного материала:
➡Основы Kubernetes;
➡Руководство начинающим для понимания основных концепций Kubernetes;
➡Различия между Docker, containerd, CRI-O и runc;
➡Визуальное руководство по диагностике неисправностей в Kubernetes;
➡Записки о containerd;
➡Зачем нужен контейнер pause в Kubernetes;
➡Как я клонировал Томми Версетти, или запускаем GUI/GPU приложения в Kubernetes;
➡Отказоустойчивый кластер с балансировкой нагрузки с помощью keepalived.
• Ну и вот еще очень содержательный репозиторий, который содержит сотни инструментов для работы с Kubernetes и контейнерами: Awesome Open Source K8s And Container Tools.
#Kubernetes
👩💻 Руководство по современным сетевым политикам Kubernetes.
• Сетевые политики — основополагающий аспект защиты кластеров Kubernetes. Политики L4 обеспечивают базовый контроль над трафиком на основе IP-адресов и портов, в то время как политики L7 позволяют гранулярно контролировать трафик на уровне приложений с помощью надёжной криптографической идентификации. Комбинируя оба типа политик и используя service mesh, можно реализовать модель «нулевого доверия», отвечающую современным вызовам в области безопасности.
• Это руководство для тех, кто хочет узнать больше об управлении сетевым трафиком Kubernetes на основе политик. Вы узнаете о разных типах политик и о том, почему они важны, о плюсах и минусах каждой из них и о том, как их определять и когда следует комбинировать.
➡Первоисточник || Источник.
#Kubernetes
👩💻 Техническая история Kubernetes: секреты создателя.
• Эта история от первого ведущего архитектора проекта, Брайана Гранта, который постил в Twitter серию тредов о технической истории проекта. Он рассказал о появлении разных фичей в K8s и логике, которая стояла за принятием отдельных решений.
• В честь юбилея оркестратора Брайан собрал все твиты в одну статью. Это её перевод, из которого вы узнаете, как появились контроллеры рабочих нагрузок, декларативная модель ресурсов, descheduler и многое другое:
➡️https://habr.com/ru/post/851176/
#Kubernetes
👩💻 Инструменты для обеспечения безопасности Kubernetes.
• ПО для обеспечения безопасности Kubernetes… их так много, и у каждого свои цели, область применения и лицензии... Однако, хочу поведать Вам о некоторых интересных решениях с открытым исходным кодом, которые полностью бесплатны:
• Trivy — простой, но мощный сканер уязвимостей для контейнеров, легко интегрируемый в CI/CD-пайплайн. Его примечательная особенность — простота установки и работы: приложение состоит из единственного бинарника и не требует установки базы данных или дополнительных библиотек. Обратная сторона простоты Trivy состоит в том, что придется разбираться, как парсить и пересылать результаты в формате JSON, чтобы ими могли воспользоваться другие инструменты безопасности Kubernetes.
• Portieris — это admission controller для Kubernetes; применяется для принудительных проверок на доверие к контенту. Portieris использует сервер Notary в качестве источника истины для подтверждения доверенных и подписанных артефактов (то есть одобренных контейнерных образов). При создании или изменении рабочей нагрузки в Kubernetes Portieris загружает информацию о подписи и политику доверия к контенту для запрошенных образов контейнеров и при необходимости на лету вносит изменения в JSON-объект API для запуска подписанных версий этих образов.
• Kube-bench — приложение на Go, проверяющее, безопасно ли развернут Kubernetes. Ищет небезопасные параметры конфигурации среди компонентов кластера (etcd, API, controller manager и т.д.), сомнительные права на доступ к файлам, незащищенные учетные записи или открытые порты, квоты ресурсов, настройки ограничения числа обращений к API для защиты от DoS-атак и т.п.
• Kube-hunter — Kube-hunter «охотится» на потенциальные уязвимости (вроде удаленного выполнения кода или раскрытия данных) в кластерах Kubernetes. Kube-hunter можно запускать как удаленный сканер — в этом случае он оценит кластер с точки зрения стороннего злоумышленника — или как pod внутри кластера. Отличительной особенностью Kube-hunter'а является режим «активной охоты», во время которого он не только сообщает о проблемах, но и пытается воспользоваться уязвимостями, обнаруженными в целевом кластере, которые потенциально могут нанести вред его работе. Так что пользуйтесь с осторожностью!
• Kubeaudit — это консольный инструмент, изначально разработанный в Shopify для аудита конфигурации Kubernetes на предмет наличия различных проблем в области безопасности. Например, он помогает выявить контейнеры, работающие без ограничений, с правами суперпользователя, злоупотребляющие привилегиями или использующие ServiceAccount по умолчанию. У Kubeaudit есть и другие интересные возможности. К примеру, он умеет анализировать локальные файлы YAML, выявляя недостатки в конфигурации, способные привести к проблемам с безопасностью, и автоматически исправлять их.
• Kyverno — движок политик безопасности Kubernetes с открытым исходным кодом, который помогает вам определять политики с помощью простых манифестов Kubernetes. Он может проверять, изменять и генерировать ресурсы Kubernetes. Таким образом, это может позволить организациям определять и применять политики так, чтобы разработчики и администраторы придерживались определенного стандарта.
#Kubernetes
👩💻 Play with Kubernetes — сервис для практического знакомства с K8s.
• PWK полностью повторяет идею (и даже интерфейс) своего «прародителя» Play with Docker (о котором я упоминал вчера): его основной сайт — это так называемая «игровая площадка» (playground), предоставляющая в веб-браузере доступ к виртуальной Linux-машине для возможности проведения экспериментов с кластерами Kubernetes. По сути это доступный бесплатно SaaS-аналог Minikube со своими удобствами (работа прямо в браузере) и ограничениями
• Предлагаемая в онлайн-сервисе лабораторная работа ориентирована на начинающих и посвящена основным концепциям и возможностям Kubernetes:
- Что вообще позволяет делать эта система: запуск контейнеров, балансировка нагрузки, выкатывание новых версий образов, автомасштабирование…;
- Архитектура Kubernetes;
- Ресурсы Kubernetes: узлы, поды, сервисы, пространства имён, секреты;
- Декларативный подход;
- Сетевая модель Kubernetes;
и т.п.
• Выглядит же прохождение лабораторной работы аналогично тому, как всё было в Play with Docker: слева у вас есть документ-инструкция (в том числе и команды для ввода), а справа — терминал (точнее, их два — для двух узлов Kubernetes), позволяющий «поиграть» в администратора K8s-кластера и видеть, что и как происходит на самом деле. Последнему, безусловно, способствует возможность выполнять произвольные уточняющие команды на любых этапах выполнения работы.
➡️https://labs.play-with-k8s.com
#Kubernetes
👩💻Kubenomicon.
• Поделюсь с Вами очень интересным проектом, который описывает методы атак на Kubernetes. Проект сырой, но постоянно дополняется необходимой информацией. Особенно будет полезно изучить начинающим специалистам: https://kubenomicon.com/
#Kubernetes
👩💻 Top 4 Kubernetes Service Types in one diagram.
• ClusterIP — открывает доступ к сервису по внутреннему IP-адресу в кластере. Этот тип делает сервис доступным только внутри кластера;
• NodePort — открывает сервис на том же порту каждого выбранного узла в кластере с помощью NAT. Делает сервис доступным вне кластера через <NodeIP>:<NodePort>. Является надмножеством ClusterIP;
• LoadBalancer — создает внешний балансировщик нагрузки в текущем облаке (если это поддерживается) и назначает фиксированный внешний IP-адрес для сервиса. Является надмножеством NodePort;
• ExternalName — открывает доступ к сервису по содержимому поля externalName (например, foo.bar.example.com), возвращая запись CNAME с его значением. При этом прокси не используется. Для этого типа требуется версия kube-dns 1.7+ или CoreDNS 0.0.8+.
➡ Подробнее тут: https://kubernetes.io/ru/
#Kubernetes