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

Тесты t.me/+2P7cpjeyfDVlZjcy
Вакансии t.me/+i5KFWEWJ21hhYWEy
Download Telegram
🤔 Как определить, в какой ОС находишься?

В Linux определяют дистрибутив и версию через системные файлы (/etc/os-release), команду uname или lsb_release.
В Windows проверяют через systeminfo, ver или WMI-запросы.
Если скрипту нужно определить ОС автоматически, проверяют системные файлы, команды или переменные окружения.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🤯4🔥1
🤔 Назови инструменты для развернутого окружения и настройки серверов

В DevOps используются разные инструменты для автоматизации развертывания и конфигурации серверов.

🟠Инструменты управления конфигурацией (Configuration Management)
Используются для настройки ОС, пакетов, сервисов и приложений.
Ansible – прост в освоении, использует SSH, без агентов
Puppet – декларативный подход, работает по клиент-серверной модели
Chef – использует Ruby DSL, сложнее в настройке
SaltStack – быстрый, поддерживает master-minion и режим без мастера
yaml  
- name: Установка Nginx
hosts: web
tasks:
- name: Установить Nginx
apt:
name: nginx
state: present


🟠Инструменты инфраструктуры как код (IaC)
Используются для автоматического развертывания серверов и облачной инфраструктуры.
Terraform – лучший выбор для облаков (AWS, GCP, Azure)
CloudFormation – инструмент от AWS для управления ресурсами
Pulumi – позволяет писать инфраструктуру на Python, TypeScript
hcl  
resource "aws_instance" "web" {
ami = "ami-123456"
instance_type = "t2.micro"
}


🟠Инструменты управления образами серверов (Image-based Deployment)
Используются для создания готовых образов ОС с предустановленным ПО.
Packer – создает образы для AWS AMI, Docker, VMware
Docker – контейнеризация для изолированных окружений
Vagrant – для локального тестирования инфраструктуры
json  
{
"builders": [{
"type": "amazon-ebs",
"region": "us-east-1",
"source_ami": "ami-123456",
"instance_type": "t2.micro",
"ssh_username": "ubuntu"
}]
}


🟠Инструменты оркестрации и контейнеризации
Используются для управления контейнерами и кластеризацией.
Docker Compose – для локального запуска нескольких контейнеров
Kubernetes – для управления контейнерами в продакшене
Nomad – альтернатива Kubernetes от HashiCorp
yaml  
version: '3'
services:
web:
image: nginx
ports:
- "80:80"


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Forwarded from easyoffer
На easyoffer 2.0 появится:
Тренажер "Реальное собеседование"

🟠 Сценарии вопросов из реального собеседования
🟠Возможность подготовиться к собеседованию в конкретную компанию
🟠Итоговая статистика (прошёл/не прошёл)

Сценарий вопросов взят из реального собеседования. То есть вы тренируетесь на тех вопросах, которые действительно задавались в компании X.

Уже в начале следующей недели стартует краудфандинг кампания, чтобы ускорить разработку easyoffer 2.0. Все кто, поддержал проект на этом этапе смогу получить 1 год доступа к сайту по цене месячной подписки. Первые 150 донатеров получать особо-выгодную цену и бонус. Следите за стартом 👉 в этом телеграм канале, в нем информация о старте будет опубликована за 6 часов до официального начала.
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Что за протокол ICMP, какого уровня?

Протокол сетевого уровня (3-й уровень OSI), используемый для диагностики сети. Он не передает пользовательские данные, а отправляет сообщения об ошибках, например:
- ping – проверяет доступность узла.
- traceroute – отслеживает маршрут пакетов.
ICMP помогает выявлять проблемы с соединением, но может быть заблокирован фаерволами.


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

Для определения размера узла (node) в кластере Kubernetes необходимо собрать информацию о различных ресурсах, таких как количество процессоров (CPU), объем оперативной памяти (RAM) и объем дискового пространства, доступные на узле. Эти данные можно получить с помощью команды kubectl.

🚩Шаги для определения размера узла

🟠Получение списка узлов
Для начала необходимо получить список узлов в кластере:
kubectl get nodes


