DevOps – Telegram
DevOps
8.5K subscribers
1.44K photos
834 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
💡 Лучшие практики работы с Helm: что нужно знать

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

📦 1. Структура директорий чарта
Соблюдайте стандартную структуру чарта Helm:

mychart/
charts/
templates/
values.yaml
Chart.yaml
README.md

Избегайте добавления нестандартных файлов и директорий. Это сделает чарты переносимыми и читаемыми.

🧩 2. Разделяйте общие шаблоны
Используйте _helpers.tpl для определения общих шаблонов, таких как аннотации, метки и имена ресурсов. Это снижает дублирование и упрощает сопровождение:


{{/* Генерация полного имени */}}
{{- define "mychart.fullname" -}}
{{- printf "%s-%s" .Release.Name .Chart.Name | trunc 63 | trimSuffix "-" -}}
{{- end -}}


⚙️ 3. Используйте параметры в values.yaml
Делайте чарты гибкими, передавая конфигурации через values.yaml. Никогда не хардкодьте значения в шаблонах.

🧪 4. Валидация values.yaml
Добавляйте проверку обязательных значений с помощью required:

{{ required "Variable mychart.image.repository is required" .Values.image.repository }}


🔍 5. Используйте шаблоны if/else разумно
Старайтесь не перегружать шаблоны логикой. Разделяйте шаблоны на несколько файлов, если они становятся слишком сложными.

🗃️ 6. Не добавляйте чарт в шаблон напрямую
Вместо включения зависимостей в директорию charts/, указывайте их в Chart.yaml и используйте helm dependency update.

🛑 7. Не хардкодьте версии образов
Передавайте версию через values.yaml. Это повышает гибкость CI/CD:

image:
repository: nginx
tag: "1.21.1"


🔒 8. Управление чувствительными данными
Не храните пароли и токены в values.yaml. Используйте секреты Kubernetes или инструменты типа Sealed Secrets или External Secrets.

🔁 9. Helm hooks
Helm предоставляет хуки для выполнения задач до/после установки. Используйте их, например, для миграций БД. Пример:

annotations:
"helm.sh/hook": pre-install


🧹 10. Чистка старых релизов
Используйте helm uninstall и регулярно проверяйте статус релизов с помощью helm list. Это помогает избегать конфликта имён и мусора.

🧪 11. Тестирование чарта
Добавляйте unit-тесты с помощью helm unittest и не забывайте про проверку синтаксиса:

helm lint .


🔄 12. Автоматизация через CI/CD
Интегрируйте Helm в пайплайны CI/CD для установки и обновления чартов — например, с помощью GitLab CI, GitHub Actions, ArgoCD или Flux.


Придерживайтесь этих рекомендаций — и работа с Helm станет надёжной, устойчивой и более предсказуемой. Это особенно важно при масштабировании инфраструктуры и работе в команде.

#devops #девопс

Подпишись 👉@i_DevOps
👍7🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Блокировка состояния Terraform с использованием S3 (без DynamoDB)

В этом посте мы рассмотрим:

- Зачем нужна блокировка состояния Terraform
- Блокировка состояния с помощью DynamoDB
- Блокировка состояния только с использованием S3, без DynamoDB
- Когда стоит использовать DynamoDB
- Когда можно обойтись только S3
- Лучшие практики хранения state-файлов в S3

https://devopscube.com/terraform-state-locking-with-s3/

#devops #девопс

Подпишись 👉@i_DevOps
5👍2
infosec - это один из самых ламповых каналов по информационной безопасности, где говорят об истории ИТ, публикуют актуальные новости и пишут технический материал на разные темы:

- Что из себя представляет официально взломанный iPhone от Apple?
- Кому и для чего выдавалось разрешение на ношение сотового телефона?
- Бесплатные курсы для ИБ специалистов на различные темы;
- Бесплатный бот, который проверит файлы на предмет угроз более чем 70 антивирусами одновременно.

