Обычно pipeline в GitLab CI включает следующие стадии:
- build — сборка приложения или зависимостей
- test — выполнение unit/integration тестов
- lint/code-quality — проверка качества кода
- package — упаковка приложения в артефакт (например, Docker-образ)
- deploy — развёртывание на окружение
- cleanup — удаление временных файлов, очистка после деплоя
Конкретные стейджи зависят от проекта, но выше — наиболее распространённый порядок.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
7🔥9👍4
Helm-чарты должны быть версионированы, чтобы отслеживать изменения и управлять развертываниями.
Версии чарта (
Chart.yaml
) Версии приложения (
appVersion
) Репозиторий Helm (
helm repo
) Git-теги и CI/CD
Каждый Helm-чарт содержит
Chart.yaml
, где указывается версия чарта. yaml
apiVersion: v2
name: my-app
description: Helm chart for my application
version: 1.2.3
appVersion: 2.0.1
Helm-чарты можно хранить в локальном или удаленном репозитории.
sh
helm package my-chart/
Обновить индекс в репозитории
sh
helm repo index .
Добавить новый чарт в Helm-репозиторий
sh
helm repo add my-repo https://charts.example.com
helm push my-app-1.2.3.tgz my-repo
Обычно чарты хранятся в Git, и версии обновляются автоматически через CI/CD.
Пример автоматического увеличения версии (
version
) в Chart.yaml
через helm/chart-releaser-action
yaml
name: Release Helm Chart
on:
push:
tags:
- 'v*'
jobs:
release:
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v3
- name: Set up Helm
uses: azure/setup-helm@v3
with:
version: 'latest'
- name: Package Helm Chart
run: helm package my-chart/
- name: Upload to Helm Repo
uses: helm/chart-releaser-action@v1
Чтобы развернуть определенную версию Helm-чарта, указываем
--version
sh
helm install my-app my-repo/my-app --version 1.2.3
Или обновить до новой версии:
sh
helm upgrade my-app my-repo/my-app --version 1.2.4
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍3
Разделяемая память (/dev/shm, shmget, mmap) — используется для IPC между процессами.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2💊1
Это команда в системе контроля версий Git, которая позволяет выбрать отдельные коммиты из одной ветки и применить их к другой ветке. Это полезно, когда вы хотите перенести конкретные изменения (коммиты) в текущую ветку, не выполняя слияние всей ветки.
Когда нужно перенести конкретные исправления или функции из одной ветки в другую, не сливая все изменения из исходной ветки.
Когда найденное исправление в одной ветке нужно срочно применить в другой, например, из ветки разработки в ветку релиза.
Когда слияние всей ветки может привести к конфликтам или нежелательным изменениям,
cherry-pick
позволяет аккуратно перенести только нужные коммиты.Перенос одного коммита из другой ветки.
# Переключитесь на ветку, куда вы хотите применить изменения
git checkout target-branch
# Выполните cherry-pick коммита
git cherry-pick <commit-hash>
Перенос нескольких коммитов из другой ветки.
# Переключитесь на ветку, куда вы хотите применить изменения
git checkout target-branch
# Выполните cherry-pick нескольких коммитов
git cherry-pick <commit-hash-1> <commit-hash-2> <commit-hash-3>
Перенос диапазона коммитов из другой ветки.
# Переключитесь на ветку, куда вы хотите применить изменения
git checkout target-branch
# Выполните cherry-pick диапазона коммитов
git cherry-pick <start-commit-hash>..<end-commit-hash>
git add <filename>
cherry-pick
git cherry-pick --continue
Если вы хотите прервать процесс
cherry-pick
, можно использовать командуgit cherry-pick --abort
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
- Использовать индексы на полях фильтрации.
- Денормализация или кэширование популярных данных.
- Разбивка на шарды или партиции.
- Чтение batch-ами, а не всё сразу.
- Оптимизация запросов, EXPLAIN PLAN.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Теги в Ansible позволяют запускать только определенные задачи или роли, а не весь плейбук. Это ускоряет выполнение и упрощает управление конфигурацией.
если плейбук содержит много шагов, можно выполнить только нужные.
например, отдельно установка, обновление, настройка сервиса.
ускорение развертывания, выполняя только измененные задачи.
Простой пример – установка и перезапуск Nginx
yaml
- name: Установить Nginx
apt:
name: nginx
state: present
tags: install
- name: Перезапустить Nginx
service:
name: nginx
state: restarted
tags: restart
Запуск только установки (
install
) sh
ansible-playbook playbook.yml --tags install
Запуск только перезапуска (
restart
) sh
ansible-playbook playbook.yml --tags restart
Если у вас несколько ролей, можно запускать только нужную:
yaml
- hosts: all
roles:
- { role: nginx, tags: web }
- { role: database, tags: db }
Запуск только роли
database
sh
ansible-playbook playbook.yml --tags db
Можно пропустить выполнение определенных задач
sh
ansible-playbook playbook.yml --skip-tags restart
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
- Использовать pipelines only for MRs:
- only:
- merge_requests
- Включить проверки на наличие:
- mr.labels, mr.title, mr.assignee.
- Автоматизировать через .gitlab-ci.yml с rules и only.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
💊8
Эти три термина относятся к управлению надежностью и качеством IT-сервисов. Они помогают определить, измерить и гарантировать уровень обслуживания пользователей.
SLI – это метрика, которая показывает, насколько хорошо работает сервис.
- Доступность (например, uptime 99.9%)
- Время ответа API (например, менее 200 мс)
- Ошибки запросов (например, не более 1% 5xx ошибок)
SLO – это цель, которую компания ставит для SLI.
Доступность 99.9% сервиса в месяц.
Среднее время ответа API ≤ 200 мс.
SLA – это официальное соглашение между клиентом и провайдером сервиса, которое описывает обязательства и штрафы за их невыполнение.
- Если доступность меньше 99.9%, клиент получает возврат денег.
- Если среднее время ответа API больше 500 мс, клиент получает скидку.
SLI (метрика) → измеряет, насколько хорош сервис.
SLO (цель) → устанавливает, каким должен быть сервис.
SLA (договор) → фиксирует обязательства и штрафы.
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
- AWS — лидер по функциональности;
- Azure — хорош для интеграции с Microsoft;
- GCP — оптимизирован под Big Data и AI;
- Также: IBM Cloud, Oracle Cloud, DigitalOcean, Hetzner, Yandex Cloud.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
💊16🔥2
Это визуальные панели, на которых отображаются метрики, логи и данные, собранные из различных источников. Они используются для мониторинга состояния систем, приложений и инфраструктуры, предоставляя наглядное представление в виде графиков, диаграмм, таблиц и других визуализаций.
Позволяют наблюдать за ключевыми показателями производительности (KPI) систем в реальном времени. Например, загрузка CPU, использование памяти, число запросов в секунду.
Дешборды помогают быстро находить аномалии или сбои. Например, резкий рост времени отклика или падение уровня доступности.
Объединяют данные из разных источников в одном месте (Prometheus, Elasticsearch, Loki, InfluxDB, PostgreSQL и др.). Упрощают анализ данных благодаря визуализации.
Можно создавать персонализированные панели под конкретные задачи или роли (разработчики, SRE, менеджеры).
Каждая панель отображает отдельный набор данных в определенном виде (график, таблица, heatmap, текст и др.). Пример: График использования памяти на сервере.
Данные, отображаемые на панели, поступают из определённого источника (Prometheus, Elasticsearch, MySQL и т.д.). Grafana поддерживает множество интеграций.
Динамические параметры, которые позволяют изменять отображаемые данные без необходимости редактировать панель. Пример: Переключение между разными серверами или метриками.
Настраиваемые уведомления, которые активируются при достижении определённого порога метрики. Пример: Отправка уведомления в Slack при увеличении загрузки CPU выше 90%.
Обозначают ключевые события на графиках, например, развёртывание нового релиза.
1. Время отклика API (Response Time).
2. Число активных пользователей (Active Users).
3. Использование ресурсов (CPU, RAM).
4. Ошибки HTTP (5xx, 4xx).
- Prometheus для метрик.
- Loki для логов.
- MySQL для аналитических данных.
- Выбор региона (например, Европа, США).
- Фильтрация по микросервисам.
В интерфейсе Grafana создайте новый дешборд. Добавьте панель и выберите тип визуализации (график, таблица, бар-чарт и т.д.).
Укажите источник данных для каждой панели. Например, Prometheus:
rate(http_requests_total[5m])
.Добавьте переменные, чтобы дешборд был динамичным.
Настройте триггеры для уведомлений (например, при высоком времени отклика).
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
1. Использовать имя сервиса ingress-контроллера (ingress-nginx-controller, например).
2. Обратиться через DNS:
3. curl http://<ingress-hostname>.<namespace>.svc.cluster.local
4. Или использовать внутренний адрес Ingress через curl/wget прямо по его ClusterIP.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥2💊2
Чтобы посмотреть логи работающего контейнера в Docker, используйте команду:
docker logs <container_id>
или
docker logs <container_name>
следить за логами в реальном времени (как
tail -f
): docker logs -f <container_id>
показать только последние N строк:
docker logs --tail 100 <container_id>
добавить метки времени:
docker logs -t <container_id>
Если контейнер запущен через
docker-compose
, можно использовать: docker-compose logs -f
или для конкретного сервиса:
docker-compose logs -f <service_name>
journalctl -u docker -f
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
firewalld — это высокоуровневая оболочка над iptables или nftables, предоставляющая динамическое управление зонной политикой. iptables — низкоуровневый инструмент, требующий ручной настройки.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8💊1
Она идёт в комплекте с Python и включает всё необходимое: работу с файлами, сетью, регулярными выражениями, математикой и т. д.
работа с файловой системой
доступ к системным параметрам
регулярные выражения
математика
работа с датами
парсинг JSON
логирование
асинхронность
встроенный HTTP-сервер
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Forwarded from easyoffer
Напоминаю, что в честь релиза запускаем акцию.
Первые 500 покупателей получат:
🚀 Скидку 50% на PRO тариф на 1 год
🎁 Подарок ценностью 5000₽ для тех, кто подписан на этот канал
🔔 Подпишитесь на этот канал: https://t.me/+b2fZN17A9OQ3ZmJi
В нем мы опубликуем сообщение о релизе в первую очередь
Please open Telegram to view this post
VIEW IN TELEGRAM
Docker Compose поддерживает использование JSON-файлов вместо стандартного YAML-файла. Формат JSON полностью совместим с YAML, так как YAML является надмножеством JSON. Для этого достаточно создать JSON-файл с описанием конфигурации контейнеров и передать его с помощью опции
-f
.Файл должен содержать описание сервисов в формате JSON. Например, вместо YAML
version: "3.9"
services:
web:
image: nginx
ports:
- "80:80"
В формате JSON будет так
{
"version": "3.9",
"services": {
"web": {
"image": "nginx",
"ports": ["80:80"]
}
}
}
Используйте флаг
-f
, чтобы указать Docker Compose, какой файл использоватьdocker-compose -f docker-compose.json up
Вы можете проверить статус контейнеров, как обычно:
docker-compose -f docker-compose.json ps
JSON часто используется в API, CI/CD-пайплайнах и других инструментах, которые могут генерировать конфигурации автоматически.
JSON легко парсить программно, что может быть полезно в скриптах и интеграциях.
Некоторые команды и проекты могут предпочитать JSON как более строгий и распространенный формат.
docker-compose.json
{
"version": "3.8",
"services": {
"app": {
"image": "python:3.9",
"volumes": ["./app:/app"],
"working_dir": "/app",
"command": "python app.py"
}
}
}
docker-compose -f docker-compose.json up
Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
- PV (PersistentVolume) — ресурс, предоставляющий хранилище в кластере;
- PVC (PersistentVolumeClaim) — запрос пода на нужный объём хранилища и его параметры.
Это механизм абстракции и управления постоянным хранилищем.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Это область на диске, которую операционная система использует как виртуальную память, если основной оперативной памяти (RAM) не хватает. Swap может быть представлен в виде:
Swap может быть выделен как отдельный раздел диска. Он создается во время установки системы или вручную и не имеет файловой системы (тип раздела —
swap
).Swap может быть представлен как обычный файл в файловой системе (например,
/swapfile
).Используйте команды для проверки текущей конфигурации:
Проверка swap через
swapon
swapon --show
Пример вывода
NAME TYPE SIZE USED PRIO
/dev/sda2 partition 4G 1G -2
/swapfile file 2G 0B -3
- NAME: Устройство или файл, используемый для swap.
- TYPE: Указывает, является ли swap разделом или файлом.
- SIZE: Размер swap.
- USED: Сколько swap в данный момент используется.
- PRIO: Приоритет использования (меньшее значение — меньший приоритет).
Проверка через
free
free -h
Если swap является разделом, он обычно прописан в
/etc/fstab
cat /etc/fstab | grep swap
Пример
/dev/sda2 none swap sw 0 0
Если swap — это раздел, то он отображается как устройство, например,
/dev/sda2
. Если swap — это файл, его путь будет, например, /swapfile
.Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Подходы:
- Rolling Update — постепенное обновление экземпляров, без полной остановки.
- Blue-Green Deployment — параллельная версия (green) подготавливается и потом переключение трафика.
- Canary Deployment — новая версия выкатывается на часть пользователей.
- Load balancer health checks — пока экземпляр не готов, трафик не идёт.
Важно: не прерывать соединения пользователей и обеспечивать совместимость между версиями.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2