DevOps
8.76K subscribers
1.39K photos
880 videos
28 files
1.74K links
Docker, Kubernetes, облачные сервисы (AWS, GCP, Azure), Infrastructure as a Code (Terraform, CloudFormation), администрирование Windows и Linux, сети TCP, IP, скрипты (Bash, PowerShell), Ansible, Jenkins, DevSecOps, логирование. По вопросам @evgenycarter
Download Telegram
Docker

01- Основы. Принцип работы. Почему docker. Сравнение с виртульной машиной. Применение.
02- Установка Docker в Linux и Windows.
03- Основные команды. Управление портами. Port Mapping.
04- Переменные. Environment Variables.
05- Volumes. Постоянные данные. Persisting Data.
06- Сети в докер. Network: bridge, host, none, macvlan, ipvlan
07- Dockerfile. Создаем СВОИ контейнеры.
08- Docker-COMPOSE. Простой запуск контейнеров.
09- Portainer. Управлять Docker ПРОСТО. Обзор, установка, настройка.
10- Watchtower. Автоматизация: обновление Docker контейнеров.

источник

#devops #девопс

Подпишись 👉@i_DevOps
👍10
Освоение журналов аудита Kubernetes

Kubernetes предоставляет мощный инструмент, позволяющий создавать журналы аудита для каждого действия, запрашиваемого и выполняемого через API Kubernetes.

Понимание того, как настраивать, управлять и интерпретировать эти журналы, критически важно для поддержания безопасности и соответствия требованиям в средах Kubernetes. Конкретно эта статья посвящена исследованию безопасности Kubernetes.


https://habr.com/ru/articles/815119/

#devops #девопс

Подпишись 👉@i_DevOps
👍4
Как определить, какая версия Docker установлена: Docker Desktop или Docker Engine

Docker стал лидером в предоставлении решений для разработки программного обеспечения, предлагая инструменты, которые упрощают процесс разработки, тестирования, развертывания и запуска приложений с использованием контейнеров. Поэтому понимание различных продуктов Docker, таких как Docker Desktop, и компонентов, таких как Docker Engine, а также того, как они взаимодействуют, крайне важно для разработчиков, стремящихся к максимальной продуктивности и соблюдению условий лицензирования Docker.

В этой статье будут разъяснены различия и сходства между Docker Desktop и Docker Engine, а также приведены рекомендации по определению, какой из них используется в данный момент, чтобы вы могли максимально эффективно использовать возможности Docker.

https://www.docker.com/blog/how-to-check-docker-version/

#devops #девопс

Подпишись 👉@i_DevOps
👍5
🚨 Helm: как не сломать прод — 5 ошибок, которые делают все

Helm — must-have инструмент для деплоя в Kubernetes. Но даже опытные инженеры наступают на одни и те же грабли, особенно в проде. Разберём, какие ошибки чаще всего приводят к падениям и багам.


🔸 1. helm upgrade без флага --atomic
Без --atomic Helm не откатывает релиз при ошибке — в кластере остаётся полусломанное состояние.
Решение: всегда используйте --atomic на проде:


helm upgrade my-app ./chart --atomic --install


🔸 2. Забытый values.yaml с тестовыми значениями
Нередко инженеры коммитят values.yaml с включёнными debug-логами, выключенным HPA и отключённым SSL.
Решение:

* Разделяй values по окружениям (values-prod.yaml, values-staging.yaml)
* Используй .gitignore для временных файлов
* Применяй валидацию с helm-schema-gen

🔸 3. Не pinned зависимости в Chart.yaml
Если чарты-зависимости подтягиваются без фиксации версий (version: ^1.2.3), то обновления могут неожиданно всё сломать.
Решение:
Фиксируй зависимости чётко: version: 1.2.3 и контролируй обновления вручную.

🔸 4. Отсутствие pre-upgrade и post-upgrade хуков
Если приложение требует миграций БД или прогрева кэша, а хуки не заданы — велика вероятность получить нерабочий релиз.
Решение:
Определи хуки в templates/hooks.yaml:


apiVersion: batch/v1
kind: Job
metadata:
annotations:
"helm.sh/hook": pre-upgrade


🔸 5. Helm secrets хранятся в чистом виде в Git
Распакованный secrets.yaml в Git — это инцидент.
Решение:

* Используй helm-secrets с sops
* Шифруй secrets.yaml и расшифровывай только при деплое:


helm secrets upgrade my-app -f secrets.enc.yaml



Вывод:
Helm — мощный, но не прощающий ошибок инструмент. Настрой atomic деплой, следи за values и зависимостями, автоматизируй pre/post-хуки и защищай секреты. Это минимальный чеклист для прод-готовности.

