DevOps | Вопросы собесов
5.16K subscribers
28 photos
793 links
Cайт easyoffer.ru
Реклама @easyoffer_adv
ВП @easyoffer_vp

Тесты t.me/+2P7cpjeyfDVlZjcy
Вакансии t.me/+i5KFWEWJ21hhYWEy
Download Telegram
🤔 Какие стейджи входят в пайп (CI/CD pipeline)?

Обычно 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

🚩Версия чарта (`Chart.yaml`)

Каждый Helm-чарт содержит Chart.yaml, где указывается версия чарта.
yaml  
apiVersion: v2
name: my-app
description: Helm chart for my application
version: 1.2.3
appVersion: 2.0.1


🚩Хранение и обновление чарта в репозитории Helm

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

Обычно чарты хранятся в 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
🤔 Что такое shared memory и зачем она?

Разделяемая память (/dev/shm, shmget, mmap) — используется для IPC между процессами.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2💊1
🤔 Что такое cherry pick?

Это команда в системе контроля версий Git, которая позволяет выбрать отдельные коммиты из одной ветки и применить их к другой ветке. Это полезно, когда вы хотите перенести конкретные изменения (коммиты) в текущую ветку, не выполняя слияние всей ветки.

🚩Когда используется

🟠Применение отдельных изменений
Когда нужно перенести конкретные исправления или функции из одной ветки в другую, не сливая все изменения из исходной ветки.
🟠Быстрое исправление ошибок
Когда найденное исправление в одной ветке нужно срочно применить в другой, например, из ветки разработки в ветку релиза.
🟠Избежание сложного слияния
Когда слияние всей ветки может привести к конфликтам или нежелательным изменениям, cherry-pick позволяет аккуратно перенести только нужные коммиты.

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

