Зачем мы сделали собственный контроллер для копирования секретов в Kubernetes
Сегодня хочу поделиться нашей внутренней разработкой — Kubernetes-контроллером mirrors. Мы создали его внутри нашего DevOps-отдела для копирования Kubernetes-секретов между неймспейсами кластера. В итоге mirrors превратился в универсальный инструмент синхронизации данных из разных источников.
В статье расскажу, с чего все начиналось и к чему мы в итоге пришли. Возможно, статья вдохновит вас на написание собственного контроллера под ваши задачи.
👉 @devops_star
Сегодня хочу поделиться нашей внутренней разработкой — Kubernetes-контроллером mirrors. Мы создали его внутри нашего DevOps-отдела для копирования Kubernetes-секретов между неймспейсами кластера. В итоге mirrors превратился в универсальный инструмент синхронизации данных из разных источников.
В статье расскажу, с чего все начиналось и к чему мы в итоге пришли. Возможно, статья вдохновит вас на написание собственного контроллера под ваши задачи.
👉 @devops_star
👍3
11 советов по повышению безопасности контейнеров 🔐
1 🔒 Используйте официальные образы
Для минимизации уязвимостей всегда используйте официальные, проверенные образы контейнеров из надежных источников. Проверяйте подписи образов, чтобы убедиться в их подлинности.
2 📦 Регулярно обновляйте образы
Поддерживайте образы контейнеров в актуальном состоянии с помощью последних исправлений и версий, чтобы устранить известные уязвимости. По возможности автоматизируйте обновления.
3 🔍 Сканирование образов на наличие уязвимостей
Используйте такие инструменты, как Clair, Trivy или Anchore, для проверки образов контейнеров на уязвимости перед развертыванием. Сделайте это частью вашего CI/CD pipeline.
4 📜 Следуйте принципу наименьших привилегий
Запускайте контейнеры с минимально необходимыми привилегиями. Избегайте запуска контейнеров от имени root и используйте пространства имен пользователей для разграничения привилегий.
5 🛠️ Используйте средства обеспечения безопасности на этапе выполнения
Используйте инструменты безопасности во время выполнения, такие как Falco или Sysdig Secure, для мониторинга и защиты запущенных контейнеров от угроз и аномалий.
6 🔐 Внедрите сегментацию сети
Изолируйте контейнерные сети, чтобы ограничить связь между контейнерами. Используйте инструменты вроде сетевых политик Kubernetes для обеспечения сегментации.
7 📋 Ограничение использования ресурсов
Ограничьте ресурсы (процессор, память), которые могут использовать контейнеры, чтобы предотвратить атаки на исчерпание ресурсов. Используйте квоты и лимиты ресурсов Kubernetes.
8 🛡️ Включение контекстов безопасности
Определите контексты безопасности в платформе оркестровки контейнеров для контроля доступа и разрешений. Используйте PodSecurityPolicies в Kubernetes.
9 🧩 Используйте решения для управления секретами
Безопасное управление и хранение конфиденциальных данных, таких как пароли и ключи API, с помощью таких инструментов, как HashiCorp Vault, AWS Secrets Manager или Kubernetes Secrets.
10 🌐 Регулярные аудиты и проверки на соответствие требованиям
Регулярно проводите аудиты безопасности и проверки на соответствие требованиям, чтобы обеспечить соблюдение политик и стандартов безопасности. Автоматизируйте аудиты с помощью таких инструментов, как kube-bench.
11 🔄 Постоянно обучайте свою команду
Постоянно информируйте свою команду о последних практиках и тенденциях в области безопасности. Регулярно проводите тренинги и делитесь ресурсами.
👉 @devops_star
1 🔒 Используйте официальные образы
Для минимизации уязвимостей всегда используйте официальные, проверенные образы контейнеров из надежных источников. Проверяйте подписи образов, чтобы убедиться в их подлинности.
2 📦 Регулярно обновляйте образы
Поддерживайте образы контейнеров в актуальном состоянии с помощью последних исправлений и версий, чтобы устранить известные уязвимости. По возможности автоматизируйте обновления.
3 🔍 Сканирование образов на наличие уязвимостей
Используйте такие инструменты, как Clair, Trivy или Anchore, для проверки образов контейнеров на уязвимости перед развертыванием. Сделайте это частью вашего CI/CD pipeline.
4 📜 Следуйте принципу наименьших привилегий
Запускайте контейнеры с минимально необходимыми привилегиями. Избегайте запуска контейнеров от имени root и используйте пространства имен пользователей для разграничения привилегий.
5 🛠️ Используйте средства обеспечения безопасности на этапе выполнения
Используйте инструменты безопасности во время выполнения, такие как Falco или Sysdig Secure, для мониторинга и защиты запущенных контейнеров от угроз и аномалий.
6 🔐 Внедрите сегментацию сети
Изолируйте контейнерные сети, чтобы ограничить связь между контейнерами. Используйте инструменты вроде сетевых политик Kubernetes для обеспечения сегментации.
7 📋 Ограничение использования ресурсов
Ограничьте ресурсы (процессор, память), которые могут использовать контейнеры, чтобы предотвратить атаки на исчерпание ресурсов. Используйте квоты и лимиты ресурсов Kubernetes.
8 🛡️ Включение контекстов безопасности
Определите контексты безопасности в платформе оркестровки контейнеров для контроля доступа и разрешений. Используйте PodSecurityPolicies в Kubernetes.
9 🧩 Используйте решения для управления секретами
Безопасное управление и хранение конфиденциальных данных, таких как пароли и ключи API, с помощью таких инструментов, как HashiCorp Vault, AWS Secrets Manager или Kubernetes Secrets.
10 🌐 Регулярные аудиты и проверки на соответствие требованиям
Регулярно проводите аудиты безопасности и проверки на соответствие требованиям, чтобы обеспечить соблюдение политик и стандартов безопасности. Автоматизируйте аудиты с помощью таких инструментов, как kube-bench.
11 🔄 Постоянно обучайте свою команду
Постоянно информируйте свою команду о последних практиках и тенденциях в области безопасности. Регулярно проводите тренинги и делитесь ресурсами.
👉 @devops_star
👍6
This media is not supported in your browser
VIEW IN TELEGRAM
Snips.sh ✂️
Безпарольный, анонимный pastebin на основе SSH с удобным текстовым и веб-интерфейсом
Фичи:
⚡ Нулевая установка: используйте с любого устройства, где установлен SSH-клиент
🌐 Веб-интерфейс: код с подсветкой синтаксиса, короткие ссылки и поддержка рендеринга Markdown
💻 Текстовый интерфейс: управление и просмотр сниппетов прямо из терминала
🔑 Без паролей: всё, что вам нужно — это SSH-ключ
🕵️ Анонимность: без регистрации, без логинов, без необходимости указывать email
⏰ URL с временем жизни: ограниченный по времени доступ для безопасного обмена
📦 Возможность самостоятельного хостинга: контейнеризированный и малозатратный в плане ресурсов
🧠 Определение языка с помощью ИИ: интеллектуальное распознавание исходного кода
https://github.com/robherley/snips.sh
👉 @devops_star
Безпарольный, анонимный pastebin на основе SSH с удобным текстовым и веб-интерфейсом
Фичи:
⚡ Нулевая установка: используйте с любого устройства, где установлен SSH-клиент
🌐 Веб-интерфейс: код с подсветкой синтаксиса, короткие ссылки и поддержка рендеринга Markdown
💻 Текстовый интерфейс: управление и просмотр сниппетов прямо из терминала
🔑 Без паролей: всё, что вам нужно — это SSH-ключ
🕵️ Анонимность: без регистрации, без логинов, без необходимости указывать email
⏰ URL с временем жизни: ограниченный по времени доступ для безопасного обмена
📦 Возможность самостоятельного хостинга: контейнеризированный и малозатратный в плане ресурсов
🧠 Определение языка с помощью ИИ: интеллектуальное распознавание исходного кода
https://github.com/robherley/snips.sh
👉 @devops_star
👍2
Шпаргалка по kubectl
Автодополнение ввода для Kubectl
Вы также можете использовать короткий псевдоним для kubectl, который можно интегрировать с автодополнениями:
https://kubernetes.io/ru/docs/reference/kubectl/cheatsheet/
👉 @devops_star
Автодополнение ввода для Kubectl
source <(kubectl completion bash) # настройка автодополнения в текущую сессию bash, предварительно должен быть установлен пакет bash-completion .
echo "source <(kubectl completion bash)" >> ~/.bashrc # добавление автодополнения autocomplete постоянно в командную оболочку bash.
Вы также можете использовать короткий псевдоним для kubectl, который можно интегрировать с автодополнениями:
alias k=kubectl
complete -F __start_kubectl k
https://kubernetes.io/ru/docs/reference/kubectl/cheatsheet/
👉 @devops_star
Kubernetes
Шпаргалка по kubectl
Смотрите также: обзор Kubectl и руководство по JsonPath.
Эта команда представляет собой обзор команды kubectl.
kubectl - Шпаргалка Автодополнение ввода для Kubectl BASH source <(kubectl completion bash) # настройка автодополнения в текущую сессию bash, предварительно…
Эта команда представляет собой обзор команды kubectl.
kubectl - Шпаргалка Автодополнение ввода для Kubectl BASH source <(kubectl completion bash) # настройка автодополнения в текущую сессию bash, предварительно…
👍3
Вопросы и ответы на собеседовании по Git для DevOps
https://medium.com/@tech.manojk10/git-interview-questions-and-answers-for-devops-5d0b971f8fbb
👉 @devops_star
https://medium.com/@tech.manojk10/git-interview-questions-and-answers-for-devops-5d0b971f8fbb
👉 @devops_star
Medium
Git Interview Questions and answers for DevOps
Helpful DevOps Interview Questions and answers for GIT
👍4
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Лекторий по SRE
Примеры сбоев
Что такое SRE
Цели мониторинга, логи и метрики
Детектирование проблем до и во время сбоя
SLA, SLO, SLI
Причины сбоев
Устранение сбоев
Постмортемы
Приемы уменьшения количества сбоев
Устойчивый к сбою код
источник
👉 @devops_star
Примеры сбоев
Что такое SRE
Цели мониторинга, логи и метрики
Детектирование проблем до и во время сбоя
SLA, SLO, SLI
Причины сбоев
Устранение сбоев
Постмортемы
Приемы уменьшения количества сбоев
Устойчивый к сбою код
источник
👉 @devops_star
👍6
Docker справочник cli
👉 @devops_star
docker images
— показать все локальные образы dockerdocker rmi [-f] <id|label>
— удалить образ c локальной машиныdocker rmi -f $(docker images -q)
— удалить все докер образыdocker build [-t <label>] <path>
— построить образ на основе докерфайлаdocker run [-dt] [--name <name>] [-v <path:path>] [-p <port:port>] [--...] <id|label> [cmd]
— запустить образ в контейнере c cmd-командой (необязательно)-d
— в фоновом режиме-t
— прикрепляет к контейнеру терминал-i
— перенаправляет ввод/вывод на текущий терминал--name
— явно указать имя контейнера, по которому можно будет обращаться к нему (иначе будет сгенерировано рэндомно)-p <external_port:internal_port>
— проброс портов-v --volume <external_path:internal_path>
— монтирует папки хоста в контейнер--rm
— удаляет контейнер после завершения работы--memory <n>
— позволяет указать количество ОЗУ, доступной контейнеру-P
— пробрасывает все порты контейнера в хост-систему--expose
— позволяет пробросить несколько портов из контейнера в хост-систему-e <"FOO=bar">
— добавляет переменную окружения в контейнерdocker ps [-a]
— показать все запущенные [существующие] докер контейнеры`docker ps -q | xargs docker stats —no-stream`
— посмотреть ресурсы, потребляемые запущенными контейнерамиdocker stop <name>
— останавливает указанный образ (с сохранением данных)docker kill <name>
— то же самое без сохранения данныхdocker rm <name>
— удаляет указанный контейнерdocker attach <name>
— подключиться к выбранному докер-контейнеруdocker exec [-ti] <name> <cmd>
— выполняет команду в докер-контейнереdocker push <imagename>
— отправить образ в удаленный реестрdocker ps -q | xargs docker stats --no-stream
— посмотреть нагрузку на процессор и память каждого из контейнеровdocker stats
— похожа на предыдущую команду, но более короткаяdocker info --format '{{.LoggingDriver}}'
— посмотреть используемый по умолчанию лог драйвер (json-file)docker logs [<container_name>] [-f --tail 100]
— показать логи [конкретного контейнера] в терминал [последние 100 строк]docker inspect --format='{{.LogPath}}' <containername>
-показать, где хранятся логи для конкретного контейнера👉 @devops_star
👍5
Media is too big
VIEW IN TELEGRAM
Нюансы Kubernetes
Контейнеризация и, в частности, Kubernetes – стандарт для запуска приложений в бою. Это несложно, но есть нюансы. Вместе с Андреем Новиковым из Evil Martians обсуждаем, что нужно сделать, чтобы приложение работало быстро и надежно. Смотрим, как работают requests и limits на ресурсы, чем должны отличаться liveness и readiness пробы и на что следует обращать внимание в мониторинге.
👉 @devops_star
Контейнеризация и, в частности, Kubernetes – стандарт для запуска приложений в бою. Это несложно, но есть нюансы. Вместе с Андреем Новиковым из Evil Martians обсуждаем, что нужно сделать, чтобы приложение работало быстро и надежно. Смотрим, как работают requests и limits на ресурсы, чем должны отличаться liveness и readiness пробы и на что следует обращать внимание в мониторинге.
👉 @devops_star
👍4❤2