#devops #девопс

Подпишись 👉@i_DevOps
👍5
Netshoot — набор инструментов для устранения сетевых проблем с Docker и Kubernetes.

Отладка сетей Docker и Kubernetes может быть сложной. Однако при правильном понимании принципов работы сетей Docker и Kubernetes, а также наличии подходящих инструментов, вы сможете эффективно выявлять и устранять сетевые проблемы. Контейнер netshoot включает в себя мощный набор инструментов для диагностики сетевых проблем в Docker. Вместе с этими инструментами идут практические примеры, демонстрирующие, как netshoot можно использовать в реальных сценариях.

https://github.com/nicolaka/netshoot

#devops #девопс

Подпишись 👉@i_DevOps
👍91
Kubernetes как PaaS: максимум возможностей без разработки. Часть 1

Kubernetes — это не просто оркестратор контейнеров, а целая экосистема инструментов, которые позволяют построить PaaS без написания кода. Helm, ArgoCD, Crossplane, Knative и другие решения делают управление приложениями и инфраструктурой настолько простым, что разработка собственной платформы превращается в задачу конфигурации, а не программирования. Меня зовут Сергей Емельянов, я техлид команды в VK Tech, которая занимается созданием PaaS-платформы на базе Kubernetes для упрощения работы с данными. В серии статей разберем, как создать PaaS, используя мощь Kubernetes и его экосистему.

https://habr.com/ru/companies/vktech/articles/895954/

#devops #девопс

Подпишись 👉@i_DevOps
👍5
Kubernetes как PaaS: максимум возможностей без разработки. Часть 2

Это вторая часть серии статей, где мы шаг за шагом строим PaaS на базе Kubernetes без написания кода. Напомню, для чего мы это делаем: наша цель — выжать максимум из современных технологий и экосистемы Kubernetes, чтобы создать PaaS-решение, которое упростит жизнь разработчикам. Мы хотим, чтобы приложения и сервисы разворачивались быстро, удобно и без глубокого погружения в инфраструктуру.

https://habr.com/ru/companies/vktech/articles/890386/

#devops #девопс

Подпишись 👉@i_DevOps
2👍2
Kubernetes без интернета: как мы устанавливаем Deckhouse в закрытом контуре (обзор и видео доклада)

Всем привет! На связи Максим Набоких, архитектор и технический руководитель Deckhouse Kubernetes Platform. Deckhouse работает в компаниях из разных отраслей: нефтегазовые предприятия, финтех, государственные организации, банки, облачные провайдеры и так далее. И больше чем в половине этих организаций во внутренней инфраструктуре нет интернета — он просто запрещён. Поэтому нам надо было придумать процесс установки своей платформы в закрытый контур.

О том, как устанавливать Kubernetes (Deckhouse использует ванильный K8s), где «не ступал» ни один пакет из публичной сети, я рассказал на HighLoad++ 2023. Эта статья — текстовая версия моего доклада. Мы разберём целевую схему закрытого контура, нюансы работы инструментов для создания безопасной среды, посмотрим, как готовить дистрибутив Kubernetes-платформы к установке и осуществлять доставку приложений в закрытых окружениях.

https://habr.com/ru/companies/oleg-bunin/articles/798317/

#devops #девопс

Подпишись 👉@i_DevOps
🔥5👍2
🚀 Подборка Telegram каналов для программистов

Системное администрирование, DevOps 📌

https://t.me/bash_srv Bash Советы
https://t.me/win_sysadmin Системный Администратор Windows
https://t.me/sysadmin_girl Девочка Сисадмин
https://t.me/srv_admin_linux Админские угодья
https://t.me/linux_srv Типичный Сисадмин
https://t.me/devopslib Библиотека девопса | DevOps, SRE, Sysadmin
https://t.me/linux_odmin Linux: Системный администратор
https://t.me/devops_star DevOps Star (Звезда Девопса)
https://t.me/i_linux Системный администратор
https://t.me/linuxchmod Linux
https://t.me/sys_adminos Системный Администратор
https://t.me/tipsysdmin Типичный Сисадмин (фото железа, было/стало)
https://t.me/sysadminof Книги для админов, полезные материалы
https://t.me/i_odmin Все для системного администратора
https://t.me/i_odmin_book Библиотека Системного Администратора
https://t.me/i_odmin_chat Чат системных администраторов
https://t.me/i_DevOps DevOps: Пишем о Docker, Kubernetes и др.
https://t.me/sysadminoff Новости Линукс Linux