Присоединяйся, у нас интересно: @it_secur
👍1
Проект heynote — это минималистичное CLI-приложение для создания и хранения заметок прямо из терминала. Он позволяет быстро фиксировать мысли или команды без необходимости переключаться на редактор или веб-интерфейс.

📌 Особенности:
- Хранит заметки в простом .txt-файле.
- Поддерживает добавление тегов (`#`) и отметок времени.
- Удобная фильтрация заметок по ключевым словам или датам.
- Возможность настройки пути к файлу хранения.

Пример использования:

heynote "Перезапустить nginx #devops"

Эта команда добавит строку со временем и текстом в файл заметок. Удобно, когда нужно быстро сохранить мысль во время работы в консоли.

Проект написан на Go, кроссплатформенный, и отлично вписывается в минималистичный рабочий процесс, особенно для тех, кто живёт в терминале. Полезный инструмент для системных администраторов, разработчиков и всех, кто ценит лаконичность.

https://github.com/heyman/heynote

#devops #девопс

Подпишись 👉@i_DevOps
👍3
🚀 Подпишись и прокачай свои скилы: лучшие каналы для IT-специалистов 👨‍💻📲

Папка с каналами для DevOps, Linux - Windows СисАдминов 👍

Папка с каналами для 1С программистов 🧑‍💻

Папка с каналами для C++ программистов 👩‍💻

Папка с каналами для Python программистов 👩‍💻

Папка с каналами для Java программистов 🖥

Папка с книгами для программистов 📚

Папка для программистов (frontend, backend, iOS, Android) 💻


GitHub Сообщество 🧑‍💻
https://news.1rj.ru/str/Githublib Интересное из GitHub

Базы данных (Data Base) 🖥
https://news.1rj.ru/str/database_info Все про базы данных


Разработка игр 📱
https://news.1rj.ru/str/game_devv Все о разработке игр

БигДата, машинное обучение 🖥
https://news.1rj.ru/str/bigdata_1 Data Science, Big Data, Machine Learning, Deep Learning


QA, тестирование 🖥
https://news.1rj.ru/str/testlab_qa Библиотека тестировщика

Шутки программистов 📌
https://news.1rj.ru/str/itumor Шутки программистов

Защита, взлом, безопасность 💻
https://news.1rj.ru/str/thehaking Канал о кибербезопасности
https://news.1rj.ru/str/xakep_2 Хакер Free

Книги, статьи для дизайнеров 🎨
https://news.1rj.ru/str/ux_web Статьи, книги для дизайнеров

Математика 🧮
https://news.1rj.ru/str/Pomatematike Канал по математике
https://news.1rj.ru/str/phis_mat Обучающие видео, книги по Физике и Математике

Excel лайфхак🙃
https://news.1rj.ru/str/Excel_lifehack

Технологии 🖥
https://news.1rj.ru/str/tikon_1 Новости высоких технологий, науки и техники💡
https://news.1rj.ru/str/mir_teh Мир технологий (Technology World)

Вакансии 💰
https://news.1rj.ru/str/sysadmin_rabota Системный Администратор
https://news.1rj.ru/str/progjob Вакансии в IT
https://news.1rj.ru/str/rabota1C_rus Вакансии для программистов 1С
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Addon Controller

Sveltos Addon Controller позволяет пользователям применять Kubernetes-манифесты к любым кластерам, управляемым Sveltos. Это может быть сделано следующими способами:

- Добавляя YAML-файлы с Kubernetes-ресурсами в ConfigMap или Secret.
- Указывая URL с YAML-ресурсами.
- Указывая Helm-чарт.

Addon Controller – это контроллер Kubernetes, который работает в управляющем кластере (management cluster). Он следит за созданием и обновлением объектов Addon, а также применяет соответствующие манифесты в целевых (managed) кластерах, на которые ссылается Addon.

Возможности

