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

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

По вопросам — Даше @marsycored
Download Telegram
👩‍💻 Привет! Сегодня — немного best practices по оптимизации производительности Dockerfile.

1. Очищайте промежуточные файлы и удаляйте зависимости сборок после того, как они станут не нужны.
RUN apt-get update && apt-get install -y \
build-essential \
&& apt-get clean && rm -rf /var/lib/apt/lists/*


2. Используйте файл .dockerignore. С его помощью вы сможете уменьшить размер контейнера, ускорить сборку и предотвратить утечку секретов.

3. При выполнении инструкции RUN всегда объединяйте команды apt-get update и apt-get install с помощью &&.

4. Старайтесь избегать ненужных COPY. Они замедляют процесс сборки и увеличивают размер образа. Вы можете скопировать несколько файлов с помощью массивов, например:
COPY [
"config.json",
"index.js",
"package.json"
] /usr/src/app/


#bestpractices #docker
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13👍124🤣2🤯1
👩‍💻 Начиная с версии 17.5 Docker стал поддерживать multi-stage builds. Этот метод помог разделить сложные технические сборки на несколько этапов, каждый из которых выполняет определённую задачу. Благодаря этому важному обновлению стало легче уменьшать поверхность атаки и размер образов, а также эффективнее использовать кэш Docker.

На Blacksmith вышло понятное руководство по многоэтапным сборкам Docker. В статье вы найдете рекомендации по подбору базового образа для каждого этапа сборки и оптимизации порядка этапов.

#docker #dockerfile #bestpractices
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥53🥴1
👩‍💻 Всем DevOps! Публикуем подборку лучших практик по безопасности Kubernetes.

1. Изолируйте etcd от кластера файерволом и зашифруйте.

2. По возможности храните секреты не в переменной среды, а в виде вольюмов и файлов. В качестве альтернативы можно использовать secretKeyRef, чтобы минимизировать риск атаки.

3. Отключите NET_ RAW в определении securityContext-пода. В руках злоумышленника NET_RAW может стать причиной широкого спектра сетевых атак внутри кластера.

4. Избегайте совместного использования IPC или сетевого пространства имен хоста, чтобы не открывать доступ к общей информации и не нарушать сетевую изоляцию.

5. Настройте каждый узел на ingress controller, установив его на приём соединений только от главного узла через указанный порт с помощью списка контроля доступа (ACL).

6. Заблокируйте SSH, чтобы ограничить доступ к ресурсам Kubernetes. Используйте kubectl exec, чтобы получать доступ к контейнеру, не получая доступ к хосту.

#devops #kubernetes #bestpractices
Please open Telegram to view this post
VIEW IN TELEGRAM
👍193🔥3👏1🗿1
👩‍💻 Всем DevOps! Начнём неделю с подборки лучших практик по Terraform:

1. Разделяйте файлы конфигураций. Вместо того чтобы помещать весь код в main.tf, лучше распределите его по нескольким файлам:
main.tf: вызывает модули, локальные файлы и источники данных для создания всех ресурсов.
variables.tf: содержит объявления переменных, используемых в main.tf. Чтобы улучшить читаемость кода, размещайте обязательные переменные вверху, а необязательные — внизу, разделяя их строкой комментария;
outputs.tf: содержит выходные данные ресурсов, созданных в main.tf;
versions.tf: содержит требования к версиям Terraform и поставщиков;
data.tf: содержит импорт ресурсов;
resource.tf: содержит объявление конкретного ресурса;
terraform.tfvars: содержит значения переменных. Нигде не должен использоваться.

2. Упорядочьте ключи в блоке переменных variables.tf следующим образом: description, type, default, validation.

3. Используйте динамические блоки. Они позволяют создавать конфигурации с более высокой степенью гибкости и автоматизации. Их используют для генерирования повторяющихся блоков кода на основе входных данных, что упрощает управление инфраструктурой и уменьшает объём дублирующегося кода.

4. Старайтесь делать ваши модули ресурсов максимально простыми.

5. Указывайте версии ваших модулей, иначе вы можете столкнуться с неожиданными проблемами при очередном развертывании. Для обновления ваших модулей используйте семантическое версионирование.

6. Если ваши модули тесно связаны — объедините их в один. Такие модули можно хранить в одном репозитории и использовать их в качестве подмодулей. Так вы сможете версионировать их как единое целое, и управлять ими станет проще.

7. Используйте map вместо list для описания группы объектов. Если требуется создать группу идентичных объектов, то лучше использовать map, так ресурсы будут обновляться. При использовании list ресурсы пересоздаются. Для некоторых сценариев это критично.

#bestpractices #devops #terraform
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥20👍85
👩‍💻 Всем DevOps! Какой понедельник без best practices? Сегодня — K8s.

1. Установите минимум и максимум для ресурсов. Без ограничений продакшен-кластеры и узлы могут выйти из строя.

2. Пользуйтесь преимуществами декларативных YAML-файлов. Замените императивные команды kubectl (к примеру, kubectl run) на декларативные файлы YAML. Они позволяют хранить и версионировать все ваши объекты вместе с вашим кодом. Если что-то пойдет не так, вы сможете легко откатить развёртывания просто восстановив более ранний файл YAML. А ещё ваша команда сможет видеть текущий статус кластера и изменения, внесенные в него с течением времени.

3. По возможности не используйте голые поды. В случае отказа узла они не будут автоматически перенесены в другой узел. Поэтому обязательно связывайте их с Deployments, ReplicaSets и Jobs.

4. Не забывайте маркировать объекты – контейнеры, сервисы, поды, сети и т. д. В метки вы можете занести информацию о владельце, версии, экземпляре, компоненте, проекте, команде, уровне конфиденциальности и др.

5. Сделайте пробы готовности независимыми. Они не должны быть зависимыми от:
• базы данных;
• миграции баз данных;
• API;
• сервисов сторонних производителей.

6. Установите Quality of Service (QoS) для ваших подов. Выбор класса QoS влияет на производительность приложения в кластере Kubernetes. Если правильно настроите QoS, то сможете эффективно распределять ресурсы и обеспечивать бесперебойную работу приложений.

7. Обязательно указывайте адекватные реквесты и лимиты ресурсов. Реквесты помогут правильно распределить ваши workloads по узлам. Лимиты помогут избежать проблем с узлами и другими workloads, выполняемыми на том же узле в случае утечек памяти или слишком большого потребления CPU.

🗂 Какие инструменты и технологии вы хотели бы увидеть в подборке лучших практик? Пишите свои пожелания в комментариях.

#bestpractices #devops #kubernetes
Please open Telegram to view this post
VIEW IN TELEGRAM
👍198🔥5
👩‍💻 В этот понедельник публикуем несколько лучших практик по работе с сетью в Docker.

1) Сегментируйте сети. Используйте методы сетевой изоляции (настройте iptables правила). Сегментация сети позволит вам изолировать контейнеры, контролировать доступы и защищать конфиденциальные рабочие нагрузки. Даже если контейнер будет скомпрометирован, действия злоумышленника будут ограничены только этим контейнером; вся остальная система будет под защитой.

2) Избегайте перекрытия подсетей в сети Docker, чтобы предотвратить проблемы с подключением. Вы можете проверить текущую конфигурацию сети через команду docker network inspect.

3) Используйте DNS для обнаружения сервисов. Внутренний DNS Docker преобразует имена контейнеров в IP-адреса в одной сети, что значительно упрощает обнаружение сервисов.

4) Обезопасьте связь. Используйте зашифрованные overlay-сети для конфиденциальных приложений, особенно при работе на нескольких докер-хостах.

#devops #docker #bestpractices
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥73
🌐 HashiCorp опубликовали чеклист, который поможет выстроить грамотное управление секретами на каждом этапе зрелости компании: от первых шагов в облаке до масштабирования в мультиоблачной инфраструктуре. 

В статье разбираются best-practices, которые помогают выстроить безопасную стратегию и упростить управление секретов. Вы узнаете, как и где безопасно хранить статические и динамические секреты, когда внедрять автоматизацию и что делать когда требуется масштабирование. Материал как для начинающих, так и для тех, кто уже работает с облачными инфраструктурами. 

Какой из пунктов чеклиста вы бы добавили в инфраструктуру в первую очередь?

#devops #bestpractices
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥62💊1
👩‍💻 Нужно отключить срок действия пароля для системного аккаунта в Linux? Вивьек Гите подготовил подробный гайд, как безопасно выключить password aging и expiration через chage.

В статье вы найдете пошаговые команды и объяснение, как работают параметры вроде -M, -I, -E и -m. Автор также разбирает, в каких случаях отключение старения пароля оправдано — например, для сервисных учеток Nginx, MySQL или для тестовых сред, где регулярная смена пароля мешает работе.

Если вы ограничиваете срок действия паролей для системных пользователей или хотите лучше понять политику безопасности на уровне ОС, то материал будет полезен для изучения.

#devops #linux #sysadmin #bestpractices
Please open Telegram to view this post
VIEW IN TELEGRAM
5