1C разработка 📌
https://t.me/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С
https://t.me/DevLab1C 1С:Предприятие 8
https://t.me/razrab_1C 1C Разработчик
https://t.me/buh1C_prog 1C Программист | Бухгалтерия и Учёт
https://t.me/rabota1C_rus Вакансии для программистов 1С

Программирование C++📌
https://t.me/cpp_lib Библиотека C/C++ разработчика
https://t.me/cpp_knigi Книги для программистов C/C++
https://t.me/cpp_geek Учим C/C++ на примерах

Программирование Python 📌
https://t.me/pythonofff Python академия.
https://t.me/BookPython Библиотека Python разработчика
https://t.me/python_real Python подборки на русском и английском
https://t.me/python_360 Книги по Python

Java разработка 📌
https://t.me/BookJava Библиотека Java разработчика
https://t.me/java_360 Книги по Java Rus
https://t.me/java_geek Учим Java на примерах

GitHub Сообщество 📌
https://t.me/Githublib Интересное из GitHub

Базы данных (Data Base) 📌
https://t.me/database_info Все про базы данных

Мобильная разработка: iOS, Android 📌
https://t.me/developer_mobila Мобильная разработка
https://t.me/kotlin_lib Подборки полезного материала по Kotlin

Фронтенд разработка 📌
https://t.me/frontend_1 Подборки для frontend разработчиков
https://t.me/frontend_sovet Frontend советы, примеры и практика!
https://t.me/React_lib Подборки по React js и все что с ним связано

Разработка игр 📌
https://t.me/game_devv Все о разработке игр

Библиотеки 📌
https://t.me/book_for_dev Книги для программистов Rus
https://t.me/programmist_of Книги по программированию
https://t.me/proglb Библиотека программиста
https://t.me/bfbook Книги для программистов

БигДата, машинное обучение 📌
https://t.me/bigdata_1 Big Data, Machine Learning

Программирование 📌
https://t.me/bookflow Лекции, видеоуроки, доклады с IT конференций
https://t.me/rust_lib Полезный контент по программированию на Rust
https://t.me/golang_lib Библиотека Go (Golang) разработчика
https://t.me/itmozg Программисты, дизайнеры, новости из мира IT
https://t.me/php_lib Библиотека PHP программиста 👨🏼‍💻👩‍💻
https://t.me/nodejs_lib Подборки по Node js и все что с ним связано
https://t.me/ruby_lib Библиотека Ruby программиста
https://t.me/lifeproger Жизнь программиста. Авторский канал.

QA, тестирование 📌
https://t.me/testlab_qa Библиотека тестировщика

Шутки программистов 📌
https://t.me/itumor Шутки программистов

Защита, взлом, безопасность 📌
https://t.me/thehaking Канал о кибербезопасности
https://t.me/xakep_2 Хакер Free

Книги, статьи для дизайнеров 📌
https://t.me/ux_web Статьи, книги для дизайнеров

Математика 📌
https://t.me/Pomatematike Канал по математике
https://t.me/phis_mat Обучающие видео, книги по Физике и Математике
https://t.me/matgeoru Математика | Геометрия | Логика

Excel лайфхак📌
https://t.me/Excel_lifehack

https://t.me/mir_teh Мир технологий (Technology World)

Вакансии 📌
https://t.me/sysadmin_rabota Системный Администратор
https://t.me/progjob Вакансии в IT
👍3👎2
Три оттенка Kubernetes Operator, или чем слушает Prometheus

Вашему вниманию предлагается вольное описание работы некоторых компонентов Кубернетес Операторов, с которыми приходится иметь дело как в эксплуатации уже написанных кем-то, так и при разработке собственного Оператора. Чтобы лучше разобраться, как реализован функционал этих компонентов, для наглядности, позволю себе рассмотреть Golang сорс-код Prometheus Оператора для мониторинга и Оператора Hashicorp Vault для управления секретами в Кубернетес, архитектура которых разработана с применением лучших практик использования Kubernetes API и продолжает стабильно обновляться сообществом.

https://habr.com/ru/articles/817091/

#devops #девопс

Подпишись 👉@i_DevOps
👍5
Crd-to-sample-yaml or cty ( city )

Утилита для генерации манифестов YAML из CRD.

Это простая утилита, написанная на Go, которая читает CRD-файлы и создает из них YAML-образцы.

Она использует controller-tools/pkg/crd/schema и controller-tools/pkg/crd/markers для интерпретации и разбора схемы.

Установка:


go install github.com/Skarlso/crd-to-sample-yaml@latest


Использование:


crd-to-sample-yaml -path ./path/to/crds > output.yaml


https://github.com/Skarlso/crd-to-sample-yaml

#devops #девопс

Подпишись 👉@i_DevOps
👍3
Почему Fedora CoreOS — это container optimized дистрибутив

Fedora CoreOS на официальном сайте представлена как container optimized, container-focused, container based и так далее OS. Но что это вообще значит? Там предустановлен какой-то container runtime? А еще что? В этой статье попытаемся разобраться.

→ Что такое optimized
→ Иммутабельная система и транзакционные обновления
→ Автоматические background-обновления
→ Запуск системы на основе контейнер-образа
→ Безопасность
→ Предустановленные инструменты для контейнеров
→ Гибкий деплой
→ Заключение

https://habr.com/ru/companies/selectel/articles/817299/

#devops #девопс

Подпишись 👉@i_DevOps
👍42
Распределённый инференс и шардирование LLM. Часть 1: настройка GPU, проброс в Proxmox и настройка Kubernetes

Когда модель DeepSeek R1 стала широко обсуждаться в сообществе, я заинтересовался, можно ли эффективно использовать её и другие крупные модели в домашних условиях, не прибегая к дорогостоящим облачным сервисам. Поскольку DevOps и инфраструктурой я увлекаюсь уже несколько лет, у меня постепенно сформировалась домашняя лаборатория, на которой я и решил проверить эту идею.

Эта статья в трёх частях — результат моего опыта в решении этой задачи. Внутри вас ждёт пошаговое руководство по реализации бюджетного распределённого инференса с использованием Ray Serve, vLLM, Kubernetes, Proxmox и других технологий. В первой части мы разберём настройку GPU и его проброс в Proxmox, развернём Kubernetes-кластер, установим GPU Operator и KubeRay Operator.

https://habr.com/ru/companies/flant/articles/906700/

#devops #девопс

Подпишись 👉@i_DevOps
👍5
💡 Как DevOps'у не утонуть в логах

Когда в продакшене случается затык, первое, что мы делаем — лезем в логи. Но с микросервисами, десятками подов и различными компонентами инфраструктуры, логов становится столько, что можно утонуть.

Вот несколько проверенных приёмов, которые реально спасают время:

🔹 Стандартизируй формат логов. JSON — твой друг. Структурированные логи можно парсить, фильтровать и индексировать.

🔹 Сразу думай про central logging. Loki + Grafana, Elasticsearch + Kibana или даже простой Fluent Bit + S3. Главное — не SSH на 20 серверов.

🔹 Добавляй trace_id во все логи. Это твой маяк в море. Особенно полезно, когда надо отслеживать один запрос через всю систему.

🔹 Фильтры, фильтры, фильтры. Хорошие правила фильтрации в Grafana или Kibana — это как хороший кофе с утра. Делают день лучше.

🔹 Логи — это не помойка. Не пиши туда print("Hello from service X"). Пиши полезное: ошибки, статусы, идентификаторы.

И напоследок: не забывай про ротацию и retention. Логи не должны жить вечно, особенно если ты не хочешь платить лишнее за storage.

#devops #девопс

Подпишись 👉@i_DevOps
👍51
Распределённый инференс и шардирование LLM. Часть 2: скрипт vLLM, Ray Serve для вывода API и настройка KubeRay Cluster

Часть 1

Продолжаем пошагово разбираться с ответом на вопрос о том, как эффективно работать с передовыми LLM, используя доступное оборудование и распределённые вычисления.

В первой части статьи мы подготовили всё необходимое для развёртывания распределённого инференса с Ray Serve и vLLM. Сегодня этим и займёмся. Мы напишем скрипт vLLM, используем Ray Serve, чтобы предоставить внешний HTTP API, а также настроим KubeRay Cluster и развернём в нём Gemma 3.

https://habr.com/ru/companies/flant/articles/906702/

#devops #девопс

Подпишись 👉@i_DevOps
👍4
Централизованный vs Децентрализованный ArgoCD

Разворачивая в Kuberentes ArgoCD есть 2 подхода, которые можно использовать, если у вас в контуре несколько кластеров Kubernetes, развертывания в которых неободимо с помощью ArgoCD:

Централизированный. Когда в одном Kubernetes разворачивается один ArgoCD и к нему подключаются все доступные кластера Kuberentes.

Децентрализованный. Когда в каждом Kuberentes’e разворачивается свой персональный ArgoCD, который занимается деплоем в этот Kuberentes.

Разберём плюсы и минусы каждого подхода.

Централизированный ArgoCD