- Поддержка ConfigMap, Secret, URL и Helm-чартов.
- Поддержка переменных через ClusterProfile и ClusterSummary.
- Возможность динамически применять или удалять аддоны при изменении кластера или его свойств.
- Возможность настройки приоритетов применения ресурсов.
- Поддержка зависимостей между ресурсами.
- Поддержка dry-run и прерывания применения при ошибке.

Архитектура

1. Пользователь создает объект ClusterProfile, в котором указывает критерии выбора кластеров.
2. Для каждого подходящего кластера создается объект ClusterSummary, который содержит список Addon объектов.
3. Addon Controller применяет ресурсы, указанные в Addon, к каждому целевому кластеру.


https://github.com/projectsveltos/addon-controller?tab=readme-ov-file

#devops #девопс

Подпишись 👉@i_DevOps
3👍3
Как настроить автоматический откат в Ansible

Петя запускает плейбук, чтобы обновить конфигурацию Nginx — и ломает сайт. В конфиге ошибка, сервис не стартует.

Ansible не умеет откатывать изменения сам. Но есть способ настроить автоматический откат — с помощью блоков block, rescue и always.

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

#devops #девопс

Подпишись 👉@i_DevOps
👍11
Запускаем Sentry в Kubernetes в Яндекс облаке и храним Nodestore в S3

Sentry — это инструмент для отслеживания ошибок и производительности приложений в реальном времени.

Кратко о Sentry: что это, зачем он нужен
- Отслеживает баги и exceptions в бекенд, веб и мобильных приложениях.

Для кого этот пост
- Этот пост для тех кто хочет перейти с Sentry в docker-compose
- Для тех кто хочет перейти с Nodestore в PostgreSQL

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

#devops #девопс

Подпишись 👉@i_DevOps
👍3
Расследование аферы с GitHub: как тысячи «модов» и «кряков» крадут наши данные

Просматривая статьи на тематическом форуме по социальной инженерии, я обнаружил относительно новую схему мошенничества, которая меня потрясла. На GitHub создаются тысячи репозиториев с разными штуками — от модов для Roblox и Fortnite до «взломанных» FL Studio и Photoshop.

Как только вы скачиваете и запускаете любую из них, все данные с вашего компьютера собираются и отправляются на Discord-сервер, где сотни злоумышленников просматривают их в поисках закрытых ключей криптокошельков, банковских счетов и учётных данных социальных сетей, а также аккаунтов Steam и Riot Games.

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

original https://timsh.org/github-scam-investigation-thousands-of-mods-and-cracks-stealing-your-data/

#devops #девопс

Подпишись 👉@i_DevOps
👍2🤔1
🔥 Как ускорить docker build и сократить размер образа

Иногда docker build тянется вечность, а итоговый образ весит больше, чем база данных 🐘. Разбираемся, как ускорить сборку и оптимизировать размер образа без потери функциональности.


1. Используй multistage build
Разделяй стадии сборки и финальный образ. Это особенно важно при компиляции (Go, Java, Node.js):


# Стадия 1: билд
FROM golang:1.20 as builder
WORKDIR /app
COPY . .
RUN go build -o app

# Стадия 2: минимальный runtime
FROM alpine:latest
COPY --from=builder /app/app /usr/local/bin/app
ENTRYPOINT ["app"]


Образ получается меньше 10 МБ!


2. Минимизируй base image
Используй alpine, distroless, scratch, если не нужен полноценный дистрибутив:


FROM python:3.12-slim


Или вообще:


FROM scratch



3. Правильно расставляй COPY и RUN
Кешируй слои — сначала зависимости, потом исходники:


COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .


Так pip install не будет повторяться при каждом изменении исходников.


4. Убирай мусор и временные файлы
После установки пакетов — чисти кэш:


RUN apt-get update && apt-get install -y ... \
&& rm -rf /var/lib/apt/lists/*



5. Используй .dockerignore
Иначе в билд попадут node_modules, .git, логи и прочее:


.git
node_modules
*.log



Вывод:
Минимизация образа — это не только про размер, но и про безопасность (меньше surface area), скорость CI/CD, стабильность. И не забывай — docker build тоже надо профилировать.

#devops #docker #ci #optimization

Подпишись 👉 @i_DevOps
👍10
🔥 Ускоряем сборку Docker-образов: слои и кэш — наши друзья

Когда сборка Dockerfile занимает минуты — это мешает dev-loop'у. А ведь можно сильно ускориться с парой простых правил 👇


🧠 Основные принципы ускорения:

1. Максимально используем кэш
Docker кэширует каждый слой. Если слой не изменился — пересобирать не будет.

Сначала COPY зависимости, потом остальной код:


COPY requirements.txt .
RUN pip install -r requirements.txt # кэшируется

COPY . . # некэшируемо при любом изменении в коде


2. Объединяем RUN-команды
Меньше слоёв — быстрее сборка и push:


RUN apt update && apt install -y curl git \
&& rm -rf /var/lib/apt/lists/*


3. .dockerignore
Убедись, что не копируешь лишние файлы (например, .git/, tests/, node_modules/):


.git
node_modules
*.log
__pycache__/


4. Меньше COPY, больше multi-stage
Разделяй сборку и runtime — не таскай компиляторы в прод:


FROM golang:1.20 AS builder
WORKDIR /app
COPY . .
RUN go build -o app

FROM debian:bullseye-slim
COPY --from=builder /app/app /usr/bin/app
CMD ["app"]


5. Кэшируй pip/npm/go-пакеты
→ в Dockerfile сначала копируй файл зависимостей, ставь пакеты, только потом — весь код проекта.


📌 Используй эти практики, чтобы ускорить CI/CD, локальную сборку и деплой. Чем меньше слоёв изменяется — тем быстрее весь процесс.


#devops #девопс

Подпишись 👉@i_DevOps
👍8
🔥 Как ускорить GitHub Actions на 40% и платить меньше

CI — это не место для медлительности. Особенно когда билд идёт 15 минут, а запусков в день — сотни. Сейчас разберём, как оптимизировать GitHub Actions: быстрее, дешевле, эффективнее.


🔹 1. Используйте actions/cache правильно
Загрузка и компиляция зависимостей — одно из самых дорогих мест. Добавьте кэширование для npm, pip, go mod, docker layers. Пример для Node.js:


- uses: actions/cache@v3
with:
path: ~/.npm
key: ${{ runner.os }}-npm-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-npm-


⚠️ Не кэшируйте build-артефакты, которые зависят от среды (OS, runner version) — это приведёт к нестабильности.


🔹 2. Job matrix + fail-fast: false = контроль над параллелизмом
Matrix позволяет запускать тесты параллельно (например, разные версии Python), а fail-fast: false не останавливает все джобы при первом фейле.


strategy:
fail-fast: false
matrix:
python-version: [3.8, 3.9, 3.10]



🔹 3. Разделяйте пайплайн на reusable workflows
Выносите повторяющуюся логику в .github/workflows/reusable.yml и вызывайте с параметрами. Это уменьшает дублирование и ускоряет поддержку.


- uses: ./.github/workflows/reusable.yml
with:
env: staging



🔹 4. Используйте self-hosted runners, если билд тяжёлый
Если у вас сборка Docker-образов весит десятки минут — дешевле и быстрее поднять свои раннеры в EC2 или Kubernetes (особенно с GPU или кастомной средой).

📌 Попробуйте actions-runner-controller для Kubernetes:
https://github.com/actions/actions-runner-controller


🔹 5. Откажитесь от setup-* при каждом запуске
setup-node, setup-go, setup-java — удобны, но каждый раз качают и устанавливают SDK. Замените на preinstalled версии в раннерах или кэшируйте вручную.


Вывод:
Оптимизация GitHub Actions — это про кэш, параллельность и минимизацию накладных расходов. Даже простые изменения могут ускорить пайплайн в 2–3 раза. А главное — вы перестаёте платить за простой.


🔥 Ресурсы:
- Официальная дока по кэшу https://docs.github.com/en/actions/using-workflows/caching-dependencies-to-speed-up-workflows


#devops #девопс

Подпишись 👉@i_DevOps
👍6
Dokploy — Самый простой способ развернуть и управлять вашими контейнерами

Dokploy — это open-source инструмент для деплоя и управления контейнерами, разработанный для упрощения процессов CI/CD и DevOps. Он позволяет разработчикам легко развёртывать, управлять и масштабировать приложения без необходимости писать сложные скрипты или конфигурации.

Возможности:
- 🚀 Быстрый деплой контейнеров
- 🔄 Автоматическое обновление на основе webhook’ов
- 🧩 Простая интеграция с GitHub
- 🔒 Безопасное хранение переменных окружения
- 📦 Поддержка множества приложений
- 🛠️ Web UI и CLI для управления

Как это работает:
1. Подключаете свой репозиторий GitHub.
2. Dokploy следит за изменениями и автоматически деплоит ваше приложение.
3. Управляете всем через простой UI или CLI.

Цель проекта — дать каждому разработчику простой и эффективный способ доставки своего кода в прод.

https://github.com/dokploy/dokploy

#devops #девопс

Подпишись 👉@i_DevOps
👍2
👩‍💻 Docker - лучший обучающий канал по Devops.

С помощью картинок и коротких видео даже новички начнут применять продвинутые инструменты разработки и использовать Docker.

Стоит подписаться: t.me/DevopsDocker
Please open Telegram to view this post
VIEW IN TELEGRAM
👍64🔥3
Что такое userspace, kernelspace? Чем они отличаются?

Под пользовательским пространством понимается весь код операционной системы, который находится вне ядра.

Большинство Unix-подобных операционных систем (включая Linux) поставляются с разнообразными предустановленными утилитами, средствами разработки и графическими инструментами — это все приложения пространства пользователя.

Все пользовательские приложения (и контейнеризированные, и нет) при работе используют различные данные, но где эти данные хранятся?

Ядро обеспечивает абстракцию для безопасности, оборудования и внутренних структур данных. Например, системный вызов open() используется для получения дескриптора файла в Python, C, Ruby и других языках программирования. Вряд ли бы вы хотели, чтобы ваша программа работала с XFS на уровне битов, поэтому ядро предоставляет системные вызовы и работает с драйверами. Фактически этот системный вызов настолько распространен, что является частью библиотеки POSIX .

Краткое определение:

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

И чтобы работать приложения взаимодествуют через интерфейс, которое называется системным вызовом.

#devops #девопс

Подпишись 👉@i_DevOps
👍3
CI/CD пайплайны на стероидах: 5 фишек для ускорения сборок 🚀

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


1. Кэширование зависимостей — must have
Кэшируйте node_modules, .m2, Docker-слои или Python virtualenv.
В GitHub Actions:

- uses: actions/cache@v3
with:
path: ~/.npm
key: ${{ runner.os }}-npm-${{ hashFiles('**/package-lock.json') }}