🟠Получение информации о ресурсе узла
Для каждого узла из списка можно получить подробную информацию о ресурсах с помощью команды kubectl describe node <node-name>:
kubectl describe node <node-name>


🟠Получение информации о ресурсах узлов в формате JSON/YAML
Чтобы получить информацию о ресурсах узлов в удобном для обработки формате (JSON или YAML), можно использовать команду kubectl get node <node-name> -o json или kubectl get node <node-name> -o yaml:
kubectl get node <node-name> -o json


Пример вывода команды
{
"kind": "Node",
"apiVersion": "v1",
"metadata": {
"name": "node1"
},
"status": {
"capacity": {
"cpu": "4",
"memory": "16384000Ki",
"ephemeral-storage": "100Gi"
},
"allocatable": {
"cpu": "4",
"memory": "16334000Ki",
"ephemeral-storage": "98Gi"
}
}
}


🚩Расчет размера узла

- CPU: Количество процессоров.
- Memory: Объем оперативной памяти (в Ki, где 1 Ki = 1024 байт).
- Ephemeral Storage: Объем временного дискового пространства.
Допустим, узел имеет следующие ресурсы:
- CPU: 4
- Memory: 16334000Ki (примерно 15.58 GiB)
- Ephemeral Storage: 98Gi

🚩Конвертация памяти

Память в Kubernetes часто указывается в КиБ (Kibibytes). Для конвертации в гигабайты (GiB) используется следующая формула:
\text{Memory (GiB)} = \frac{\text{Memory (KiB)}}{1024 \times 1024}
Пример:
\text{Memory (GiB)} = \frac{16334000}{1024 \times 1024} \approx 15.58

🚩Объединение всех данных

В результате, размер узла можно представить как:
CPU: 4
Memory: 15.58 GiB
Ephemeral Storage: 98 GiB

🚩Пример команд для автоматизации

Если необходимо собрать и обработать данные для всех узлов в кластере, можно использовать скрипт. Например, на bash с использованием jq для обработки JSON:
#!/bin/bash

nodes=$(kubectl get nodes -o json | jq -r '.items[].metadata.name')

for node in $nodes; do
echo "Node: $node"
kubectl get node $node -o json | jq '.status.capacity, .status.allocatable'
echo ""
done


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍81
🤔 Где хранить приватный PGP-ключ?

Приватный PGP-ключ должен храниться безопасно, чтобы предотвратить утечку. Основные варианты:
- Аппаратные ключи (YubiKey, Nitrokey) – самый безопасный способ.
- GnuPG с защитой паролем (~/.gnupg/private-keys-v1.d/).
- Менеджеры паролей (Bitwarden, 1Password) – если поддерживают PGP-ключи.
- Оффлайн-носители (защищенный USB, зашифрованный внешний диск).
- HSM (Hardware Security Module) – для корпоративного использования.
Хранить в открытом виде на сервере или облаке опасно!


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥1
🤔 В каком файле по дефолту будет хранится инормация об ОС, версии в линуксе?

В Linux информация о версии дистрибутива и ядра хранится в нескольких файлах.

🟠Основной файл — `/etc/os-release`
Этот файл есть во всех современных дистрибутивах (Debian, Ubuntu, RHEL, CentOS, Fedora).
cat /etc/os-release


Пример содержимого /etc/os-release
NAME="Ubuntu"
VERSION="22.04.3 LTS (Jammy Jellyfish)"
ID=ubuntu
PRETTY_NAME="Ubuntu 22.04.3 LTS"
VERSION_ID="22.04"
HOME_URL="https://www.ubuntu.com/"


🟠Альтернативный файл — `/etc/issue`
Некоторые дистрибутивы используют /etc/issue.
cat /etc/issue


Вывод
Ubuntu 22.04.3 LTS \n \l


🟠Информация о ядре — `/proc/version`
Этот файл содержит версию ядра и информацию о компиляции.
cat /proc/version


Вывод
Linux version 5.15.0-84-generic (buildd@lcy02-amd64-016) (gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0) #93-Ubuntu SMP


🟠Команды для проверки версии ОС
Проверить версию через lsb_release
lsb_release -a


Вывод
Distributor ID: Ubuntu  
Description: Ubuntu 22.04.3 LTS
Release: 22.04
Codename: jammy


Проверить ядро через uname
uname -r


Вывод
5.15.0-84-generic


Можно также вывести полную информацию:
uname -a


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
Forwarded from easyoffer
На easyoffer 2.0 появится:
База тестовых заданий

🟠Тестовые задания для разных грейдов
🟠Фильтрация тестовых заданий по технологиям и компаниям

Когда я только начинал учиться на программиста, я постоянно выдумывал себе задачи для практики и тратил на это много времени. Но только в момент поиска работы я столкнулся с тестовыми заданиями, и понял насколько круто они прокачивают навыки. Нужно было еще на этапе обучения пробовать их делать. Все компании стараются составить тестовое задание "под себя", это дает большой выбор в тематике задач и технологий. На easyoffer 2.0 вы сможете отфильтровать тестовые задания по навыкам/грейдам и найти те, что подходят лично вам для практики.

В течение 1-2 дней я объявлю о краудфандинг кампании, чтобы ускорить разработку easyoffer 2.0. Все кто, поддержал проект на этом этапе смогу получить 1 год доступа к сайту по цене месячной подписки и смогут попасть на закрытое бета-тестирование. А первые 150 донатеров получать особо-выгодную цену и бонус.

🚀 Следите за стартом 👉 в этом телеграм канале, в нем информация о старте будет опубликована за 6 часов до официального начала.
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Какие протоколы знаешь?

Протоколы: TCP (надежная передача данных), UDP (быстрая и ненадёжная), HTTP/HTTPS (веб-протоколы), FTP (передача файлов), SMTP/IMAP/POP3 (почтовые протоколы), WebSocket (двусторонняя связь) и DNS (разрешение имён).


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

В iptables есть 5 таблиц, но чаще всего работают с тремя:

🟠`filter`
основная таблица для контроля трафика (используется по умолчанию)
🟠`nat`
для трансляции адресов (SNAT, DNAT, редиректы)
🟠`mangle`
для изменения пакетов (маркировка, TTL, QoS)
🟠`raw`
для исключения пакетов из обработки conntrack
🟠`security`
используется в SELinux для меток безопасности

🚩Таблица `filter` (фильтрация пакетов)

Используется для разрешения или блокировки трафика.
iptables -P INPUT DROP  
iptables -A INPUT -p tcp --dport 22 -j ACCEPT


🚩Таблица `nat` (трансляция адресов)

Используется для NAT, порт-форвардинга, маскарадинга.
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE  


Пример: Проброс порта (DNAT) – входящие пакеты на 80 порт перенаправляем на 8080
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080  


🚩Таблица `mangle` (изменение пакетов)

Используется для маркировки пакетов, изменения TTL, QoS.
iptables -t mangle -A POSTROUTING -j TTL --ttl-set 64  


Пример: Маркировка пакетов для использования в tc (QoS)
iptables -t mangle -A PREROUTING -p tcp --dport 22 -j MARK --set-mark 1  


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥1
🤔 Что такое неймспейс?

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

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
🤔 Как 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/*"
}]
})
}


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from easyoffer
🎉 Краудфандинг easyoffer 2.0 стартовал!

Друзья, с этого момента вы можете поддержать проект и получить существенный бонус:

🚀 PRO-тариф на 1 год, по цене месячной подписки на релизе.
Доступ к закрытому бета-тесту easyoffer 2.0 (середина–конец мая)

Поддержать проект можно здесь:
https://planeta.ru/campaigns/easyoffer

📌 Если не получается оплатить через карту РФ — напишите мне @kivaiko, и мы найдём удобный способ
🔥2
Forwarded from easyoffer
Я поставил целью сбора скромные 300 тыс. рублей, но ребята, вы накидали больше млн. всего за 1 день. Это просто невероятно!

Благодаря вашей поддержке, я смогу привлечь еще больше людей для разработки сайта и обработки собеседований. Ваш вклад сделает проект качественнее и ускорит его выход! Огромное вам спасибо!

Краудфандинг будет продолжаться еще 31 день и все кто поддержать проект сейчас, до его выхода, смогут получить:

🚀 PRO-тариф на 1 год, по цене месячной подписки на релизе.
Доступ к закрытому бета-тесту easyoffer 2.0 (середина–конец мая)

Поддержать проект можно здесь:
https://planeta.ru/campaigns/easyoffer

Огромное спасибо за вашу поддержку! 🤝
🤔 Какие существуют Probe?

Существуют Liveness Probe для проверки активности контейнера, Readiness Probe для проверки готовности к обработке запросов и Startup Probe для проверки успешного старта контейнера.

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

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
🤔 Как работает HTTPS?

1. HTTPS использует протокол HTTP с добавлением шифрования через SSL/TLS.
2. Клиент и сервер обмениваются ключами для установки защищённого соединения.
3. Все передаваемые данные шифруются, что обеспечивает конфиденциальность, целостность и аутентификацию.


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

Ansible – мощный инструмент для автоматизации, но у него есть серьезные недостатки, особенно при масштабировании.

🚩Основной минус – Медленная работа на больших инфраструктурах

🟠Нет агентов
каждый раз Ansible подключается по SSH и выполняет задачи без предварительного кеширования
что замедляет процесс.

🟠Ограничения Python на удаленных хостах
если целевой сервер слабый или без Python, выполнение плейбуков будет медленным.

🟠Последовательное выполнение
по умолчанию Ansible выполняет задачи последовательно, что дольше, чем параллельные методы (например, в SaltStack).
yaml  
- name: Установка Nginx
hosts: all
tasks:
- name: Установить Nginx
apt:
name: nginx
state: present


Запуск задач параллельно (-f 50)
sh  
ansible-playbook playbook.yml -f 50


🚩Другие минусы Ansible

🟠Высокая нагрузка на управляющий узел
Если 1000+ серверов, главный Ansible-узел может быстро перегрузиться.

🟠Сложное управление зависимостями
Роли могут конфликтовать, если версии не совпадают. Ansible Galaxy не такой удобный, как Terraform Registry

🟠Ограниченная идемпотентность
Некоторые модули (особенно shell и command) не всегда понимают, применялась ли конфигурация раньше.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥1
🤔 На каких базовых компонентах Linux выстроена сущность Docker?

Docker использует такие компоненты Linux, как cgroups для ограничения ресурсов, namespaces для изоляции и union файловые системы для создания слоёв образов.


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

Grafana — это инструмент для визуализации, мониторинга и анализа метрик. Он позволяет строить графики, панели (dashboards) и оповещения на основе данных из разных источников.

🚩Основные возможности Grafana

Дашборды – красивые панели с графиками и таблицами
Много источников данных – Prometheus, MySQL, Elasticsearch, AWS CloudWatch
Настраиваемые алерты – уведомления в Slack, Telegram, Email
Аутентификация – поддержка LDAP, OAuth, GitHub
Плагины и расширения – добавление новых панелей и источников данных

🚩Как работает Grafana?

Grafana подключается к источнику данных (например, Prometheus)
Пользователь создает дашборды с графиками, таблицами и метриками
Настраиваются алерты, которые отправляют уведомления при сбоях

🚩Пример развертывания Grafana с Prometheus

Запуск Grafana в Docker
docker run -d -p 3000:3000 --name=grafana grafana/grafana


Пример запроса в PromQL
node_cpu_seconds_total{mode="idle"}


🚩Как настроить алерты?

Например, если загрузка CPU выше 80%, отправлять сообщение в Telegram.

В Grafana → "Alerting" → "Alert Rules" → "Create Alert Rule"
Записываем условие:
100 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80


🚩Где используется Grafana?

Мониторинг серверов (CPU, RAM, диски, сеть)
DevOps (Prometheus + Grafana) для Kubernetes, Docker
Бизнес-аналитика (данные из MySQL, Google Analytics)
IoT – графики с датчиков и устройств

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4