DevOps Tips&Tricks (AvantIT)
79 subscribers
115 photos
4 files
73 links
Комплексное DevOps-сопровождение 24/7 | SLA 15 минут.

Помогаем разработчикам эффективно использовать контейнеры, K8s и технологии для реализации CI/CD, а бизнесу — быстро масштабироваться.

Бесплатная техническая консультация
https://avant-it.ru/
Download Telegram
Настройка HAProxy (Более осмысленная, чем обычно ;))

Если хочется не просто «чтобы работало», а понимать, почему именно так и зачем это вообще всё — вот отличный разбор от Ostrovok:
https://habr.com/ru/companies/ostrovok/articles/438966/

Здесь не только конфиг с примерами, а подход к проектированию архитектуры на основе HAProxy — с балансировкой, приоритетами, хелсчеками и продакшен-добром.

Хорошо зайдёт тем, кто хочет не просто копипастить, а понимать и контролировать.

#haproxy #infrastructure #devops #балансировка #habr
🔥2
Генерация клиента по OpenApi спецификации

С помощью https://github.com/openapitools/openapi-generator можно сгенерировать клиент для любого языка по openapi спецификации апи

Делается это коммандой: docker run --rm -v "${PWD}:/local" openapitools/openapi-generator-cli:v7.9.0 generate -i HTTP_LINK_TO_OPEN_API_SPEC_FILE -g LANGUAGE -o /local/out/go --skip-validate-spec

Например для C# и апи Vultr: docker run --rm -v "${PWD}:/local" openapitools/openapi-generator-cli:v7.9.0 generate -i https://api.avant-it.ru/api/v1/files/1c9c556a-bcfd-4418-9e0a-db98d3b49a60 -g csharp -o /local/out/go --skip-validate-spec

#api #openapi
🤝1
Быстрый способ преобразовать текст в речь с помощью Python

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

# Установите библиотеку (если ещё не установлена)
# pip install pyttsx3

import pyttsx3

# Инициализируем движок синтеза речи
engine = pyttsx3.init()

# Передаём фразу для озвучивания
engine.say("This is a test phrase.")

# Запускаем движок
engine.runAndWait()


#Python #TextToSpeech
🔥2🫡2
Настраиваем Nginx для проксирования MinIO с поддержкой WebSocket

Если вы используете Nginx для маршрутизации трафика к MinIO и не видите список файлов в бакетах через веб-интерфейс — скорее всего, проблема в отсутствии поддержки WebSocket в конфигурации.

Чтобы это исправить, необходимо добавить пару строк в блок location:

proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";


В результате весь server-блок будет выглядеть примерно так:

server {
listen 443 ssl;
server_name minio.example.xyz;

ssl_certificate /etc/nginx/ssl/minio.example.xyz.crt;
ssl_certificate_key /etc/nginx/ssl/minio.example.xyz.key;

ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;

allow 10.0.0.0/8;
allow 172.16.0.0/12;
allow 192.168.0.0/16;
deny all;

location / {
proxy_pass https://k8s;

proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Port '443';
proxy_set_header Access-Control-Allow-Origin *;

proxy_ssl_verify off;
proxy_ssl_name minio.example.xyz;
proxy_ssl_server_name on;

proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";

proxy_read_timeout 86400s;
proxy_send_timeout 86400s;
}
}


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

#minio #nginx #websocket
👍2🫡1
Uptime Kuma — крутая альтернатива UptimeRobot и Pingdom, но self-hosted и бесплатная

Uptime Kuma — это лёгкий, но мощный инструмент для мониторинга доступности сервисов. Работает из коробки, ставится через Docker за пару минут. Выглядит круто, умеет много:

- Поддерживает HTTP(s), TCP, Ping, DNS, Push
- Telegram, Slack, Discord и ещё куча способов алертов
- Красивые графики и история инцидентов
- Удобный веб-интерфейс и автообновление
- Отлично подойдёт как для pet-проекта, так и для мониторинга боевых сервисов

GitHub
Демо

#monitoring #notifications #uptime #alerts
🔥2
release-it — CLI-инструмент для релизов и версионирования

Если ты хочешь:

- автоматически обновлять версии,
- создавать changelog'и,
- пушить теги в GitLab или GitHub,
- и даже публиковать пакеты…

…тебе точно стоит попробовать release-it!

Что он умеет:

- Обновляет версию в package.json (или других файлах)
- Генерирует CHANGELOG.md на основе коммитов
- Создаёт и пушит git-теги
- Публикует на npm, GitHub, GitLab и др.
- Настраивается через .release-it.json, release-it.config.js и CLI

Пример команды:

npx release-it


#Git #CI
👍1🔥1
kubectl-switch — это простой инструмент для управления и переключения между несколькими файлами конфигурации Kubernetes. Позволяет выгрузить все kubeconfig-файлы в одну директорию и быстро переключаться между ними через CLI.

Никакой ручной правки ~/.kube/config всё делается одной командой. Особенно полезно, если у вас несколько окружений: dev, staging, production.

Ссылка на репозиторий

#kubernetes #kubeconfig
🔥5
Статья о `tofuutils/tenv` — теперь на русском языке!

Работаете с Terraform, OpenTofu, Terragrunt или Atmos? Тогда tenv станет незаменимым помощником в управлении версиями и упрощении инфраструктурной работы. Это удобный CLI-инструмент, который позволяет быстро переключаться между версиями и поддерживать чистоту окружения.

Читайте перевод на русском

#terraform #opentofu #tenv #tofuutils #terragrunt #atmos #terramate
👍2
Freelens — кроссплатформенный графический интерфейс для управления кластерами Kubernetes.

Поддерживает kubectl, Helm и kubeconfig
Работает на macOS, Linux и Windows

Репозиторий

#K8s #OpenSource
❤8
Cursor 1.0 вышел в релиз — завезли новые фишки:

— Jupyter Notebooks теперь можно редачить прямо в IDE (пока с Sonnet, но будет больше)
— BugBot для GitHub: сам находит баги в PR и предлагает фиксы
— Фоновые агенты: запускаешь задачи в фоне, можно хоть несколько сразу
— Память контекста: если сказал "не трогай модель" — Cursor запомнит
— Быстрая интеграция MCP — можно подключить сервер из списка в один клик (или свой)

Cursor всё больше похож на полноценного тиммейта в коде

#devtools #ai #cursor #github #jupyter #release
🔥5⚡2
Умное масштабирование: прогнозное управление узлами с помощью Prometheus, NestJS и Prophet

Хорошая статья с примером реализации системы, которая предсказывает нагрузку и масштабирует инфраструктуру заранее, а не в ответ на уже произошедшие пики.
В основе — связка Prometheus (сбор метрик), NestJS (обработка и API) и Prophet от Meta (модель прогнозирования временных рядов).

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

Ссылка на статью

#prometheus #nestjs #prophet #autoscaling
🔥5👍4
KubeMedic — диагностика и устранение неполадок в Kubernetes с помощью ИИ

Инструмент, который помогает находить и устранять проблемы в кластере Kubernetes.
Работает на базе LLM: вы описываете проблему в свободной форме, а KubeMedic анализирует состояние кластера и предлагает конкретные шаги по устранению.

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

Ссылка на репозиторий

#kubernetes #troubleshooting #ai #diagnostics #kubemedic
🔥3
Как добавить пользователя в Яндекс Облако:

Что-то все путаются, напишу-ка я пост чтобы пересылать его всем кому будет нужно =)

Чтобы выдавать доступы (это может делать пользователь с ролью админ) нужно сначала добавить человека в облако. А вот добавлять в облако может только его владелец и только по почте принадлежащей яндексу (гугловая НЕ подойдет). Поэтому для того чтобы выдать доступ в облако стороннему человеку нужно:

1) Добавить пользователя на странице показанной на первом скриншоте

2) После приглашения, человек привяжется к вашей организации, но почти ничего не увидит в ней, поэтому далее ему нужно выдать досту непосредственно на ресурсы. Делается это на вкладке AccessBinding по кнопке ConfigureAccess (скриншот 2)

3) Далее нажимаем на нужного человека и выдаем ему нужную роль, нажимаем Save (скриншоты 3 и 4)

4) Готово! Как человек примет приглашение на почте, у него уже будут нужные доступы (пришлашение, если не изменяет память, актуально неделю, нужно успеть)

ПС: Если вы регистрируете новый аккаунт на организацию, напишите @QTU100 в Telegram, проведу по партнерке чтобы получили кешбек)

ППС: Если интересно как выдавать доступы в S3 яндекса, поставьте плюсик, там замудренно))
👌3🔥1
Apple тихо выкатили свой "Docker"

Сразу после WWDC, без всякого шума, Apple запостила вот это.

Это их собственный инструмент для запуска Linux-контейнеров на macOS.
Называется просто — container.

Что важно:

- Написан на Swift;

- Заточен под Apple Silicon;

- Работает через лёгкие виртуалки (никакого Docker Desktop);

- Понимает обычные OCI-образы.

Смотри, как это работает тут

Пока всё выглядит как минималистичная альтернатива Docker под macOS, сделанная «по-эппловски»: без лишнего.
Интересно, во что это вырастет.

#OCI #AppleSilicon #CLI #tooling
👍3🔥3❤1