2. Matrix strategy для параллельных задач
Разбейте тесты по окружениям, версиям или компонентам:

strategy:
matrix:
python: [3.9, 3.10]


3. Docker Layer Caching (DLC)
В GitLab CI включайте DLC:

variables:
DOCKER_DRIVER: overlay2
DOCKER_TLS_CERTDIR: ""
services:
- docker:dind


4. Пропускайте джобы при отсутствии изменений
Нет изменений в директории — не триггери билд. В GitHub Actions:

on:
push:
paths:
- 'src/**'
- '!docs/**'


5. Self-hosted runners для тяжёлых задач
Сильная машина с нужными зависимостями сэкономит десятки минут. Плюс — контроль среды и логирования.


Вывод:
Оптимизация CI/CD — это не про магию, а про дисциплину: кэш, параллелизм, условные шаги и правильные раннеры. Регулярно профилируйте пайплайны и фиксируйте bottlenecks.

#devops #девопс

Подпишись 👉@i_DevOps
👍51
#vacancy #DevOps #fulltime #вакансия #москва

DevOps

Локация: Москва
ЗП: 200к-350к net
Занятость: Полная, Гибридный формат
Оформление: ТК РФ
Компания: Федеральное Медико-биологическое агентство

ЦСП ФМБА занимается научными исследованиями связанными с геномом человека и анализом полученных данных.
Группа разработки создает внутренние сервисы для автоматизации движения, обработки и распределенного хранения больших объемов данных.

Требования:

•Опыт работы с Kubernetes обязателен
•Уверенные знания Linux, систем виртуализации и контейнеризации
•Опыт реализации CI/CD, большой опыт работы с Ansible и Git
•понимание работы web-серверов, балансировщиков и брокеров сообщений (на примере Nginx, Kafka)
•Понимание работы сетей и распределенных систем
•Опыт настройки и использования систем мониторинга: Zabbix, Grafana, Prometheus, ELK Stack
•Понимание процессов ITSM
•Законченное высшее образование


Чем предстоит заниматься:

•Настройка и последующая поддержка процессов CI/CD внутренних и публичных сервисов в различных окружениях
•Обеспечение непрерывной работоспособности и доступности сервисов
•Мониторинг систем, оптимизация производительности приложений и инфраструктуры, траблшутинг
•Настройка и управление Kubernetes
•Документирование процессов и систем
•Выстраивание процессов работы с командой разработки, командой данных, системными администраторами, Service Desk

Стек:
•Ubuntu, ALT Linux, Oracle
•Git, Gitlab-CI, Ansible, Terraform, Molecule
•Docker, Kubernetes
•Nginx, Haproxy, Traefik, Hashicorp Vault, MinioS3, Harbor, Consul, Postgres, Mariadb, Kafka
•Grafana, ELK, Prometheus, Loki, Victoria Metrics, Zabbix
•Bash, Python

Мы предлагаем:

•Оформление по ТК РФ.
•Работа в команде профессионалов на стыке передовых ИТ и науки. Мы работаем с Big Data и ML, у нас собственный корпоративный ЦОД.
•Только современное оборудование для рабочих мест.
•Прикрепление к корпоративной поликлинике.
•Возможность профессионального роста, обучение.
•График работы 5/2, гибрид, плавающее начало рабочего дня

Резюме отправлять: @ddsh_kl
1🔥1
Kubernetes: секреты быстрого rollback без боли и даунтайма

🔄 Rollback — неотъемлемая часть стабильного продакшена. Но сколько раз он превращался в хаос? Рассмотрим, как грамотно настроить откат в Kubernetes, чтобы не терять трафик, не ловить панику и не тратить часы на ручное восстановление.


🔹 1. Стратегия деплоя имеет значение

По умолчанию Deployment использует стратегию RollingUpdate. Это безопасно, но не всегда быстро. Убедись, что параметры maxUnavailable и maxSurge оптимальны:


strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 0


➡️ Это даст zero downtime, но при большом количестве реплик откат будет медленным. Подстрой под нагрузку.


🔹 2. Используй kubectl rollout undo

Kubernetes хранит предыдущие ReplicaSets, так что простой rollback — дело одной команды:


kubectl rollout undo deployment my-app


Проверь текущую ревизию:


kubectl rollout history deployment my-app


📝 Храни истории изменений в git — манифесты должны быть version-controlled.


🔹 3. Хелм под капотом? Настрой helm rollback

Если ты используешь Helm, rollback проще:


helm rollback my-release 1


❗️Важно: иногда rollback не возвращает ConfigMap или Secret, если они были изменены. Используй флаг --recreate-pods или закладывай изменения в values.yaml через hash-аннотации.


