ru
Feedback
DevOps | Вопросы собесов

DevOps | Вопросы собесов

Открыть в Telegram
5 510
Подписчики
-224 часа
-47 дней
-330 день
Архив постов
🤔 Что известно про workflow GitLab? GitLab CI/CD workflow — это последовательность стадий (stages) и заданий (jobs), определённых в .gitlab-ci.yml. Стадии выполняются последовательно: build → test → deploy. Jobs могут выполняться параллельно внутри одной стадии. Также можно использовать правила (rules), переменные (env), артефакты и условия запуска. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Какие микросервисы можно масштабировать горизонтально? Горизонтальное масштабирование – это добавление новых экземпляров (реплик) сервиса для увеличения производительности. Оно хорошо работает для статeless (без состояния) микросервисов, где нет привязки к конкретному серверу. 🚩Какие микросервисы можно масштабировать горизонтально? 🟠Веб-серверы и API-шлюзы Примеры: Nginx, Traefik, Kong, API Gateway (AWS, GCP) Почему можно масштабировать? - Обрабатывают независимые запросы - Не требуют сохранения состояния между запросами - Легко распределяются через Load Balancer
yaml  
apiVersion: apps/v1  
kind: Deployment  
metadata:  
  name: my-api  
spec:  
  replicas: 5  
  selector:  
    matchLabels:  
      app: my-api  
  template:  
    metadata:  
      labels:  
        app: my-api  
    spec:  
      containers:  
      - name: api-container  
        image: my-api:latest  
🟠Backend-сервисы (Stateless) Примеры: REST API (FastAPI, Express, Spring Boot), gRPC-сервисы Почему можно масштабировать? Каждый запрос обрабатывается независимо Нет привязки к конкретному серверу Можно использовать Load Balancer (например, AWS ALB, Nginx)
nginx  
upstream backend {  
  server backend1:5000;  
  server backend2:5000;  
  server backend3:5000;  
}  
server {  
  listen 80;  
  location / {  
    proxy_pass http://backend;  
  }  
}  
🟠Очереди сообщений и брокеры событий Примеры: RabbitMQ, Kafka, NATS, Redis Streams Почему можно масштабировать? Сообщения разбираются разными нодами Можно увеличивать число консьюмеров Поддерживают partitioning (разделение нагрузки)
python  
from kafka import KafkaConsumer  
consumer = KafkaConsumer('my_topic', group_id='workers', bootstrap_servers='kafka:9092')  
for message in consumer:  
    process_message(message)  
🟠Кэш-сервисы (Stateless) Примеры: Redis (в режиме Cluster), Memcached Почему можно масштабировать? Каждый узел хранит часть данных Можно распределять кэш по нескольким инстансам Redis поддерживает Sharding (разбиение данных на ноды)
sh  
redis-cli --cluster create 192.168.1.1:6379 192.168.1.2:6379 192.168.1.3:6379 --cluster-replicas 1  
🚩Какие микросервисы **нельзя просто так масштабировать горизонтально?** Некоторые сервисы сохраняют состояние (stateful) и сложны в горизонтальном масштабировании: Базы данных → MySQL, PostgreSQL (нужны реплики или шардирование) Сервисы с сессиями → Например, если пользователь всегда должен попасть на тот же сервер Хранилища файлов → Например, локальное хранение логов на сервере Ставь 👍 и забирай 📚 Базу знаний

Запустите рекламу в телеграм-каналах с Яндекс Директом Перфоманс-реклама теперь в телеграм-каналах ⚡ Яндекс Директ знает, как привлечь целевую аудиторию 💰👌 Попробовать #реклама yandex.ru О рекламодателе

🤔 Как экспортёры отдают метрики? Экспортёры собирают метрики из сервисов или ОС и предоставляют их по HTTP в формате, который Prometheus может опрашивать. Они работают по модели pull, где Prometheus забирает данные сам. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

📺 База 1000+ реальных собеседований На программиста, тестировщика, аналитика, проджекта и другие IT профы. Есть собесы от ведущих компаний: Сбер, Яндекс, ВТБ, Тинькофф, Озон, Wildberries и т.д. 🎯 Переходи по ссылке и присоединяйся к базе, чтобы прокачать свои шансы на успешное трудоустройство!

