DevOps | Вопросы собесов
Kanalga Telegram’da o‘tish
Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @sendme_ads
Ko'proq ko'rsatish5 564
Obunachilar
-324 soatlar
-127 kun
-230 kun
Postlar arxiv
🤔 Что такое контейнер в Docker?
Контейнер — это изолированная среда, основанная на образе, которая содержит всё необходимое для запуска приложения: код, зависимости, системные библиотеки и конфигурации. Он использует ядро хост-системы, но обеспечивает файловую, сетевую и процессную изоляцию.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Когда вы создаёте файл какие права создаются по умолчанию?
Права доступа по умолчанию зависят от базовых прав доступа и значения
umask. Базовые права доступа — это значения, которые система использует для определения разрешений перед применением маски umask.
🟠Файлы: 666 (rw-rw-rw-)
Это означает, что по умолчанию все пользователи могут читать и записывать в файл.
🟠Каталоги: 777 (rwxrwxrwx)
Это означает, что по умолчанию все пользователи могут читать, записывать и выполнять (заходить) в каталог.
🚩Значение umask: 022
Это маска, которая определяет, какие права будут отключены при создании нового файла или каталога. Значение umask указывается в восьмеричной системе счисления.
🟠Создание файла
Базовые права доступа: 666
Значение umask: 022
Окончательные права доступа: 666 - 022 = 644 (rw-r--r--)
🟠Создание каталога
Базовые права доступа: 777
Значение umask: 022
Окончательные права доступа: 777 - 022 = 755 (rwxr-xr-x)
🚩Создание файла с umask 0022
1⃣Установка umask
umask 0022
2⃣Создание файла
touch myfile
3⃣Проверка прав доступа
ls -l myfile
Вывод
Права доступа: 644 (rw-r--r--)
-rw-r--r-- 1 user user 0 Jul 26 12:00 myfile
🚩Создание каталога с umask 0027
1⃣Установка umask
umask 0027
2⃣Создание каталога
mkdir mydir
3⃣Проверка прав доступа
ls -ld mydir
Вывод
Права доступа: 750 (rwxr-x---)
drwxr-x--- 2 user user 4096 Jul 26 12:00 mydir
🚩Дополнительные замечания
🟠umask в скриптах
Вы можете установить umask в скрипте для задания прав доступа по умолчанию для всех создаваемых файлов и каталогов.
#!/bin/bash
umask 027
touch file1
mkdir dir1
🟠Проверка прав доступа в разных ситуациях
Для файлов: По умолчанию права доступа 666 минус umask.
Для каталогов: По умолчанию права доступа 777 минус umask.
Ставь 👍 и забирай 📚 Базу знанийWink AI Challenge — хакатон на стыке IT и кино. Участников ждут задачи, которые ускорят производство фильмов и сериалов за счёт прикладных AI-решений. Призовой фонд соревнования — 1 125 000 рублей.
Регистрация до 31 октября: https://cnrlink.com/winkaichallengeeasydevops
Приглашаем на первый в России хакатон, посвящённый применению ИИ в кинопроизводстве, ML-инженеров, backend- и frontend-разработчиков, специалистов в DevOps, MLOps, а также инженеров в сфере мультимедиа.
Вы сможете:
🔸 Разработать ML-модель, которую оценят и будут использовать продюсеры популярных российских фильмов и сериалов.
🔸 Решить кейсы, основанные на реальных задачах, с которыми продюсеры сталкиваются каждый день.
🔸 Использовать настоящие сценарии и видеоматериалы для анализа текстов, извлечения сущностей и генерации структуры съёмок.
🔸 Попрактиковаться в применении NLP, NER и мультимодальных данных в задачах кинопроизводства.
Регистрируйтесь на Wink AI Challenge, чтобы разработать ИИ-ассистента, который станет частью производства фильмов и сериалов: https://cnrlink.com/winkaichallengeeasydevops
Гайд для CEO по подготовке и проведению вебинаров
Как CEO оптимизировать бизнес-процессы с помощью вебинаров и повысить прибыль компании?
Гайд от МТС Линк по подготовке и проведению эффективных вебинаров.
✅ В гайде:
- Как выбрать день и время для вебинаров, чтобы максимизировать ROI;
- Как улучшить коммуникацию с клиентами и партнёрами для роста бизнеса;
- Как сократить расходы на event-маркетинг и повысить эффективность команды;
- Как измерить вклад вебинаров в прибыль компании и масштабировать успех.
✨ Скачайте гайд бесплатно по ссылке
Скачать
#реклама 16+
mts-link.ru
О рекламодателе
🤔 Как делали права доступа в GitHub для агента, который скачивал/разворачивал ECS?
Используются:
- GitHub Actions OIDC → IAM Role in AWS;
- IAM Role for Service Account (IRSA);
- IAM policies + ограниченные assume-role.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Где хранить приватный PGP ключ?
Приватный PGP-ключ – это чувствительные данные, которые нельзя хранить в незащищенных местах. Потеря или компрометация ключа может привести к утечке зашифрованных данных.
🚩Лучшие способы хранения приватного PGP-ключа
🟠На аппаратном токене (YubiKey, Nitrokey, SmartCard)
- Ключ никогда не покидает устройство.
- Физическая защита от копирования.
- Можно использовать для SSH, GPG, подписи кода.
🟠В защищенном хранилище (Bitwarden, 1Password, KeePassXC)
- Хранилище зашифровано и требует пароль или биометрию.
- Можно синхронизировать между устройствами без потери безопасности.
- Экспортировать ключ в зашифрованный файл:
gpg --export-secret-keys --armor > private-key.asc
🟠В зашифрованном виде на диске (LUKS, VeraCrypt, EncFS)
- Физическая защита – даже если диск украдут, без пароля его не открыть.
- Работает на Linux, Windows, MacOS.
1⃣Создать зашифрованный контейнер с LUKS (Linux):
cryptsetup luksFormat /dev/sdX
cryptsetup luksOpen /dev/sdX secure_disk
mkfs.ext4 /dev/mapper/secure_disk
2⃣Хранить ключ внутри /mnt/secure_disk/private-key.asc.
🟠4. В HSM или облачном KMS (AWS KMS, HashiCorp Vault, Azure Key Vault)
- Подходит для энтерпрайз-решений.
- Аппаратное шифрование (HSM) делает взлом практически невозможным.
- AWS KMS или Vault можно использовать для PGP.
vault kv put secret/pgp_key key="$(cat private-key.asc)"
Ставь 👍 и забирай 📚 Базу знаний🤔 Как получить body запрос?
Если используется Flask, тело запроса можно получить с помощью request.get_json() — если это JSON-запрос, request.data — если нужны байты тела, или request.form — если данные отправлены в формате формы. Всё зависит от Content-Type запроса. Для чтения обычного тела можно также использовать request.get_data().
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Как разделять элементы CI и CD в jenkins?
В Jenkins CI (Continuous Integration) и CD (Continuous Delivery/Deployment) можно разделять на разные стадии (stages) или отдельные пайплайны. Это повышает гибкость, упрощает отладку и делает процесс масштабируемым.
🚩Разделение CI и CD внутри одного `Jenkinsfile`
Можно использовать разные стадии (stages) в
Jenkinsfile:
Пример:
pipeline {
agent any
stages {
stage('CI: Build & Test') {
steps {
echo "📦 Сборка и тестирование кода"
sh 'mvn clean package' // Сборка
sh 'mvn test' // Юнит-тесты
}
}
stage('CI: Code Analysis') {
steps {
echo "🧐 Анализ кода (SonarQube)"
sh 'sonar-scanner'
}
}
stage('CD: Staging Deployment') {
steps {
echo "🚀 Деплой на стейджинг"
sh 'kubectl apply -f k8s/staging.yaml'
}
}
stage('CD: Production Deployment') {
when {
branch 'main' // Только для main-ветки
}
steps {
echo "🔥 Деплой в прод"
sh 'kubectl apply -f k8s/production.yaml'
}
}
}
}
🚩Отдельные пайплайны для CI и CD
Можно разделить CI и CD на разные пайплайны, используя Jenkins Multibranch Pipeline.
CI-пайплайн (Jenkinsfile.ci)
pipeline {
agent any
stages {
stage('Build') {
steps {
sh 'mvn clean package'
}
}
stage('Test') {
steps {
sh 'mvn test'
}
}
}
post {
success {
archiveArtifacts artifacts: '**/target/*.jar'
build job: 'CD-Pipeline', wait: false // Запуск CD после успешного CI
}
}
}
CD-пайплайн (Jenkinsfile.cd)
pipeline {
agent any
stages {
stage('Deploy to Staging') {
steps {
sh 'kubectl apply -f k8s/staging.yaml'
}
}
stage('Manual Approval') {
steps {
input message: "Deploy to Production?"
}
}
stage('Deploy to Production') {
steps {
sh 'kubectl apply -f k8s/production.yaml'
}
}
}
}
🚩Использование `Jenkins Shared Library` для разделения логики
Если много пайплайнов, лучше вынести CI/CD-логику в общую библиотеку (vars/ci.groovy, vars/cd.groovy).
Пример CI (vars/ci.groovy)
def call() {
pipeline {
agent any
stages {
stage('Build & Test') {
steps {
sh 'mvn clean package && mvn test'
}
}
}
}
}
Пример CD (vars/cd.groovy)
def call() {
pipeline {
agent any
stages {
stage('Deploy') {
steps {
sh 'kubectl apply -f k8s/production.yaml'
}
}
}
}
}
Jenkinsfile с использованием библиотек
@Library('my-shared-library') _
ci() // Запуск CI
cd() // Запуск CD
Ставь 👍 и забирай 📚 Базу знаний🤔 Как будут называться поды в ReplicaSet и в StatefulSet?
Поды ReplicaSet получают случайное имя с хешем — например, myapp-6c79f8fd58-k9xpf. А поды StatefulSet получают предсказуемые имена — например, db-0, db-1, db-2, где номер отражает порядок.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Что такое container network module в докере?
Это архитектурная модель, разработанная Docker для управления сетями контейнеров. Она описывает, как создаются, управляются и взаимодействуют сетевые компоненты в Docker-контейнерах. CNM служит основой для организации сетей Docker и позволяет подключать контейнеры к различным сетевым средам, обеспечивая гибкость, масштабируемость и безопасность.
🚩Основные компоненты CNM
🟠Sandbox
Это изолированная среда, где настраиваются сетевые интерфейсы контейнера, такие как IP-адреса, маршруты и DNS. Что включает: veth-пара интерфейсов (виртуальный Ethernet): соединяет контейнер с внешней сетью. Конфигурации маршрутов и сетевых правил.
🟠Endpoint
Точка подключения контейнера к сети. Функции: Обеспечивает контейнеру связь с другими контейнерами или внешними сетями. Соединяет Sandbox с Network.
🟠Network
Логическая сущность, объединяющая Endpoints для обеспечения взаимодействия контейнеров. Типы сетей в Docker:
bridge: Локальная сеть, позволяющая контейнерам взаимодействовать на одном хосте.
host: Контейнеры используют сетевой стек хоста без изоляции.
none: Сеть отключена; контейнер полностью изолирован.
overlay: Распределенная сеть для связи контейнеров на разных хостах.
macvlan: Контейнеры получают прямой доступ к физической сети.
🚩Как это работает в Docker
Создается Sandbox, где настраиваются сетевые параметры контейнера.
Создается Endpoint, который подключает контейнер к выбранной сети.
Endpoint добавляется в Network, что позволяет контейнеру взаимодействовать с другими узлами.
🚩Плюсы
➕Гибкость
Легко подключать контейнеры к различным типам сетей.
➕Изоляция
Обеспечивает безопасность, изолируя сетевые пространства контейнеров.
➕Расширяемость
CNM поддерживает сторонние плагины для интеграции с другими сетевыми решениями (например, Calico, Flannel).
➕Управляемость
Позволяет контролировать настройки сети через команды Docker.
🚩Пример создания сети
1⃣Создание сети
docker network create my_bridge
2⃣Подключение контейнера к сети
docker run --network my_bridge -d nginx
Ставь 👍 и забирай 📚 Базу знанийУзнайте подробнее о программе DBA для руководителей
На презентации расскажем:
- о том, какие возможности создает обучение на программе DBA для бизнес-лидеров,
- об отличии программы DBA от зарубежной степени PhD и от российской степени кандидата наук,
- о правилах и условиях зачисления на программу DBA,
Вы сможете лично познакомиться с руководителями, преподавателями программы DBA, задать вопросы слушателям.
Участники презентации в кампусе бизнес-школы получат уникальную возможность принять участие в дискуссии «Стратегическая гибкость в быстроменяющемся мире» от Николая Соустина, преподавателя маркетингового блока программы DBA.
Презентация программы пройдет 15 октября 2025 года (среда) в 19:00—20:30 Мск.
Участие бесплатное. Очно/онлайн.
Регистрируйтесь, ждем Вас!
Узнать больше
#реклама 16+
mba.hse.ru
О рекламодателе
🤔 В каком файле по умолчанию хранится информация об ОС и версии в Linux?
Чаще всего:
- /etc/os-release — стандартный файл с названием и версией дистрибутива.
- Иногда: /etc/issue, /etc/lsb-release (в зависимости от дистрибутива).
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Что такое IaC?
Это практика управления и настройки IT-инфраструктуры (серверов, сетей, баз данных и других ресурсов) с помощью кода, а не вручную через консоли или графические интерфейсы.
🚩Зачем нужен IaC?
🟠Автоматизация
вместо ручной настройки серверов вы пишете код, который делает это автоматически.
🟠Консистентность
одинаковая среда на всех серверах, исключение человеческих ошибок.
🟠Быстрое развертывание
развернуть инфраструктуру можно за минуты.
🟠Легкость в откате
если что-то пошло не так, можно быстро вернуть предыдущее состояние.
🟠Масштабируемость
легко добавить новые серверы или ресурсы при увеличении нагрузки.
🚩Как работает IaC?
С помощью IaC вы описываете всю инфраструктуру в коде (например, в YAML, JSON, HCL и др.), а затем используете инструменты для автоматического развертывания.
provider "aws" {
region = "us-east-1"
}
resource "aws_instance" "example" {
ami = "ami-0c55b159cbfafe1f0"
instance_type = "t2.micro"
}
🚩Основные инструменты IaC
🟠Terraform
универсальный инструмент для облаков (AWS, Azure, GCP и др.).
🟠Ansible
удобен для настройки серверов (конфигурации ПО).
🟠Puppet / Chef
похожи на Ansible, но требуют агента на серверах.
🟠CloudFormation
инструмент от AWS для управления ресурсами.
Ставь 👍 и забирай 📚 Базу знанийМетодичка: как сделать онлайн-встречи эффективнее
Надоело ждать коллег, которые постоянно забывают о встречах, а отсутствие повестки и потерянные договоренности мешают нормально работать?
Команда МТС Линк собрала на 37 страницах полезные материалы, чек-листы и кейсы, которые помогают компаниям проводить эффективные совещания в онлайне с помощью сервиса Встречи.
Из методички узнаете:
- Как создать постоянную ссылку и подключаться на встречи в 2 клика,
- Как делать заметки и работать с файлами, не переживая за качество связи и безопасность данных.
- Как облегчает жизнь ИИ, который расшифровывает созвоны в текст и автоматически отправляет расшифровку на почту.
Еще в методичке описаны 7 способов оценки текущей эффективности ваших онлайн-встреч.
Получить гайд можно бесплатно на сайте.
Скачать
#реклама 16+
mts-link.ru
О рекламодателе
🤔 Чем отличается CD и CD (непрерывная доставка)?
Это два смысла одного сокращения:
- Continuous Delivery (непрерывная доставка) — код всегда готов к деплою, но деплой в прод по кнопке.
- Continuous Deployment (непрерывное развёртывание) — код автоматически деплоится в прод после прохождения всех тестов.
Delivery — ручной шаг, Deployment — полностью автоматизированный.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Как заставить процесс отпустить файловые дескрипторы?
Если процесс удерживает файловые дескрипторы и вам нужно их освободить, то есть несколько способов это сделать.
🟠Завершение процесса
Самый простой способ — завершить процесс, который удерживает файловые дескрипторы.
kill <PID>
или принудительно
kill -9 <PID>
Чтобы найти процессы, удерживающие файлы
lsof | grep <filename>
или
fuser <filename>
🟠Закрытие дескриптора вручную
Если вы хотите закрыть файловый дескриптор, не завершая процесс, можно использовать lsof и /proc
1⃣Найдите открытые дескрипторы процесса:
ls -l /proc/<PID>/fd/
2⃣Закройте конкретный дескриптор:
exec 3>&-
🟠Использование `gdb` для вмешательства в процесс
Если процесс нельзя перезапустить, но вы имеете к нему доступ, можно закрыть дескриптор через gdb:
gdb -p <PID>
(gdb) call close(<FD>)
(gdb) detach
(gdb) quit
🟠Перемонтирование файловой системы
Если файл удален, но все еще удерживается процессом, можно принудительно перемонтировать файловую систему:
mount -o remount /
Или использовать lsof для очистки удаленных файлов
lsof | grep deleted
🟠Использование `systemctl restart` для сервисов
Если файлы удерживаются службой (например, Nginx, Apache, MySQL), можно перезапустить службу
systemctl restart <service>
или
service <service> restart
Ставь 👍 и забирай 📚 Базу знаний🤔 Как можно визуализировать логи?
Визуализация логов обычно делается с использованием систем централизованного логирования. Наиболее популярные варианты:
- ELK (Elasticsearch + Logstash + Kibana) — мощный стек, Kibana предоставляет гибкий интерфейс для построения графиков, поиска по логам, дашбордов.
- Grafana Loki — лёгкая альтернатива ELK, лог-агрегатор, работает с Promtail и отображает логи через интерфейс Grafana.
- Fluentd / Fluent Bit + Grafana — логгеры, отправляющие данные в различные хранилища (включая Elasticsearch).
- Graylog — альтернатива ELK, заточенная под визуализацию и безопасность.
- Sentry / Datadog / Splunk — облачные сервисы для логирования и мониторинга.
Логи с подов в Kubernetes можно собирать через sidecar, DaemonSet, или использовать Fluent Bit/Fluentd с отправкой в централизованное хранилище.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Куда идет деплой из релизных веток?
Касается подходов к управлению релизами в системах контроля версий, таких как Git, и их интеграции с процессами CI/CD. Ответ зависит от структуры разработки и процесса релиза в конкретной команде или компании. Однако, в общем, деплой из релизных веток обычно идет на тестовые, стейджинговые или продакшн-окружения. Давайте разберем этот процесс подробнее.
🚩Что такое релизные ветки?
Это ветки, которые создаются на этапе, когда функционал и исправления, готовые к выпуску, отделяются от основной ветки разработки (например,
main или develop). Они позволяют:
Заморозить текущий набор изменений для подготовки к релизу.
Отделить доработки и исправления релиза от активной разработки.
Упростить процесс тестирования и последующего деплоя.
🚩Куда обычно идет деплой из релизных веток?
🟠Тестовое окружение (QA environment)
На тестовое окружение деплой из релизной ветки осуществляется для прохождения проверок качества: Автоматизированное и ручное тестирование.
Проверка производительности, безопасности и других аспектов.
stages:
- test
deploy:
stage: test
script:
- echo "Deploying release branch to QA"
- ./deploy.sh qa
only:
- release/*
🟠Стейджинговое окружение (Staging)
После успешного прохождения тестов релизную ветку деплоят в стейджинг. Это окружение максимально похоже на продакшн и используется для финального тестирования: Проверка совместимости с продакшн-системами.
Демонстрация функционала заказчикам или заинтересованным сторонам.
stages:
- staging
deploy:
stage: staging
script:
- echo "Deploying release branch to Staging"
- ./deploy.sh staging
only:
- release/*
🟠Продакшн (Production)
После прохождения всех этапов тестирования изменения из релизной ветки деплоятся в продакшн: Обычно это делается автоматически после финального подтверждения.
В некоторых командах финальный мерж релизной ветки в main инициирует деплой.
stages:
- production
deploy:
stage: production
script:
- echo "Deploying release branch to Production"
- ./deploy.sh production
only:
- release/*
🚩Зачем это нужно?
🟠Изоляция релиза
Релизные ветки позволяют избежать включения новых, неподготовленных изменений в текущий релиз.
🟠Гибкость
Если в процессе тестирования или релиза найдены баги, их можно исправить прямо в релизной ветке без влияния на разработку.
🟠Управление рисками
Релизные ветки упрощают управление разными стадиями разработки и релиза.
🚩Пример использования
1⃣Разработчик создает ветку release/1.0.0 от develop.
2⃣Выполняются тесты на QA окружении.
3⃣Исправляются баги в release/1.0.0, и изменения деплоятся на стейджинг.
4⃣После успешного тестирования ветка мержится в main, и начинается деплой в продакшн.
Ставь 👍 и забирай 📚 Базу знаний🤔 Есть приложение, мы его запускаем, и оно завершается с кодом, не равным 0. Как его подебажить?
1. Посмотреть exit code — может указать тип ошибки.
2. Проверить логи приложения.
3. Добавить логирование и вывод ошибок в консоль.
4. Запустить через strace или gdb.
5. Проверить зависимости, переменные окружения, права на доступ.
Ненулевой код означает ошибку исполнения — важно найти её источник.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Что касается безопасности где хранить переменные секреты?
Хранение секретных переменных, таких как пароли, ключи API, токены доступа и прочие конфиденциальные данные, требует особого подхода для обеспечения безопасности. Ниже описаны рекомендуемые методы и инструменты для безопасного хранения секретных переменных в различных средах разработки и производства.
🟠Использование специализированных хранилищ секретов
HashiCorp Vault:
Это инструмент для управления секретами и защиты данных. Он позволяет централизованно хранить, доступ к которым строго контролируется, и динамически создавать секреты.
Преимущества: Поддержка динамических секретов, интеграция с большинством сред и технологий, высокий уровень безопасности.
AWS Secrets Manager и Azure Key Vault:
Эти облачные сервисы предоставляют управляемые решения для безопасного хранения и управления доступом к секретным данным, включая автоматическое обновление секретов.
Преимущества: Интеграция с облачными сервисами, упрощение ротации секретов, мониторинг и логирование доступа.
🟠Инкапсуляция секретов в среде выполнения
Docker Secrets и Kubernetes Secrets:
Предлагают встроенные механизмы для безопасного хранения секретов, которые используются контейнерами во время выполнения.
Преимущества: Локальная интеграция с системами оркестрации контейнеров, базовое шифрование на диске и управление доступом.
🟠Секреты в контролируемом CI/CD
Платформы CI/CD, такие как GitLab и GitHub, предоставляют возможности для безопасного хранения переменных среды и секретов, которые могут быть использованы в процессах автоматизации без разглашения.
Преимущества: Простота использования, интеграция с процессами разработки, защита от внешнего доступа.
🟠Шифрование секретов
Инструменты шифрования: Использование инструментов, таких как GnuPG (GPG), для шифрования секретов перед их сохранением в системах контроля версий или конфигурационных файлах.
Преимущества: Высокий уровень безопасности, контроль доступа к секретам на уровне пользователя.
Ставь 👍 и забирай 📚 Базу знаний