🔹 4. Прогревай rollback заранее

На preprod окружении сделай dry-run откатов. Проверь:

- есть ли живая предыдущая ревизия
- не изменились ли зависимости (например, база данных)
- как себя ведёт app после downgrade


🔹 5. Автоматизируй возврат

Сценарий: новая версия падает по хелсчекам. Вместо ручного вмешательства — automation:

- Настрой alertmanager на провал readiness/liveness
- Свяжи с Argo Rollouts или Spinnaker, чтобы триггерить rollback автоматически


Вывод: грамотный rollback — это не кнопка “назад”, а часть CI/CD культуры.

Обеспечь:

- контроль версий манифестов
- мониторинг после деплоя
- rollback как часть стратегии, а не костыль


#devops #девопс

Подпишись 👉@i_DevOps
👍112
HULL - Helm Uniform Layer Library

Этот репозиторий содержит библиотечную диаграмму Helm под названием HULL. Она предназначена для упрощения создания, поддержки и настройки объектов Kubernetes в Helm-диаграммах и может быть добавлена к любой Helm-диаграмме в качестве дополнения для расширения функциональности без риска нарушения существующих конфигураций Helm.

Сама диаграмма и вся связанная с ней документация находятся в папке hull, которая является корневой директорией библиотечной Helm-диаграммы HULL.

https://github.com/vidispine/hull

#devops #девопс

Подпишись 👉@i_DevOps
👍5
Kubernetes: правильный подход к ресурсным лимитам и requests

🔧 Часто недооценённая, но критичная тема для стабильности и производительности кластеров.


🎯 Зачем это важно?
Неверные значения requests и limits приводят либо к перерасходу ресурсов, либо к OOM, Throttling и подам, которые бесконечно перезапускаются. Особенно больно это бьёт по продакшену.


🚀 Как правильно настраивать ресурсы:

1. Понимай разницу между requests и limits:
- requests — это гарантированный минимум, который получит контейнер.
- limits — это максимум, выше которого контейнер не сможет использовать (CPU throttling или OOMKill для памяти).

2. CPU — без жестких лимитов:
- Лучше не указывать limits.cpu, чтобы избежать throttling.
- Но обязательно ставь requests.cpu, чтобы kube-scheduler мог правильно распланировать нагрузку.

3. Memory — всегда с лимитом:
- Память не отбирается — контейнер либо получает всю, либо OOM.
- Обязательно ставь и requests.memory, и limits.memory.

4. Используй VPA (Vertical Pod Autoscaler):
- Он поможет подобрать адекватные значения ресурсов на основе истории.
- ⚠️ На проде использовать осторожно — часто в "recommendation only" режиме.

5. Метрики в помощь:
- Используй kubectl top, metrics-server, Prometheus/Grafana для анализа потребления.
- Наблюдай за container_cpu_usage_seconds_total, container_memory_usage_bytes.

6. Профилируй и оптимизируй:
- Легковесный nginx или sidecar не должен просить 500Mi памяти.
- Java-приложение без указанных лимитов съест весь узел.


🧠 Вывод:
Грамотно выставленные ресурсы — это баланс между надёжностью и эффективным использованием нод. Не копируй requests/limits вслепую из интернета — мерь, анализируй, настраивай под свой ворклоад.


#devops #девопс

Подпишись 👉@i_DevOps
👍82
This media is not supported in your browser
VIEW IN TELEGRAM
Cilicon - это приложение для macOS, использующее фреймворк виртуализации Apple для создания, предоставления и запуска эфемерных виртуальных машин CI с производительностью, близкой к нативной. В настоящее время оно поддерживает Github Actions, Buildkite Agent, GitLab Runner и произвольные скрипты.

В зависимости от ваших настроек, вы сможете запустить свой собственный CI в считанные минуты 🚀.


https://github.com/traderepublic/Cilicon

#devops #девопс

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