Исходный код вики DevOps
Версия 3.1 от Anton Krivchenkov на 06.01.2025 19:01
Скрыть последних авторов
| author | version | line-number | content |
|---|---|---|---|
![]() |
2.2 | 1 | ВОПРОСЫ для проверки знаний: |
| 2 | |||
![]() |
2.1 | 3 | {{toc/}} |
| 4 | |||
![]() |
1.1 | 5 | ![[devOps.jpg|devOps.jpg]] |
![]() |
2.1 | 6 | |
| 7 | Порядок изучения технологий для DevOps: [https://roadmap.sh/r/devops-fork-hzrp1](https://roadmap.sh/r/devops-fork-hzrp1) и комментарии к порядку изучения технологий: | ||
| 8 | |||
| 9 | 1. Выучить основы bash и python/go (дополнительная информация ниже в Базовые знания Linux, сетей и bash скриптов) | ||
![]() |
2.2 | 10 | 1. Из операционных систем советую поставить себе Ubuntu: [https://ubuntu.com/desktop](https://ubuntu.com/desktop) |
![]() |
2.1 | 11 | |
![]() |
2.2 | 12 | > Большинство серверов работают на linux и Ubuntu будет удобен в обычном пользовании и подготовке к работе |
![]() |
2.1 | 13 | |
| 14 | 1. Из текстовых редакторов научиться открывать файлы и редактировать в nano, а также в vim (если удобно) | ||
| 15 | 1. По терминалу вся информация будет в Базовые знания Linux, сетей и bash скриптов | ||
| 16 | 1. По системе контроля версий git ниже в Git система контроля версий и автоматизация с помощью GitLab CI/CD | ||
| 17 | 1. По контейнеризации изучать Docker, ниже в Контейнеризация с помощью Docker и Kubernetes | ||
| 18 | 1. Насчет Облачных провайдеров, в России лучше использовать Yandex Cloud, SberCloud или VK Cloud | ||
| 19 | 1. Сети изучать ниже в Базовые знания Linux, сетей и bash скриптов | ||
| 20 | 1. Изучать Terraform и Ansible как IaC (инфраструктуру как код, ниже в IaC - (Инфраструктура как код) создание серверов с помощью Terraform и настройка с помощью Ansible) | ||
| 21 | 1. CI/CD проще изучать на основе GitHub Actions, а потом GitLab CI/CD (автоматизация) | ||
| 22 | 1. Мониторинг ниже в пункте Мониторинг, золотые сигналы и логгирование | ||
| 23 | 1. Управление паролями, секретными данными или ключами с помощью Vault | ||
| 24 | 1. Мониторинг приложений: Jaeger Tracing, Sentry | ||
| 25 | 1. Управление логами Graylog и Loki, тоже ниже в Мониторинг, золотые сигналы и логгирование | ||
| 26 | 1. Под Kubenretes тоже отдельный пункт ниже совместо с Docker (в последних версиях Kubenretes отказались от Docker) | ||
| 27 | 1. Хранение собраных приложений, docker образов, helm чартов: Nexus и Artifactory | ||
| 28 | 1. Наблюдаемость и управление сетевым трафиком в Kubenretes: istio или linkerd (ниже в пункте с Kubenretes) | ||
| 29 | |||
| 30 | Полезные youtube каналы: | ||
| 31 | |||
| 32 | * Канал с плейлистами по которым учились многие devops инженеры: [https://www.youtube.com/@ADV-IT/playlists](https://www.youtube.com/@ADV-IT/playlists) | ||
| 33 | * Канал от создателей платных курсов Merion Academy на котором рассказывают про технологии из RoadMap выше простыми словами: [https://www.youtube.com/watch?v=NtGN7Nz6I0c](https://www.youtube.com/watch?v=NtGN7Nz6I0c) | ||
| 34 | * Хороший канал по devops, все видео смотреть на скорости 1.25 (если не хотите заснуть): [https://www.youtube.com/@pavlenkoat/playlists](https://www.youtube.com/@pavlenkoat/playlists) | ||
| 35 | |||
![]() |
2.2 | 36 | #### Базовые знания Linux, сетей и bash скриптов |
![]() |
2.1 | 37 | |
| 38 | | Цель и что нужно для изучения + Задания | Как поймем что цель достигнута? | | ||
| 39 | | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | ||
| 40 | | Linux - ядро операционной системы, например Ubuntu построена на базе Linux. Пройти курс [https://youtu.be/wdaHKwvNRuU?si=UnvTogPjiVOE5PEc](https://youtu.be/wdaHKwvNRuU?si=UnvTogPjiVOE5PEc) и сделать все задания [https://github.com/eabykov/devops-linux](https://github.com/eabykov/devops-linux) | Может устанавливать программы, знает основные команды и может их применять, что такое ядро linux, знает какие основные папки есть в /, отвечает на вопросы [https://github.com/bregman-arie/devops-exercises/tree/master/topics/linux](https://github.com/bregman-arie/devops-exercises/tree/master/topics/linux) и [https://github.com/bregman-arie/devops-exercises#operating-system---self-assessment](https://github.com/bregman-arie/devops-exercises#operating-system---self-assessment) | | ||
| 41 | | Linux скрипты - простые сценарии, автоматизация рутинных задач. Задание: сделать скрипты для всех заданий [https://github.com/eabykov/devops-linux](https://github.com/eabykov/devops-linux) и задания 2,5,9 в [https://github.com/bregman-arie/devops-exercises/tree/master/topics/shell](https://github.com/bregman-arie/devops-exercises/tree/master/topics/shell) | Умеет создавать и использовать переменные, может применять условный оператор IF и использовать CASE, умеет использовать циклы, вопросы [https://github.com/bregman-arie/devops-exercises/tree/master/topics/shell](https://github.com/bregman-arie/devops-exercises/tree/master/topics/shell) | | ||
| 42 | | Сети и сетевые технологии - как сервера (настольные ПК и тд) обьединяются в общую сеть для обмена информацией, пример интернет, глобальная сеть обьединяющая компьютеры по всему миру. Прочесть статью [https://habr.com/ru/post/326574/](https://habr.com/ru/post/326574/) , [https://ru.wikipedia.org/wiki/](https://ru.wikipedia.org/wiki/)Маска_подсети и [https://habr.com/ru/post/711578/](https://habr.com/ru/post/711578/) , посмотреть про websocket [https://youtu.be/19d4AXt3dSI](https://youtu.be/19d4AXt3dSI) | Как подключиться по SSH и как работает SSH, что такое 'пакет', уровни TCP/IP, что такое DNS, что такое HTTP/HTTPS протокол и REST API, что такое IP и маска подсети, как на linux посмотреть сетевые интерфейсы, сниффинг трафика, что такое Nginx (как выглядит конфиг) и round-robin балансировка, вопросы [https://github.com/bregman-arie/devops-exercises#network](https://github.com/bregman-arie/devops-exercises#network) и [https://github.com/bregman-arie/devops-exercises/tree/master/topics/dns](https://github.com/bregman-arie/devops-exercises/tree/master/topics/dns) | | ||
| 43 | |||
![]() |
2.2 | 44 | #### Git система контроля версий и автоматизация с помощью GitLab CI/CD |
![]() |
2.1 | 45 | |
| 46 | | Цель и что нужно для изучения + Задания | Как поймем что цель достигнута? | | ||
| 47 | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | ||
| 48 | | Git - система управления версиями для совместной работы над проектом и в случае чего удобному восстановлению к более старой версии [https://youtu.be/EeARyFrZsnU](https://youtu.be/EeARyFrZsnU) . Пройти курс [https://www.youtube.com/watch?list=PLg5SS_4L6LYstwxTEOU05E0URTHnbtA0l](https://www.youtube.com/watch?list=PLg5SS_4L6LYstwxTEOU05E0URTHnbtA0l) до 15 урока и создать свой репозиторий на github с несколькими ветками и тегами | Знает что такое commit и как его делать, умеет делать branch и tag и знает в чем между ними разница, знает что такое merge и как исправлять конфликты, знает как откатиться на более старую версию, как склонировать репозиторий локально и как загрузить свои изменения в github, в чем разница межу fetch и pull, вопросы [https://github.com/bregman-arie/devops-exercises/tree/master/topics/git](https://github.com/bregman-arie/devops-exercises/tree/master/topics/git) | | ||
| 49 | | CI/CD - выполнение автоматически действий по триггеру, например commit в master, создание merge, создание tag или cron расписанию. В курсе [https://www.youtube.com/watch?list=PLg5SS_4L6LYstwxTEOU05E0URTHnbtA0l](https://www.youtube.com/watch?list=PLg5SS_4L6LYstwxTEOU05E0URTHnbtA0l) 15й и 16й, [https://youtu.be/tE3u1LquFcg?t=212](https://youtu.be/tE3u1LquFcg?t=212) скорость 1.25, [https://github.com/gitlabhq/gitlabhq/blob/master/doc/ci/docker/using_kaniko.md](https://github.com/gitlabhq/gitlabhq/blob/master/doc/ci/docker/using_kaniko.md) .gitlab-ci.yml как собирать Docker Image в GitLab правильно | Сделал автоматическую сборку своего Docker Image и отправку dockerhub хранилище образов (хранилище образов называют registry), GitLab CI/CD основные понятия, из каких шагов состоит идеальный CI/CD пайплайн, вопросы [https://github.com/bregman-arie/devops-exercises/tree/master/topics/cicd](https://github.com/bregman-arie/devops-exercises/tree/master/topics/cicd) | | ||
| 50 | |||
![]() |
2.2 | 51 | #### Контейнеризация с помощью Docker и Kubernetes |
![]() |
2.1 | 52 | |
| 53 | | Цель и что нужно для изучения + Задания | Как поймем что цель достигнута? | | ||
| 54 | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | ||
| 55 | | Docker - упаковка приложения в image в котором будет все что нужно для запуска [https://youtu.be/aZTL2zRmOnA](https://youtu.be/aZTL2zRmOnA) | Понимает зачем нужен docker, умеет создавать свой образ и пушить его в dockerhub, умеет запускать несколько образов вместе используя compose, вопросы [https://habr.com/ru/company/southbridge/blog/528206/](https://habr.com/ru/company/southbridge/blog/528206/) | | ||
| 56 | | Kubernetes - приводит состояние кластера из пункта А в пункт С, нужно только обьяснить с помощью yaml манифестов чего хотим в пункте С. Пройти курс [https://learn.microsoft.com/ru-ru/training/modules/intro-to-kubernetes/](https://learn.microsoft.com/ru-ru/training/modules/intro-to-kubernetes/) вместе с [https://github.com/eabykov/kubernetes](https://github.com/eabykov/kubernetes) и поставить локально linkerd (посмотреть какие сервисы взаимодействуют, есть ли ошибки, сколько запросов в секунду) | Понимает зачем нужен Kubernetes, как устанавливать приложения через helm, вопросы [https://github.com/bregman-arie/devops-exercises/tree/master/topics/kubernetes](https://github.com/bregman-arie/devops-exercises/tree/master/topics/kubernetes) | | ||
| 57 | |||
| 58 | Примерный порядок изучения технологии: | ||
| 59 | |||
| 60 | * Docker: [https://roadmap.sh/docker](https://roadmap.sh/docker) | ||
| 61 | * Kubernetes: [https://roadmap.sh/kubernetes](https://roadmap.sh/kubernetes) | ||
| 62 | |||
![]() |
2.2 | 63 | #### Мониторинг, золотые сигналы и логгирование |
![]() |
2.1 | 64 | |
| 65 | | Цель и что нужно для изучения + Задания | Как поймем что цель достигнута? | | ||
| 66 | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | ||
| 67 | | Мониторинг - сбор исторических данных о нашей системе [https://youtu.be/wDan20_WyNg](https://youtu.be/wDan20_WyNg) использовать пример [https://github.com/ruanbekker/docker-monitoring-stack-gpnc](https://github.com/ruanbekker/docker-monitoring-stack-gpnc) , Linux серверах, показателей приложений и их логов, сетевых метрик, и оповещение, если что-то пошло не так. Prometheus + Grafana + любые экспортеры, ELK стек [https://youtu.be/ZcC3BTChCY0?t=110](https://youtu.be/ZcC3BTChCY0?t=110) и [https://github.com/docker/awesome-compose/tree/master/elasticsearch-logstash-kibana](https://github.com/docker/awesome-compose/tree/master/elasticsearch-logstash-kibana) , Трейсинг [https://youtu.be/7Dyf4AiUAcQ](https://youtu.be/7Dyf4AiUAcQ) | Понимает как создавать алерты (оповещения), может настроить мониторинг Docker, linux host, в Kubernetes установить [https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack](https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack) , вопросы [https://github.com/bregman-arie/devops-exercises#prometheus](https://github.com/bregman-arie/devops-exercises#prometheus) , [https://github.com/bregman-arie/devops-exercises#monitoring](https://github.com/bregman-arie/devops-exercises#monitoring) и [https://github.com/bregman-arie/devops-exercises#elastic](https://github.com/bregman-arie/devops-exercises#elastic) | | ||
| 68 | |||
| 69 | Логгирование в Kubernetes: [https://kubernetes.io/docs/concepts/cluster-administration/logging/](https://kubernetes.io/docs/concepts/cluster-administration/logging/) | ||
| 70 | |||
| 71 | Золотые сигналы: [https://habr.com/ru/companies/southbridge/articles/688082/](https://habr.com/ru/companies/southbridge/articles/688082/) | ||
| 72 | |||
| 73 | * Процент успешных запросов | ||
| 74 | * RPS (requests per second) - количество запросов в секунду | ||
| 75 | * время обработки запросов | ||
| 76 | |||
| 77 | Автоматический мониторинг золотых сигналов (Golden metrics) с помощью Linkerd: [https://linkerd.io/2.13/features/telemetry/](https://linkerd.io/2.13/features/telemetry/) | ||
| 78 | |||
| 79 | Пример алерта в AlertManager который срабатывает по условию из Prometheus | ||
| 80 | |||
![]() |
2.2 | 81 | ```yaml |
| 82 | - name: Host out of memory | ||
| 83 | # description - описание алерта, более детальное пояснение о чем он | ||
| 84 | description: Node memory is filling up (< 10% left) | ||
| 85 | # query - запрос в случае которого будет срабатывать алерт, правило (например памяти меньше 10%) | ||
| 86 | query: '(node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes * 100 < 10) * on(instance) group_left (nodename) node_uname_info{nodename=~".+"}' | ||
| 87 | # severity - уровень алертинга, важность, например warning это предупреждение, а critical критично и опасно - самый большой приоритет | ||
| 88 | severity: warning | ||
| 89 | # for - сколько минут должно соблюдаться 'query' выше, 0m сработает алерт сразу, 2m правило в query должно соблюдаться 2 минуты | ||
| 90 | for: 2m | ||
| 91 | ``` | ||
| 92 | |||
![]() |
2.1 | 93 | > Готовые алерты брать тут: [https://github.com/samber/awesome-prometheus-alerts/blob/master/_data/rules.yml](https://github.com/samber/awesome-prometheus-alerts/blob/master/_data/rules.yml) |
| 94 | |||
| 95 | Примеры работы с логами в ELK: | ||
| 96 | |||
| 97 | * Приложения database записывает логи на диск в файл: 2023-10-11 18:45:01 INFO Application ready | ||
| 98 | * Приложения web-app записывает логи на диск в файл: 18:45:02 2023-10-11 error: failed to start | ||
| 99 | |||
| 100 | Логи которые попадут в Elasticsearch (формат JSON): | ||
| 101 | |||
![]() |
2.2 | 102 | ```json |
| 103 | {"program_name": "database", "date": "2023-10-11", "time": "18:45:01", "level": "INFO", "message": "Application ready"} | ||
| 104 | {"program_name": "web-app", "date": "2023-10-11", "time": "18:45:02", "level": "ERROR", "message": "failed to start"} | ||
| 105 | ``` | ||
![]() |
2.1 | 106 | |
![]() |
2.2 | 107 | #### IaC - (Инфраструктура как код) создание серверов с помощью Terraform и настройка с помощью Ansible |
![]() |
2.1 | 108 | |
| 109 | | Цель и что нужно для изучения + Задания | Как поймем что цель достигнута? | | ||
| 110 | | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | ||
| 111 | | Ansible - упарвляет конфигурацией хостов по SSH [https://youtu.be/23Zec3ORJOY](https://youtu.be/23Zec3ORJOY) . Пройти курс [https://www.youtube.com/watch?list=PLg5SS_4L6LYufspdPupdynbMQTBnZd31N](https://www.youtube.com/watch?list=PLg5SS_4L6LYufspdPupdynbMQTBnZd31N) 1,6,10,12,14,15,19 не по названию | Понимает зачем нужен Ansible, что такое идемпотентность, что такое playbook, умеет писать свои роли, вопросы [https://github.com/bregman-arie/devops-exercises/tree/master/topics/ansible](https://github.com/bregman-arie/devops-exercises/tree/master/topics/ansible) | | ||
| 112 | | Terraform [https://youtu.be/ph4iNA0Uuko](https://youtu.be/ph4iNA0Uuko) . Пройти курс [https://www.youtube.com/watch?list=PLg5SS_4L6LYujWDTYb-Zbofdl44Jxb2l8](https://www.youtube.com/watch?list=PLg5SS_4L6LYujWDTYb-Zbofdl44Jxb2l8) 1,3,6,7,12,14,16,18 не по названию | Понимает зачем нужен Terraform, знает как создавать ресурсы (например виртуальную машину), где хранится состояние (информация) о том что сделал terraform, вопросы [https://habr.com/ru/company/southbridge/blog/528206/](https://habr.com/ru/company/southbridge/blog/528206/) | | ||
| 113 | |||
| 114 | Генерация пары SSH ключей: | ||
| 115 | |||
![]() |
2.3 | 116 | ssh-keygen -t ed25519 -C 'ВАШ АДРЕС ЭЛЕКТРОННОЙ ПОЧТЫ' |
| 117 | |||
![]() |
2.1 | 118 | Файловая структура Ansible role: |
| 119 | |||
![]() |
2.3 | 120 | roles/ # роли хранятся в папке 'roles' |
| 121 | prometheus/ # имя роли, в нашем случае 'prometheus' | ||
| 122 | tasks/ | ||
| 123 | main.yml # ниже пример файла | ||
| 124 | files/ | ||
| 125 | prometheus.conf # файл который будет скопирован на удаленную машину | ||
| 126 | vars/ | ||
| 127 | main.yml # переменные для данной роли, например версия prometheus | ||
| 128 | defaults/ | ||
| 129 | main.yml # самые базовые переменные по умолчанию, имеют ниже приоритет чем 'vars' выше | ||
| 130 | |||
![]() |
2.1 | 131 | Пример файла roles/prometheus/tasks/main.yml: |
| 132 | |||
![]() |
2.3 | 133 | ```yaml |
| 134 | - name: Install prometheus # устанавливаем prometheus на удаленном сервере | ||
| 135 | ansible.builtin.apt: | ||
| 136 | name: prometheus # какую программу будет устанавливать | ||
![]() |
2.1 | 137 | |
![]() |
2.3 | 138 | - name: Copy prometheus config to remote hosts # имя задачи, чтобы мы понимали что делает |
| 139 | ansible.builtin.copy: | ||
| 140 | src: prometheus.conf # где файл лежит у нас на компе | ||
| 141 | dest: /etc/prometheus/prometheus.conf # то куда файл попадет на удаленных хостах | ||
| 142 | owner: aider # кто будет хозяином файла на удаленной машине | ||
| 143 | group: aider # какая группа будет у файла на удаленной машине | ||
| 144 | mode: u=rw,g=r,o=r # какие права будут у файла на удаленной машине | ||
![]() |
2.1 | 145 | |
![]() |
2.3 | 146 | - name: restart prometheus # перезапустить prometheus |
| 147 | service: | ||
| 148 | name: prometheus # с каким сервисом будем работать | ||
| 149 | state: restarted # перезапустить prometheus | ||
| 150 | enabled: yes # запускать nginx при перезапуске системы | ||
| 151 | ``` | ||
| 152 | |||
| 153 | --- | ||
| 154 | |||
| 155 | ### Вопросы на собеседовании | ||
| 156 | |||
![]() |
2.1 | 157 | Хороший набор ответов: [https://habr.com/ru/articles/775560/](https://habr.com/ru/articles/775560/) |
| 158 | |||
| 159 | ### Linux | ||
| 160 | |||
![]() |
2.4 | 161 | 1. Что такое systemd |
| 162 | 1. Где находится конфигурация | ||
| 163 | 2. Какие основные поля в конфигурации | ||
| 164 | 2. Какие есть kill сигналы? | ||
| 165 | 1. Когда мы во время выполнения команды жмем Ctrl + C то какой сигнал отправляется? | ||
| 166 | 3. Что такое ядро Linux? | ||
| 167 | 1. Как посмотреть веросию ядра Linux? | ||
| 168 | 2. Что такое системные и вызовы и какие бывают? | ||
| 169 | 4. Какой командой посмотреть сетевые интерфейсы? | ||
| 170 | 5. Какой командой посмотреть какие приложения занимают те или иные порты? | ||
| 171 | 6. Как забрать права на доступ к файлу или директории в linux? | ||
| 172 | 7. Как можно запланировать выполнение комманды по расписанию, например каждую минуту? | ||
| 173 | 1. Как помотреть список уже запланированных заданий? | ||
| 174 | 8. Что такое SSH? | ||
| 175 | 1. Что нужно чтобы подключиться к удаленному серверу через SSH? | ||
| 176 | 2. Как посмотреть запущен ли SSH сервер на linux хосте? | ||
| 177 | 3. Где находится конфигурация SSH сервера? | ||
| 178 | 4. Где хранятся ssh ключи текущего пользователя? | ||
| 179 | 9. Как установить программму в Linux Ubuntu? | ||
| 180 | 10. Как обновить все программы? | ||
| 181 | 11. Как посмотреть информацию о комманде или программе? | ||
| 182 | 12. Как заменить одно слово на другое в файле? | ||
| 183 | 13. Как редактировать файл в Linux? | ||
| 184 | 1. Что такое файловый дискриптор? | ||
| 185 | 14. Как посмотреть запущенные процессы? | ||
| 186 | 15. Как завершить запущенный процесс grafana? | ||
![]() |
2.1 | 187 | |
| 188 | |||
| 189 | |||
| 190 | ### Git | ||
| 191 | |||
![]() |
2.4 | 192 | 1. Как создать новую ветку? |
| 193 | 1. Как переключиться на другую ветку? | ||
| 194 | 2. Как откатиться на несколько версий назад чтобы последние изменения ищезли? | ||
| 195 | 3. Как отправить наши текущие изменения в удаленный репозиторий? | ||
| 196 | 4. Как выполнить добавление изменений из одной ветки в другую? | ||
| 197 | 1. Что делать если при этом возник конфликт? | ||
| 198 | 5. Как скачать себе локально последние изменения из удаленного репозитория (репозиторий уже есть на компьютере)? | ||
| 199 | 6. Чем отличается tag от branch? | ||
| 200 | 7. Чем отличается fetch от pull? | ||
![]() |
2.1 | 201 | |
| 202 | ### GitLab | ||
| 203 | |||
![]() |
2.4 | 204 | 1. Что такое GitLab CI/CD и CI/CD в целом? |
| 205 | 1. Какие поля есть в шагах (stages)? | ||
| 206 | 2. Как хранить пароли? | ||
| 207 | 3. Как сделать так чтобы два или больше шагов запускались одновременно? | ||
| 208 | 2. Что такое артефакты и где они хранятся | ||
| 209 | 3. Что такое stage, preprod, prod окружения? | ||
| 210 | 4. Как склонировать себе локально git репозиторий из gitlab используя ssh? | ||
![]() |
2.1 | 211 | |
| 212 | ### Сеть и сетевые технологии | ||
| 213 | |||
![]() |
2.4 | 214 | 1. Что такое прокси и чем отличается от VPN? |
| 215 | 2. Что такое балансировщик нагрузки? | ||
| 216 | 3. Что такое кэширующий сервер и какие проблемы решает? | ||
| 217 | 4. Что такое выделенный IP адресс в cloud? | ||
| 218 | 1. Как правильно ограничить трафик к нашему приложению чтобы оно было доступно только нам? | ||
| 219 | 5. Какие есть уровни модели TCP/IP и пример протоколов на каждом из них? | ||
| 220 | 1. В чем разница между TCP и UDP? | ||
| 221 | 1. Что такое трехстороннее рукопожатие? | ||
| 222 | 2. В чем разница между HTTP и HTTPS? | ||
| 223 | 1. Опишите жизненный цикл запроса HTTP | ||
| 224 | 2. Какие существуют методы HTTP? | ||
| 225 | 3. Какие существуют коды/статусы ответа HTTP? | ||
| 226 | 4. Какие распространненые заголовки HTTP? | ||
| 227 | 3. Что такое TLS и как работает? | ||
| 228 | 4. Что такое SMTP и как работает? | ||
| 229 | 5. В чем разница между IP и MAC адресами? Для чего они используется? | ||
| 230 | 6. Какие основные виды HTTP запросов существуют? | ||
| 231 | 6. Что такое TTL (Time to Live)? | ||
| 232 | 7. Как работает DHCP? | ||
| 233 | 8. Что такое DNS сервер? | ||
| 234 | 1. По какому протоколу работает? | ||
| 235 | 2. Что должен делать если не нашел запись у себя в конфигурации? | ||
![]() |
2.1 | 236 | |
| 237 | ### Docker и работа с упакованными в контейнер приложениями | ||
| 238 | |||
![]() |
2.4 | 239 | 1. Чем контейнеризация Docker отличается от виртуализации? |
| 240 | 2. Чем отличается контейнер от образа (image)? | ||
| 241 | 3. Как создать свой образ docker? | ||
| 242 | 1. Что такое базовый образ? | ||
| 243 | 2. Чем хорошо образ alpine linux и чем он отличается например от образа ubuntu linux? | ||
| 244 | 3. В чем отличия между COPY и ADD? | ||
| 245 | 4. Есть ли отличия между CMD и ENTRYPOINT и можно ли их использовать вместе? | ||
| 246 | 5. Где лучше хранить собраные образы docker? | ||
| 247 | 4. Как запустить несколько образов вместе на своем компьютере для тестирования? | ||
| 248 | 1. Можно ли в docker compose ограничить использование RAM и CPU для отдельных контейнеров? | ||
| 249 | 2. Сохранятся ли данные записанные приложением в контенйнере на диск после его перезапуска? | ||
| 250 | 3. Что такое volumes и для каких приложений использовать их нужно? | ||
| 251 | 4. Как настроить контейнер так чтобы он перезапускался сам если приложение внутри сломается? | ||
| 252 | 5. Где хранятся volumes и logs в docker? | ||
![]() |
2.1 | 253 | |
| 254 | ### Облачные технологии | ||
| 255 | |||
| 256 | 1. Для чего нам вообще нужны облака? | ||
| 257 | 1. Что такое SaaS, PaaS и IaaS, в чем между ними разница? | ||
| 258 | 1. Что такое VPC, Security Group и EIP например в AWS? | ||
| 259 | |||
| 260 | ### Ansible и Terraform (инфраструктура как код) | ||
| 261 | |||
| 262 | 1. VPC, виртуальные машины или например EIP каким бы инструментом создавал? | ||
| 263 | 1. Устанавливал бы docker на linux машину, обновлял сервис, давал права на директорию? | ||
| 264 | |||
| 265 | ### Kubernetes или коротко k8s | ||
| 266 | |||
![]() |
2.5 | 267 | 1. Какие компоненты должны быть установлены на master node? |
| 268 | 1. А какие на worker node? | ||
| 269 | 2. Что такое etcd? | ||
| 270 | 1. Какой тип у этой базы данных? | ||
| 271 | 2. Почему в etcd должно быть нечетное количество реплик? | ||
| 272 | 3. Как настраивается сеть в k8s? | ||
| 273 | 1. Что такое CNI? | ||
| 274 | 2. Каким образом каждому pod выдается отдельный IP? | ||
| 275 | 4. Что такое service? | ||
| 276 | 1. Как с помощью service обратиться к pod в другом namespace? | ||
| 277 | 2. Является ли service DNS именем? | ||
| 278 | 3. По какому правилу service будет распределять трафик между pod? | ||
| 279 | 4. Чем отличаются service вида headless и clusterIP? | ||
| 280 | 5. Какие виды prob вы знаете? | ||
| 281 | 1. Для чего нужна каждая из них? | ||
| 282 | 6. Сколько контейнеров может быть в одном pod? | ||
| 283 | 1. Нужно ли создавать service для того чтобы контейнеры отправляли друг другу запросы в рамках одного pod? | ||
| 284 | 7. Какие ingress контроллеры вы знаете? | ||
| 285 | 1. Что такое ingress, какие ресурсы он связывает на сетевом уровне? | ||
| 286 | 2. Как в ingress использовать SSL сертификаты? | ||
| 287 | 8. Чем отличаются annotations от labels и приведите по одному примеру использования? | ||
| 288 | 9. Основные различия между Deployment, StatefulSet и DaemonSet? | ||
| 289 | 10. Что такое lifecycle хуки? | ||
| 290 | 1. Для чего используется preStop хук с `sleep 10` функцией? | ||
| 291 | 11. Для чего нужны лимиты (limits) и запросы (requests) у pod? | ||
| 292 | 1. HPA при расчетах использует limits или requests? | ||
| 293 | 2. Планировщик при выборе на какую node размещать pod учитывает limits? | ||
| 294 | 12. Каким образом можем ограничить права пользователей в k8s? | ||
| 295 | 13. Чем так удобны helm charts? | ||
| 296 | 14. Какие основные компоненты чарта? | ||
| 297 | 15. Что находится в файле `values.yaml` и `Chart.yaml`? | ||
| 298 | 16. Для чего в папке templates создают файл `_helpers.tpl`? | ||
| 299 | 17. Как создать цикл который создаст несколько сущностей (например ports в service)? | ||
| 300 | 18. Как сделать условный оператор для boolean значений и для строк? | ||
| 301 | 19. Что будет записано вместо темплейта `{{ divf .Values.replicaCount .Values.zones | ceil }}`? Как может пригодиться читать тут https://github.com/eabykov/devops-kubernetes/blob/main/ЛУЧШИЕ_ПРАКТИКИ.md в коментарие к разделу *Распределите ваши pod по разным node и разным зонам (датацентрам)* | ||
![]() |
2.1 | 302 | |
| 303 | ### Vault | ||
| 304 | |||
| 305 | 1. Для чего нужен Vault? | ||
| 306 | 1. Что такое KV secrets engine в vault? | ||
| 307 | 1. Как сделать так чтобы в Kubernetes использовать например для Deployment секреты из Vault? | ||
| 308 | |||
| 309 | ### Сервисная сетка (service mesh) | ||
| 310 | |||
| 311 | ### Jaeger трейсинг запросов | ||
| 312 | |||
| 313 | 1. Что нужно сделать в приложении чтобы его трейсы появились в Jaeger? | ||
| 314 | |||
| 315 | ### Flux и Flagger (канареечные релизы) |