🟠Простого `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>


🚩Разрешение конфликтов

1⃣Разрешите конфликты в файлах.

2⃣Добавьте изменения в индекс
git add <filename>   


3⃣Завершите процесс 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?

Теги в Ansible позволяют запускать только определенные задачи или роли, а не весь плейбук. Это ускоряет выполнение и упрощает управление конфигурацией.

🚩Когда использовать теги?

🟠Запуск только нужных задач
если плейбук содержит много шагов, можно выполнить только нужные.
🟠Разделение задач по категориям
например, отдельно установка, обновление, настройка сервиса.
🟠Оптимизация CI/CD
ускорение развертывания, выполняя только измененные задачи.

🚩Как использовать теги?

🟠Теги в задачах (`tasks`)
Простой пример – установка и перезапуск 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



🟠Теги в ролях (`roles`)
Если у вас несколько ролей, можно запускать только нужную:
yaml  
- hosts: all
roles:
- { role: nginx, tags: web }
- { role: database, tags: db }



Запуск только роли database
sh  
ansible-playbook playbook.yml --tags db



🟠Исключение тегов (`--skip-tags`)
Можно пропустить выполнение определенных задач
sh  
ansible-playbook playbook.yml --skip-tags restart


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
🤔 Как проверять merge request в бесплатном GitLab?

- Использовать 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
🤔 Что такое SLA, SLO, SLI?

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

🚩SLI (Service Level Indicator) – Показатель уровня сервиса

SLI – это метрика, которая показывает, насколько хорошо работает сервис.
- Доступность (например, uptime 99.9%)
- Время ответа API (например, менее 200 мс)
- Ошибки запросов (например, не более 1% 5xx ошибок)

🚩SLO (Service Level Objective) – Целевой уровень сервиса

SLO – это цель, которую компания ставит для SLI.
Доступность 99.9% сервиса в месяц.
Среднее время ответа API ≤ 200 мс.

🚩SLA (Service Level Agreement) – Соглашение об уровне сервиса

SLA – это официальное соглашение между клиентом и провайдером сервиса, которое описывает обязательства и штрафы за их невыполнение.
- Если доступность меньше 99.9%, клиент получает возврат денег.
- Если среднее время ответа API больше 500 мс, клиент получает скидку.

🚩Как они связаны?

SLI (метрика) → измеряет, насколько хорош сервис.
SLO (цель) → устанавливает, каким должен быть сервис.
SLA (договор) → фиксирует обязательства и штрафы.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
🤔 Какие Cloud есть?

- 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
🤔 Что такое дешборды в графане?

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

🚩Почему нужны дешборды в Grafana?

🟠Мониторинг в реальном времени
Позволяют наблюдать за ключевыми показателями производительности (KPI) систем в реальном времени. Например, загрузка CPU, использование памяти, число запросов в секунду.

🟠Диагностика и устранение проблем
Дешборды помогают быстро находить аномалии или сбои. Например, резкий рост времени отклика или падение уровня доступности.

🟠Простота анализа данных
Объединяют данные из разных источников в одном месте (Prometheus, Elasticsearch, Loki, InfluxDB, PostgreSQL и др.). Упрощают анализ данных благодаря визуализации.

🟠Настраиваемость и удобство
Можно создавать персонализированные панели под конкретные задачи или роли (разработчики, SRE, менеджеры).

🚩Основные элементы дешборда

🟠Панели (Panels)
Каждая панель отображает отдельный набор данных в определенном виде (график, таблица, heatmap, текст и др.). Пример: График использования памяти на сервере.

🟠Источник данных (Data Source)
Данные, отображаемые на панели, поступают из определённого источника (Prometheus, Elasticsearch, MySQL и т.д.). Grafana поддерживает множество интеграций.

🟠Переменные (Variables)
Динамические параметры, которые позволяют изменять отображаемые данные без необходимости редактировать панель. Пример: Переключение между разными серверами или метриками.

🟠Алёрты (Alerts)
Настраиваемые уведомления, которые активируются при достижении определённого порога метрики. Пример: Отправка уведомления в Slack при увеличении загрузки CPU выше 90%.

🟠Теги и аннотации
Обозначают ключевые события на графиках, например, развёртывание нового релиза.

🚩Пример использования дешборда

🟠Панели
1. Время отклика API (Response Time).
2. Число активных пользователей (Active Users).
3. Использование ресурсов (CPU, RAM).
4. Ошибки HTTP (5xx, 4xx).
🟠Источники данных
- Prometheus для метрик.
- Loki для логов.
- MySQL для аналитических данных.
🟠Переменные
- Выбор региона (например, Европа, США).
- Фильтрация по микросервисам.

🚩Создание дешборда в Grafana

🟠Добавление панели
В интерфейсе Grafana создайте новый дешборд. Добавьте панель и выберите тип визуализации (график, таблица, бар-чарт и т.д.).

🟠Настройка источника данных
Укажите источник данных для каждой панели. Например, Prometheus: rate(http_requests_total[5m]).

🟠Настройка фильтров и переменных
Добавьте переменные, чтобы дешборд был динамичным.

🟠Добавление алертов
Настройте триггеры для уведомлений (например, при высоком времени отклика).

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Как провести трафик к ingress изнутри кластера?

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>


🚩Основные флаги

🟠`-f` (follow)
следить за логами в реальном времени (как tail -f):

  docker logs -f <container_id>


🟠`--tail N`
показать только последние N строк:

  docker logs --tail 100 <container_id>


🟠`-t` (timestamps)
добавить метки времени:
docker logs -t <container_id>


🚩Просмотр логов через `docker-compose`

Если контейнер запущен через docker-compose, можно использовать:
docker-compose logs -f


или для конкретного сервиса:
docker-compose logs -f <service_name>


🚩Логи для контейнера с systemd (если Docker пишет в `journald`)

journalctl -u docker -f


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
🤔 Чем firewalld отличается от iptables?

firewalld — это высокоуровневая оболочка над iptables или nftables, предоставляющая динамическое управление зонной политикой. iptables — низкоуровневый инструмент, требующий ручной настройки.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8💊1
🤔 Какая самая главная питоновская библиотека?

Она идёт в комплекте с Python и включает всё необходимое: работу с файлами, сетью, регулярными выражениями, математикой и т. д.

🚩Примеры важных модулей из `stdlib`

🟠`os`
работа с файловой системой
🟠`sys`
доступ к системным параметрам
🟠`re`
регулярные выражения
🟠`math`
математика
🟠`datetime`
работа с датами
🟠`json`
парсинг JSON
🟠`logging`
логирование
🟠`asyncio`
асинхронность
🟠`http.server`
встроенный HTTP-сервер

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
🤔 Какой минимальной сущностью обуславливается существование Docker-контейнера?

Это слой образа (image layer), который содержит файловую систему контейнера и его зависимости.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Forwarded from easyoffer
Официальный релиз easyoffer 2.0 состоится уже в течение нескольких дней.

Напоминаю, что в честь релиза запускаем акцию.

Первые 500 покупателей получат:

🚀 Скидку 50% на PRO тариф на 1 год
🎁 Подарок ценностью 5000₽ для тех, кто подписан на этот канал

🔔 Подпишитесь на этот канал: https://t.me/+b2fZN17A9OQ3ZmJi
В нем мы опубликуем сообщение о релизе в первую очередь
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Как в docker compose вместо yaml файла использовать json файл?

Docker Compose поддерживает использование JSON-файлов вместо стандартного YAML-файла. Формат JSON полностью совместим с YAML, так как YAML является надмножеством JSON. Для этого достаточно создать JSON-файл с описанием конфигурации контейнеров и передать его с помощью опции -f.

🚩Шаги по использованию

🟠Создайте JSON-файл конфигурации
Файл должен содержать описание сервисов в формате JSON. Например, вместо YAML
version: "3.9"
services:
web:
image: nginx
ports:
- "80:80"


В формате JSON будет так
{
"version": "3.9",
"services": {
"web": {
"image": "nginx",
"ports": ["80:80"]
}
}
}


🟠Запустите Docker Compose с этим файлом
Используйте флаг -f, чтобы указать Docker Compose, какой файл использовать
docker-compose -f docker-compose.json up


🟠Проверка работы
Вы можете проверить статус контейнеров, как обычно:
docker-compose -f docker-compose.json ps


🚩Почему использовать JSON?

🟠Совместимость
JSON часто используется в API, CI/CD-пайплайнах и других инструментах, которые могут генерировать конфигурации автоматически.
🟠Простота обработки
JSON легко парсить программно, что может быть полезно в скриптах и интеграциях.
🟠Стандартизация
Некоторые команды и проекты могут предпочитать JSON как более строгий и распространенный формат.

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

1⃣Создайте файл docker-compose.json
{
"version": "3.8",
"services": {
"app": {
"image": "python:3.9",
"volumes": ["./app:/app"],
"working_dir": "/app",
"command": "python app.py"
}
}
}


2⃣Запустите
docker-compose -f docker-compose.json up


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
🤔 Что такое PV и PVC?

- PV (PersistentVolume) — ресурс, предоставляющий хранилище в кластере;
- PVC (PersistentVolumeClaim) — запрос пода на нужный объём хранилища и его параметры.
Это механизм абстракции и управления постоянным хранилищем.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
🤔 Где находится swap какое устройство использует?

Это область на диске, которую операционная система использует как виртуальную память, если основной оперативной памяти (RAM) не хватает. Swap может быть представлен в виде:

🚩Где находится swap?

🟠Swap-раздел
Swap может быть выделен как отдельный раздел диска. Он создается во время установки системы или вручную и не имеет файловой системы (тип раздела — swap).
🟠Swap-файл
Swap может быть представлен как обычный файл в файловой системе (например, /swapfile).

🚩Как узнать, где находится swap?

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

Проверка 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


🚩Проверка через `fstab`

Если swap является разделом, он обычно прописан в /etc/fstab
cat /etc/fstab | grep swap


Пример
/dev/sda2    none    swap    sw    0   0


🚩Какое устройство использует swap?

Если swap — это раздел, то он отображается как устройство, например, /dev/sda2. Если swap — это файл, его путь будет, например, /swapfile.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
🤔 Как деплоить приложение без потерь пользователей (Zero Downtime Deployment)?

Подходы:
- Rolling Update — постепенное обновление экземпляров, без полной остановки.
- Blue-Green Deployment — параллельная версия (green) подготавливается и потом переключение трафика.
- Canary Deployment — новая версия выкатывается на часть пользователей.
- Load balancer health checks — пока экземпляр не готов, трафик не идёт.
Важно: не прерывать соединения пользователей и обеспечивать совместимость между версиями.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2