🤔 Как бы вы настроили уведомления для сервисов которые находятся без интернета полностью локализованы закрыты от всего извне? Для настройки уведомлений в изолированной сети без доступа к интернету используйте локальные инструменты и системы. Основные методы включают локальные почтовые серверы, мессенджеры и системы управления инцидентами. 🚩Локальный почтовый сервер (SMTP) 1⃣Установка
sudo apt update
sudo apt install postfix   
2⃣Настройка Отредактируйте /etc/postfix/main.cf
myhostname = local.example.com
mydomain = example.com
myorigin = $mydomain
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
relay_domains = $mydestination   
3⃣Перезапуск Postfix
sudo systemctl restart postfix   
4⃣Проверка
echo "Test email" | mail -s "Test Subject" user@example.com
🚩Локальный мессенджер (Mattermost) 1⃣Установка Mattermost Следуйте [документации](https://docs.mattermost.com/install/self-managed-install.html). 2⃣Настройка Создайте каналы и пользователей. 3⃣Интеграция с мониторингом Используйте веб-хуки Mattermost для уведомлений. 🚩Системы управления инцидентами (Zabbix) 1⃣Установка Zabbix Следуйте [документации](https://www.zabbix.com/download). 2⃣Настройка Настройте хосты, триггеры и действия. 3⃣Настройка уведомлений Медиатипы: Настройте Email и SMS. Пользователи: Создайте пользователей и уведомления. 🚩Локальный стек мониторинга (Prometheus, Alertmanager) 1⃣Установка Prometheus
wget https://github.com/prometheus/prometheus/releases/download/v2.26.0/prometheus-2.26.0.linux-amd64.tar.gz
tar xvf prometheus-2.26.0.linux-amd64.tar.gz
cd prometheus-2.26.0.linux-amd64
./prometheus --config.file=prometheus.yml   
2⃣Установка Alertmanager
wget https://github.com/prometheus/alertmanager/releases/download/v0.21.0/alertmanager-0.21.0.linux-amd64.tar.gz
tar xvf alertmanager-0.21.0.linux-amd64.tar.gz
cd alertmanager-0.21.0.linux-amd64
./alertmanager --config.file=alertmanager.yml   
3⃣Настройка алертинга в Prometheus
groups:
  - name: example-alerts
    rules:
      - alert: HighCPUUsage
        expr: avg_over_time(node_cpu_seconds_total{mode="idle"}[5m]) < 20
        for: 2m
        labels:
          severity: critical
        annotations:
          summary: "High CPU usage detected"
          description: "CPU usage is above 80% for more than 2 minutes"   
4⃣Настройка Alertmanager
global:
  smtp_smarthost: 'localhost:25'
  smtp_from: 'alertmanager@local.example.com'
route:
  receiver: 'email-notifications'
receivers:
  - name: 'email-notifications'
    email_configs:
      - to: 'admin@local.example.com'
        send_resolved: true
Ставь 👍 и забирай 📚 Базу знаний

Надежные VDS-сервера в NetAngels от 73₽/месяц Подберем мощные VDS-сервер для любых задач. Техподдержка 24/7. Защита от DDoS-а
Надежные VDS-сервера в NetAngels от 73₽/месяц Подберем мощные VDS-сервер для любых задач. Техподдержка 24/7. Защита от DDoS-атак. Гибкая конфигурация. Бесплатный перенос VDS с сохранением всех данных. Выбери тариф под свои задачи: Старт (Для низкой нагрузки: хранение файлов, раздача статики и простые веб-проекты) Оптима (NVMe-диски для высокой скорости и баланс цены и производительности) Турбо (Элитный VDS на базе топового оборудования с высокочастотными процессорами) Про (Мощный VDS с гарантированными ресурсами для масштабных проектов) ТурбоПро (VDS уровня enterprise с гарантированными ядрами и высокочастотными процессорами) Ультра (Высокопроизводительный VDS для ресурсоемких проектов и корпоративных систем. В тариф включена поддержка GPU) Попробуйте VDS-сервер от NetAngels! Перейти на сайт #реклама 16+ netangels.ru О рекламодателе

🤔 Из чего состоит worker node? Worker-нода содержит: - kubelet — агент, управляющий подами. - kube-proxy — сетевое взаимодействие и балансировка. - container runtime — Docker, containerd, CRI-O. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что такое debezium? Она позволяет отслеживать изменения в базах данных (INSERT, UPDATE, DELETE) в реальном времени и передавать их в Kafka, Elasticsearch, MongoDB и другие системы. 🚩Как работает Debezium? Подключается к базе данных (PostgreSQL, MySQL, MongoDB, Oracle и др.). Слушает лог изменений (binlog, WAL, oplog и т. д.) Формирует события в формате JSON Передаёт их в Kafka или другую шину данных. 🚩Где используется? Синхронизация данных между базами Репликация данных в реальном времени Отправка изменений в аналитические системы (Elasticsearch, ClickHouse) Аудит и логирование изменений 🟠Пример работы с Kafka Запускаем Debezium Connector для PostgreSQL*
{
  "name": "inventory-connector",
  "config": {
    "connector.class": "io.debezium.connector.postgresql.PostgresConnector",
    "database.hostname": "localhost",
    "database.port": "5432",
    "database.user": "debezium",
    "database.password": "dbz",
    "database.dbname": "inventory",
    "database.server.name": "dbserver1"
  }
}
При изменении данных в таблице, Kafka получит событие:
{
  "schema": { ... },
  "payload": {
    "before": { "id": 1, "name": "Old Name" },
    "after": { "id": 1, "name": "New Name" },
    "op": "u"  // Update
  }
}
Ставь 👍 и забирай 📚 Базу знаний

🤔 Когда выполняются факты в Ansible? Факты (facts) — это информация о целевой машине (ОС, IP, пакеты и т.д.). Они собираются в начале каждого play, если включено gather_facts: true (по умолчанию включено). Также можно собирать их вручную через модуль setup. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Как AWS работает с DevOps? AWS предоставляет облачные сервисы для автоматизации CI/CD, управления инфраструктурой, мониторинга и безопасности. 🚩CI/CD (Непрерывная интеграция и развертывание) AWS предлагает инструменты для автоматической сборки, тестирования и деплоя. AWS CodePipeline – автоматизация CI/CD-процессов AWS CodeBuild – сборка и тестирование кода AWS CodeDeploy – автоматический деплой в EC2, ECS, Lambda AWS CodeCommit – репозиторий Git в AWS Пример CI/CD-пайплайна в AWS CodePipeline 1. CodeCommit получает новый коммит 2. CodeBuild собирает и тестирует код 3. CodeDeploy разворачивает приложение на EC2 🚩Управление инфраструктурой (IaC) В DevOps важно автоматически создавать и управлять ресурсами AWS. Terraform – создает инфраструктуру по коду AWS CloudFormation – аналог Terraform от AWS AWS CDK (Cloud Development Kit) – IaC на Python/TypeScript
hcl  
resource "aws_instance" "web" {  
  ami           = "ami-123456"  
  instance_type = "t2.micro"  
}  
🚩Контейнеризация и оркестрация AWS поддерживает управление контейнерами и Kubernetes. Amazon ECS (Elastic Container Service) – контейнеры без Kubernetes Amazon EKS (Elastic Kubernetes Service) – управляемый Kubernetes AWS Fargate – запуск контейнеров без управления серверами Пример развертывания контейнера в AWS ECS: 1. Собираем Docker-образ 2. Загружаем его в Amazon ECR (Elastic Container Registry) 3. ECS автоматически масштабирует и управляет контейнерами 🚩Мониторинг и логирование Amazon CloudWatch – сбор метрик и логов AWS X-Ray – трассировка запросов в микросервисах AWS CloudTrail – аудит действий в AWS Пример мониторинга EC2 1. CloudWatch собирает метрики CPU, RAM 2. Настраиваем авто-масштабирование на основе этих метрик 3. CloudTrail записывает все изменения инфраструктуры 🚩Безопасность и управление доступом AWS IAM (Identity and Access Management) – контроль прав AWS Secrets Manager – управление паролями и API-ключами AWS KMS (Key Management Service) – шифрование данных
hcl  
resource "aws_iam_role" "s3_read" {  
  name = "s3-read-only"  
  assume_role_policy = jsonencode({  
    Statement = [{  
      Effect = "Allow"  
      Action = "s3:GetObject"  
      Resource = "arn:aws:s3:::my-bucket/*"  
    }]  
  })  
}
Ставь 👍 и забирай 📚 Базу знаний

🤔 Как ограничить ресурсы приложения в кубах? Ограничения задаются в манифесте контейнера с помощью resources.limits и resources.requests. requests — минимальные ресурсы, которые контейнеру гарантированы. limits — максимум, который контейнер может использовать. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Как бы построить выделение ресурсов, балансировку, нагрузку и всю масштабированность? Чтобы система работала стабильно и эффективно, нужно правильно распределять ресурсы, балансировать нагрузку и масштабировать сервисы. 🚩Основные компоненты Выделение ресурсов - CPU, RAM, диски, сеть Балансировка нагрузки равномерное распределение трафика Горизонтальное и вертикальное масштабирование Авто-масштабировани – динамическое добавление/удаление мощностей 🟠Выделение ресурсов (CPU, RAM, Диск, Сеть) В виртуализированных средах (Kubernetes, Docker, AWS, KVM, ESXi) выделение ресурсов настраивается через лимиты и квоты.
yaml  
apiVersion: v1  
kind: Pod  
metadata:  
  name: my-app  
spec:  
  containers:  
  - name: app  
    image: my-app:latest  
    resources:  
      requests:  
        cpu: "500m"   # Минимально 0.5 CPU  
        memory: "256Mi" # Минимально 256MB RAM  
      limits:  
        cpu: "1000m"  # Максимально 1 CPU  
        memory: "512Mi" # Максимально 512MB RAM  
🟠Балансировка нагрузки Балансировка уменьшает нагрузку на один сервер и равномерно распределяет запросы.
nginx  
upstream backend {  
  server app1:5000;  
  server app2:5000;  
}  
server {  
  listen 80;  
  location / {  
    proxy_pass http://backend;  
  }  
}  
Пример терраформа для AWS ALB
hcl  
resource "aws_lb" "example" {  
  name               = "my-load-balancer"  
  internal           = false  
  load_balancer_type = "application"  
  security_groups    = [aws_security_group.lb_sg.id]  
}  
🟠Масштабирование (Горизонтальное и Вертикальное) Горизонтальное масштабирование (добавление новых инстансов) Kubernetes Horizontal Pod Autoscaler (HPA)
yaml  
apiVersion: autoscaling/v2beta2  
kind: HorizontalPodAutoscaler  
metadata:  
  name: my-app-hpa  
spec:  
  scaleTargetRef:  
    apiVersion: apps/v1  
    kind: Deployment  
    name: my-app  
  minReplicas: 2  
  maxReplicas: 10  
  metrics:  
  - type: Resource  
    resource:  
      name: cpu  
      target:  
        type: Utilization  
        averageUtilization: 70  
🟠Авто-масштабирование (AWS/GCP/Kubernetes) AWS Auto Scaling Group
hcl  
resource "aws_autoscaling_group" "example" {  
  min_size             = 2  
  max_size             = 10  
  desired_capacity     = 2  
  launch_configuration = aws_launch_configuration.example.name  
}
Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое pod? Pod — это основная единица развертывания в Kubernetes, которая представляет собой один или несколько контейнеров, работающих вместе и разделяющих общие ресурсы, такие как сеть и хранилище. Каждый pod получает уникальный IP-адрес в кластере и может включать контейнеры, которые взаимодействуют друг с другом. Pod является недолговечным и может быть перезапущен или пересоздан при сбое, поэтому Kubernetes автоматически управляет их состоянием. Pod помогает упрощать управление контейнерами в кластере. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Как можно визуализировать логи? Визуализация логов — это процесс представления лог-файлов в удобном графическом виде для более легкого анализа, поиска аномалий и устранения проблем. Для этого используются различные инструменты, которые собирают, агрегируют и отображают логи в виде графиков, дашбордов и диаграмм. 🚩Почему нужна визуализация логов? 🟠Упрощает анализ вместо просмотра тысяч строк логов можно быстро увидеть тенденции и аномалии. 🟠Помогает в мониторинге можно отслеживать изменения в режиме реального времени. 🟠Ускоряет диагностику проблем легче выявить причину ошибки, если видеть всплески или изменения в логах. 🟠Облегчает работу с большими объемами данных миллионы строк логов можно представить в виде сводных диаграмм. 🚩Какие инструменты используются? 🟠ELK Stack (Elasticsearch + Logstash + Kibana) Logstash – собирает и обрабатывает логи. Elasticsearch – хранит и индексирует логи для быстрого поиска. Kibana – визуализирует данные, строит графики и дашборды. Пример: Можно создать график с количеством ошибок 500 за последние 24 часа. 🟠Grafana + Loki (альтернатива ELK) Loki – хранит и обрабатывает логи. Grafana – строит красивые дашборды с логами и метриками. Пример: Можно создать панель с последними логами приложений, используя tail-подобное обновление. 🟠Graylog Обрабатывает логи, хранит их в Elasticsearch, строит графики и отправляет алерты. Пример: Можно отфильтровать логи по уровню ERROR и вывести их в виде диаграммы. 🟠Datadog, Splunk, New Relic Коммерческие решения с мощными инструментами аналитики логов. Пример: Автоматическая корреляция логов с метриками системы. 🚩Простой пример работы с ELK Logstash конфиг (сбор логов из файла)
   input {
     file {
       path => "/var/log/app.log"
       start_position => "beginning"
     }
   }
   output {
     elasticsearch {
       hosts => ["http://localhost:9200"]
     }
   }
Ставь 👍 и забирай 📚 Базу знаний

Сбой DHCP или перегрузка канала — и сеть перестаёт дышать. Один некорректный пакет, десяток повторов — и критическая инфрастр
Сбой DHCP или перегрузка канала — и сеть перестаёт дышать. Один некорректный пакет, десяток повторов — и критическая инфраструктура уходит в оффлайн. На открытом уроке разберём самые практические атаки на доступность: DHCP starvation через DHCPig/Yersinia и перегрузку канала с помощью hping3. Покажем на живой демонстрации, какие последствия вызывают истощение пула адресов и агрессивная утилизация трафика. Если вы работаете с сетями, безопасностью или инфраструктурой — понимание этих атак критично. Это те кейсы, которые происходят в реальных компаниях, и именно их должен уметь распознавать и предотвращать каждый специалист. Встречаемся 10 декабря в 20:00 МСК в преддверие старта курса «Пентест. Инструменты и методы проникновения в действии». Регистрируйтесь — и разберите атаки до уровня пакетов: https://otus.pw/QUxIu/ Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

🤔 Как по access-логам Nginx понять, из какого location отдан контент? По умолчанию в access.log не указывается location напрямую, но: - Обычно можно различить по пути URL — если location /static/, location /cache/, location /backend/ — это отражается в строке запроса. - Чтобы точно видеть, откуда был ответ, можно: - Добавить пользовательский формат логов, где записывать $uri или специальные переменные ($request_uri, $upstream_addr и пр.). - Логировать переменные, которые задаются внутри каждого location (например, set $source static → логируешь $source). Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что слышали про rancher kubernetes? Это платформа для управления Kubernetes-кластерами. Она позволяет развертывать, настраивать, мониторить и управлять несколькими кластерами Kubernetes из единой панели управления. Rancher упрощает работу с Kubernetes, предоставляя удобный UI, API и инструменты автоматизации. 🚩Зачем нужен Rancher? 🟠Управление несколькими кластерами Rancher позволяет управлять кластерами Kubernetes, развернутыми в различных облаках (AWS, GCP, Azure) и на локальной инфраструктуре. 🟠Упрощенная установка и настройка С помощью Rancher можно быстро развернуть Kubernetes-кластеры с минимальными усилиями. 🟠Безопасность и контроль доступа Поддерживает аутентификацию через LDAP, Active Directory, GitHub и другие методы. 🟠Мониторинг и логирование Встроенная поддержка Prometheus, Grafana и Fluentd для мониторинга и логов. 🟠Развертывание приложений Поддерживает Helm-чарты и стандартные манифесты Kubernetes. 🚩Как работает Rancher? 🟠Rancher Server центральный компонент, управляющий кластерами и предоставляющий UI/API. 🟠Kubernetes-кластеры могут быть развернуты с помощью Rancher (RKE, RKE2) или добавлены вручную (например, EKS, AKS, GKE). 🟠Rancher Agents агенты, установленные в кластерах для обеспечения связи с сервером Rancher. 🚩Пример развертывания Rancher Для развертывания Rancher можно использовать Docker
docker run -d --name=rancher --restart=unless-stopped \
  -p 80:80 -p 443:443 \
  rancher/rancher:latest
Ставь 👍 и забирай 📚 Базу знаний

Курс "Дизайн карточек для WB и Ozon". Бесплатно и с нуля Дизайнер карточек для маркетплейсов — востребованная и доходная проф
Курс "Дизайн карточек для WB и Ozon". Бесплатно и с нуля Дизайнер карточек для маркетплейсов — востребованная и доходная профессия 💰 Научись ей бесплатно! - Бесплатный доступ - Разбор ДЗ от наставника - Мощные кейсы в портфолио Узнать больше #реклама 16+ yudaevschool24.online О рекламодателе

🤔 Как автоматически деплоить Helm Chart? Для автоматического деплоя Helm-чартов можно использовать: - CI/CD инструменты (GitLab CI, GitHub Actions, Jenkins) с шагами helm install или helm upgrade; - GitOps-подход через ArgoCD или Flux, где Helm-чарты подтягиваются и применяются при изменении Git-репозитория; - Использование Helm-плагинов для управления релизами и версионированием. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний