Это текст Александра Беспалова, но его в Телеграме нет, поэтому просто процитирую тут. Это второй репост за всю историю канала, но очень уж понравилась
Поговорил с чатом о Канте, получилось забавно.
Одна из основных мыслей Канта, которая потом поломала всю философию была такая, что "априорные категории (причинность, время, пространство,...) создают возможность эмпирического познания". Т.е. знание науки это не отражение (иногда ошибочное) природы, как считали ранее. Это результат наложения каких-то "встроенных (в голову) схем" на опыт жизни, для получения какого-то вторичного продукта, который называется — "мир-для-нас". А "мир-как-есть" для нас недоступен, в принципе.
Дальнейшее развитие философии происходило в обсуждении, насколько вообще ок так делать и можно ли с этим всем хоть что-то познать вообще? Что создало для философии XX века ощущение полной шизы и бессмысленного копания в смыслах слов.
Но это, в наше время, банальное наблюдение, которое все и так знают, более ли менее (если не кондовые сциентисты).
И "истина" в этом смысле это просто более устойчивое соответствие модели эксперименту (запомните это определение слова). Под устойчивостью понимается то, что соответствие не рушится от изменения среды.
Допустим, мы считаем, что от тяжести вещи зависит скорость падения. Это наша модель. Тут приходит Галилей и начинает по наклонной плоскости катить шарики разного веса и они всегда разгоняются более ли менее одинаково. Модель не устойчива к изменению "среды". А вот модель, где ускорение свободного падения не зависит от массы, устойчива к наблюдениям кидания шариков разной массы с разным ускорением, потому что можно легко туда добавить сопротивление воздуха и получить разные разгоны на выходе.
Но это тоже довольно обычно, как мне показалось.
А вот что меня зацепило, это то, что из этого следует, что "истина" это не универсальная цель или метафизический эталон, а часть противоречивого эволюционного механизма выживания.
Если модель более устойчива к изменению контекста, то общество, которое ей обладает, способно приспособиться к более широкому спектру возможных сред обитания (относительно обществ, которые не обладают "истиной").
При этом (как положено внутри эволюционных механизмов), внутри хорошо структурированного общества "стремление к истине" это не самая удачная личная стратегия выживания.
Хорошо структурированное общество создает внутри себя устойчивый контекст, в котором начинают эффективно работать простые эвристики (чувствительные к любым изменениям контекста). Они гораздо менее энергозатратные, чем "стремление к истине". И на личном уровне, внутри структурированного общества, стремление к истине (как модели устойчивой к изменениям) может быть просто вредно.
Поэтому в обществе организуются пласты создателей и потребителей инфоцыганского и сходного контента. Этот пласт перераспределяет ресурсы внутри общества, но НЕ делает общество более адаптивным к возможным изменениям среды. Если общество начинает состоять только из таких людей, оно рушится, потому что не способно выдержать никаких изменений.
Но в этом и хитрость эволюции. Выживают только те структурированные общества, где хоть как-то это (на личном уровне не эффективное) стремление к "истине" проявлено. Оно позволяет протащить общество через изменения за счет более устойчивых моделей (само)управления.
И вот мы приходим через тысячи лет эволюции к состоянию, где "истина" сакрализируется, потому что (на личном уровне и в контексте общества) вообще непонятно нахрена это все нужно. Отсюда метафизическое представление Канта об истине как об имманентном свойстве суждения (как бы это часть способности мыслить, в принципе. Без нее нет смысла говорить об осмысленной деятельности). Но ларчик (возможно) открывается проще. Все общества, где "истина" это не ценность хотя бы для некоторой части людей, умерли. И все общества, где она обесценится, исчезнут.
#life
• Если помните, то несколько месяцев назад я делился с вами очень крутым материалом, где подробно описан опыт автора по ручному развертыванию 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