DevOps Star (Звезда Девопса)
2.08K subscribers
190 photos
166 videos
14 files
231 links
Devops, Linux, SRE, Kubernetes, Сисадмин, Девопс, Python, JS, Java, Git, IT канал, программирование, безопасность, ИТ, Sysadmin

По всем вопросам @evgenycarter
加入频道
Зачем мы сделали собственный контроллер для копирования секретов в Kubernetes

Сегодня хочу поделиться нашей внутренней разработкой — 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
👍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
👍2
Шпаргалка по CLI-командам Kubernetes Kubectl

👉 @devops_star
Kubernetes-Kubectl-CLI-Cheat-Sheet.pdf
14 MB
Шпаргалка по CLI-командам Kubernetes Kubectl PDF

👉 @devops_star
👍5
Шпаргалка по kubectl

Автодополнение ввода для 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
👍3
Лекторий по SRE

Примеры сбоев
Что такое SRE
Цели мониторинга, логи и метрики
Детектирование проблем до и во время сбоя
SLA, SLO, SLI
Причины сбоев
Устранение сбоев
Постмортемы
Приемы уменьшения количества сбоев
Устойчивый к сбою код

источник

👉 @devops_star
👍6
Docker справочник cli

docker images — показать все локальные образы docker
docker 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
Как работает Docker

👉 @devops_star
👍4
Media is too big
VIEW IN TELEGRAM
Нюансы Kubernetes

Контейнеризация и, в частности, Kubernetes – стандарт для запуска приложений в бою. Это несложно, но есть нюансы. Вместе с Андреем Новиковым из Evil Martians обсуждаем, что нужно сделать, чтобы приложение работало быстро и надежно. Смотрим, как работают requests и limits на ресурсы, чем должны отличаться liveness и readiness пробы и на что следует обращать внимание в мониторинге.

👉 @devops_star
👍42