Плюсы:
1️⃣ Единый интерфейс. Можно быстро отсортировать проблемные компоненты и понять причину ошибки.

2️⃣ Мощные CRD ApplicationSets (документация). Позволяют описать один компонент и разом раскатить его на все подключённые кластеры.

3️⃣ Удобное обновление ArgoCD. Достаточно обновить в одном месте, и оно сразу применяется ко всем кластерам.


Минусы:
1️⃣ Сетевые сложности. ArgoCD должен иметь доступ к kube-apiserver всех кластеров. Соответственно нужно продумать маршруты до этих API и защитить их.

2️⃣ Единая точка отказа и уязвимость. Если ArgoCD падает, управление всеми кластерами временно недоступно. Слабое место с точки зрения безопасности. Особенно опасно, если подключать кластеры с Cluster-Admin правами (что все и делают).


Децентрализированный ArgoCD

Плюсы:
1️⃣ Полная автономность кластеров. Каждый кластер полностью управляется своим ArgoCD. Если один ArgoCD сломается, это не повлияет на другие кластеры.

2️⃣ Упрощённая безопасность. Нет необходимости прокидывать сетевые доступы к kube-apiserver из централизованного ArgoCD.

3️⃣ Гибкость в настройке. Можно кастомизировать ArgoCD под конкретный кластер. Удобно для multi-tenant окружений, где каждый проект или команда живут в отдельный Kuberentes кластерах и управляет своим ArgoCD.

Минусы:
1️⃣ Больше инфраструктуры и поддержки. Нужно поддерживать N независимых ArgoCD-инсталляций. Дополнительная нагрузка на команду DevOps.

2️⃣ Отсутствие единого интерфейса. Придётся заходить в каждый ArgoCD по отдельности, чтобы мониторить состояние. (Решается мониторингом). Если нужно что-то обновить во всех кластерах, придётся делать это вручную или автоматизировать через внешние инструменты (еще один ArgoCD?).

3️⃣ Сложность в управлении глобальными компонентами. Например, если нужно одновременно обновить общий Helm-чарт во всех кластерах, придётся либо использовать внешние механизмы (типа CI/CD), либо делать это вручную.


🎯 Какой вариант выбрать?

Много кластеров (10+) → Централизованный ArgoCD, но с HA и жёсткими мерами безопасности.

Изолированные кластеры (air-gapped, private) → Локальный ArgoCD в каждом кластере.

Нужна гибкость в управлении → Децентрализованный вариант.

Важно минимизировать затраты на инфраструктуру → Централизованный ArgoCD.

#devops #девопс

Подпишись 👉@i_DevOps
👍4💅2
Radius — это платформенный уровень с открытым исходным кодом, предназначенный для облачных приложений. Он помогает разработчикам и операционным командам сосредоточиться на разработке и сопровождении приложений, а не на управлении инфраструктурой.

Radius предоставляет:

* Единый опыт разработки для приложений, развертываемых в разных облаках и средах.
* Поддержку нескольких облаков и Kubernetes.
* Интеграции с популярными инструментами, такими как Terraform, Bicep, Helm и другие.
* Ресурсы приложений и вычислений, включая службы, базы данных, кэш, очереди и т. д.
* Безопасность и сетевые политики, управляемые централизованно.

https://github.com/radius-project/radius

#devops #девопс

Подпишись 👉@i_DevOps
👍2
🔧 Про grep, который умеет больше, чем ты думаешь

Все знают grep как утилиту “найди мне это слово в этих логах”. Но давай копнём глубже — вот тебе пара трюков, которые удивят даже видавшего виды девопса:


📍 Ищем с контекстом
Хочешь не просто строку, а и то, что рядом?


grep -C 3 "ошибка" /var/log/syslog


Покажет 3 строки до и после найденной.


📍 Ищем по слову, а не по вхождению
Не хочешь ловить ошибка, если в логе есть предошибкака?


grep -w "ошибка" файл.log


Совпадение только по целому слову.


📍 Списки IP-шников? Без проблем.
Вытаскиваем IPv4 из текста:


grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}' лог.txt



📍 Ищем рекурсивно, но только в файлах
Искать по директории, пропуская бинарники и показывая имя файла:


grep -rIn --exclude-dir={.git,node_modules} "TODO" .



📍 Цвет для глаз
Визуально быстрее цепляться за результат:


grep --color=auto "fail" журнал.log



Если ты думаешь, что grep — это просто "найди слово", то, возможно, ты не используешь весь его потенциал. А зря 😉

#devops #девопс

Подпишись 👉@i_DevOps
👍141