Библиотека собеса по DevOps | вопросы с собеседований
3.07K subscribers
121 photos
4 videos
2 files
154 links
Вопросы с собеседований по DevOps и ответы на них.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/d7e18893

Работать у нас: https://job.proglib.io/

Наши каналы: https://yangx.top/proglibrary/9197
加入频道
В Ansible роли есть директории vars и default. Что они содержат и чем отличаются?

Ansible применяет порядок приоритета переменных. Ниже представлен список в порядке повышения приоритета.

command line values (for example, -u my_user, these are not variables)
role defaults (defined in role/defaults/main.yml)
inventory file or script group vars
inventory group_vars/all
playbook group_vars/all
inventory group_vars/*
playbook group_vars/*
inventory file or script host vars
inventory host_vars/*
playbook host_vars/*
host facts / cached set_facts
play vars
play vars_prompt
play vars_files
role vars (определяемые в role/vars/main.yml)
block vars (только для задач в block)
task vars (только для задач)
include_vars
set_facts / registered vars
role (и include_role) params
include params
extra vars (например, -e "user=my_user") (всегда приоритетнее)

Соответственно, переменные в vars будут приорететнее, чем в defaults.
Что такое Docker? В чем отличие контейнера от образа?

Docker — программное обеспечение для автоматизации развёртывания и управления приложениями в средах с поддержкой контейнеризации.

Образ — шаблон приложения, который содержит слои файловой системы в режиме "только-чтение".

Контейнер — запущенный образ приложения, который кроме нижних слоев в режиме "только чтение" содержит верхний слой в режиме "чтение-запись".
Что такое эфемерные контейнеры?

Эфемерные контейнеры стали бета-функцией в Kubernetes v1.23 и теперь включены по умолчанию. Эфемерные контейнеры предназначены для транзитных задач, когда вам нужно временно подключить дополнительный контейнер к существующему поду. Это идеально подходит для отладочных операций, когда вы хотите проверить поды, не затрагивая живые экземпляры контейнеров.
Чем отличается StatefulSet от Deployment?

Deployment — ресурс Kubernetes предназнваенный для развертывания приложения без сохранения состояния. При использовании PVC все реплики будут использовать один и тот же том, и ни один из них не будет иметь собственного состояния.

StatefulSet — поддерживают состояние приложений за пределами жизненного цикла отдельных модулей pod, например для хранилища. Используется для приложений с отслеживанием состояния, каждая реплика модуля будет иметь собственное состояние и будет использовать свой собственный том.
Зачем нужен terraform taint?

Команда terraform taint пометит ресурс инфраструктуры, который будет удален и заново создан при следующем применении команды terraform apply.
Чем отличается count от for_each?

count — это итерация по списку, который содержит целочисленные элементы, for_each — это итерация по корневым ключам словаря, которые могут содержать данные любого типа.

resource "aws_instance" "web" {
count = 3

instance_type = "t2.micro"
ami = data.aws_ami.debian_buster.id
tags = {
Name = "WebServer-${count.index + 1}"
}
}
Описание ресурса выше создаст 3 одинаковых EC2 инстанса, изменив имя с указанием номера текущего состояния счётчика. count начинает отсчет с 0, поэтому чтобы 1 EC2 инстанс был с индексом 1 в имени ему прибавили 1.

resource "aws_instance" "server" {
for_each = {
web = { type = "t2.micro", public_ip = true },
db = { type = "m5.large", public_ip = false }
}

instance_type = each.value["type"]
ami = data.aws_ami.debian_buster.id
associate_public_ip_address = each.value["public_ip"]
tags = {
Name = "each.key"
}
}
Ресурс выше создаст 2 EC2 инстанса с итерацией по ключам each.key и использовав значения вложенных словарей в конфигурации EC2.
Чем отличается Kubernetes от Openshift?

Openshift имеет более строгие политики безопасности и модели аутентификации.
Openshift поддерживает полную интеграцию CI/CD Jenkins.
Openshift имеет веб-консоль по-умолчанию. В Kubernetes консоль необходимо дополнительно устанавливать консоль.
В Kubernetes возможно устанавливать сторонние сетевые плагины. В Openshift используется собственное сетевое решение Open vSwitch, которое предоставляет 3 различный плагина.
Kubernetes может быть установлен практически на любой дистрибутив Linux. Openshift имеет ограничения на устанавливаемые дистрибутивы, преимущественно используются RH-дистрибутивы.
Kubernets доступен в большинстве облачных платформ - GCP, AWS, Azure, Yandex.Cloud. Openshift доступен на облачной платформе Azure и облаке от IBM.
По-умолчанию, в Openshift поды в кластере могут быть запущены только под обычным пользователем, чтобы запустить под под пользователем root необходимо выдать права для сервисного аккаунта. В Kubernetes по-умолчанию поды могут быть запущены по пользователем root.
Теорема САР. Что это такое?

Теорема CAP (известная также как теорема Брюера) — эвристическое утверждение о том, что в любой реализации распределённых вычислений возможно обеспечить не более двух из трёх следующих свойств:

Согласованность данных (англ. consistency) — во всех вычислительных узлах в один момент времени данные не противоречат друг другу;
Доступность (англ. availability) — любой запрос к распределённой системе завершается корректным откликом, однако без гарантии, что ответы всех узлов системы совпадают;
Устойчивость к разделению (англ. partition tolerance) — расщепление распределённой системы на несколько изолированных секций не приводит к некорректности отклика от каждой из секций.
Что такое операторы в понятиях Kubernetes?

Операторы — это программные расширения Kubernetes,призванное автоматизировать выполнение рутинных действий над объектами кластера при определённых событиях.

Оператор работает по подписке на события к API Kubernetes.
Чем Router в Openshift отличается от Ingress в Kubernetes?

Router Openshift использует haproxy, как прокси-вебсервер. Ingress как в Kubernetes, так и OpenShift может быть разным (nginx, haproxy, caddy, etc).
Почему для установки Kubernetes требуется отключить swap?

Планировщик Kubernetes определяет наилучший доступный узел для развертывания вновь созданных модулей. Если в хост-системе разрешена подкачка памяти, это может привести к проблемам с производительностью и стабильностью в Kubernetes. По этой причине Kubernetes требует, чтобы вы отключили swap в хост-системе.
Как оцениваете свой уровень знания ОС Linux по десятибальной шкале?

Вопрос с подвохом. Ответ «на десять» для заядлого линуксоида все равно что красная тряпка для быка, поэтому вы рискуете провести следующие два часа своей жизни максимально увлекательно :)
Объясните концепцию Sudo в Linux.

Команда sudo (superuser do) в Linux — это мощная утилита, которая позволяет пользователям выполнять команды с привилегиями другого пользователя, обычно суперпользователя или root. Концепция sudo обеспечивает контролируемый способ управления тем, какие пользователи могут выполнять административные задачи, не предоставляя им неограниченный root-доступ.
Что такое CBD?

Компонентно-ориентированное программирование (CBD) представляет собой инновационный подход к разработке продукта. Вместо традиционного создания продукта с нуля, разработчики используют CBD для поиска уже существующих, проверенных и качественных компонентов, которые затем комбинируются для создания нового и оригинального продукта. Этот подход позволяет улучшить качество и надежность продукта, а также упростить его сопровождение и обновление, благодаря использованию уже проверенных компонентов. CBD открывает новые возможности для разработчиков, позволяя им быстрее и эффективнее создавать продукты, используя уже существующие ресурсы. нового и оригинального продукта. Этот процесс проходит вместо обычного для многих процесса создания продукта с нуля.
Есть ли разница между Agile и DevOps? Если да, пожалуйста, объясните.

Начните с описания общих черт. Затем перейдите к отличиям: Методика Agile предполагает создание и выпуск ПО, после чего разработчики за него формально не отвечают. С DevOps все обстоит иначе: эта методика направлена как раз на то, чтобы развернуть готовое ПО максимально надежным и безопасным способом.
Что такое автоматическое тестирование?

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

Хороший инженер DevOps должен быть знаком с облачными технологиями.
В связи с тем, что мир обращается к облаку, растет спрос на инженеров с опытом работы с облачными технологиями, включая популярные Amazon Web Server (AWS) и RackSpace, Microsoft Azure, Google Elastic Cloud и OpenStack.

Дело не только в количестве технологий, с которыми работал кандидат, но и в степени его опыта на предыдущей работе. Несколько лет назад AWS, вероятно, была единственной технологией, которую знали большинство инженеров DevOps. В настоящее время опыта работы с AWS недостаточно; спросите об их опыте работы с S3, EC, Glacier, Redshift, Route53 и другими.

Хорошие кандидаты будет рад описать количество облачных экземпляров, с которыми они работают в настоящее время, и часы, которые они проводят, работая в облаке в различных средах. Они также могут упомянуть, работали ли они над проектированием, внедрением и переносом в облако или увеличивали масштаб среды с малого до большого в предыдущих работах.
Можете ли вы объяснить концепцию «Сдвиг влево, чтобы уменьшить количество ошибок» в DevOps?

Сдвиг влево — это идея DevOps для улучшения безопасности, производительности и других факторов. Давайте возьмем пример: если мы посмотрим на все процессы DevOps, мы можем заявить, что безопасность тестируется до этапа развертывания. Мы можем добавить безопасность на этапе разработки, который находится слева, используя метод сдвига влево. [будет изображено на схеме] Мы можем интегрироваться на всех этапах, в том числе до разработки и во время тестирования, а не только разработки. Это, скорее всего, повышает уровень безопасности за счет обнаружения неисправностей на ранней стадии.
Объясните архитектуру master-slave в Jenkins.

Мастер
Jenkins извлекает код из удаленного репозитория GitHub каждый раз, когда происходит фиксация кода.

Он распределяет рабочую нагрузку между всеми slave устройствами Jenkins.

По запросу мастера Jenkins slave устройства выполняют, собирают, тестируют и составляют отчеты об испытаниях.
Что такое Jenkinsfile?

Jenkinsfile
содержит определение конвейера Jenkins и проверяется в репозитории системы контроля версий. Это текстовый файл.

Он позволяет просматривать код и выполнять итерации в пайплайне. Он позволяет вести контрольный журнал пайплайна.
Для пайплайна существует единый источник достоверной информации, который можно просматривать и редактировать.