0 Голосов

Исходный код вики DevOps

Версия 2.3 от Anton Krivchenkov на 06.01.2025 19:01

Скрыть последних авторов
Anton Krivchenkov 2.2 1 ВОПРОСЫ для проверки знаний:
2
Anton Krivchenkov 2.1 3 {{toc/}}
4
Anton Krivchenkov 1.1 5 ![[devOps.jpg|devOps.jpg]]
Anton Krivchenkov 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 скриптов)
Anton Krivchenkov 2.2 10 1. Из операционных систем советую поставить себе Ubuntu: [https://ubuntu.com/desktop](https://ubuntu.com/desktop)
Anton Krivchenkov 2.1 11
Anton Krivchenkov 2.2 12 > Большинство серверов работают на linux и Ubuntu будет удобен в обычном пользовании и подготовке к работе
Anton Krivchenkov 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
Anton Krivchenkov 2.2 36 #### ​Базовые знания Linux, сетей и bash скриптов​
Anton Krivchenkov 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
Anton Krivchenkov 2.2 44 #### ​Git система контроля версий и автоматизация с помощью GitLab CI/CD​
Anton Krivchenkov 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
Anton Krivchenkov 2.2 51 #### ​Контейнеризация с помощью Docker и Kubernetes​
Anton Krivchenkov 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
Anton Krivchenkov 2.2 63 #### ​Мониторинг, золотые сигналы и логгирование​
Anton Krivchenkov 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
Anton Krivchenkov 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
Anton Krivchenkov 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
Anton Krivchenkov 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 ```
Anton Krivchenkov 2.1 106
Anton Krivchenkov 2.2 107 #### ​IaC - (Инфраструктура как код) создание серверов с помощью Terraform и настройка с помощью Ansible​
Anton Krivchenkov 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
Anton Krivchenkov 2.3 116 ssh-keygen -t ed25519 -C 'ВАШ АДРЕС ЭЛЕКТРОННОЙ ПОЧТЫ'
117
Anton Krivchenkov 2.1 118 Файловая структура Ansible role:
119
Anton Krivchenkov 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
Anton Krivchenkov 2.1 131 Пример файла roles/prometheus/tasks/main.yml:
132
Anton Krivchenkov 2.3 133 ```yaml
134 - name: Install prometheus # устанавливаем prometheus на удаленном сервере
135 ansible.builtin.apt:
136 name: prometheus # какую программу будет устанавливать
Anton Krivchenkov 2.1 137
Anton Krivchenkov 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 # какие права будут у файла на удаленной машине
Anton Krivchenkov 2.1 145
Anton Krivchenkov 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
Anton Krivchenkov 2.1 157 Хороший набор ответов: [https://habr.com/ru/articles/775560/](https://habr.com/ru/articles/775560/)
158
159 ### Linux
160
Anton Krivchenkov 2.2 161 1.
Anton Krivchenkov 2.1 162
Anton Krivchenkov 2.2 163 Что такое systemd 1. Где находится конфигурация 1. Какие основные поля в конфигурации 1.
Anton Krivchenkov 2.1 164
Anton Krivchenkov 2.2 165 Какие есть kill сигналы? 1. Когда мы во время выполнения команды жмем Ctrl + C то какой сигнал отправляется? 1.
Anton Krivchenkov 2.1 166
Anton Krivchenkov 2.2 167 Что такое ядро Linux? 1. Как посмотреть веросию ядра Linux? 1. Что такое системные и вызовы и какие бывают?
168
Anton Krivchenkov 2.1 169 1. Какой командой посмотреть сетевые интерфейсы?
170 1. Какой командой посмотреть какие приложения занимают те или иные порты?
171 1. Как забрать права на доступ к файлу или директории в linux?
Anton Krivchenkov 2.2 172 1.
Anton Krivchenkov 2.1 173
Anton Krivchenkov 2.2 174 Как можно запланировать выполнение комманды по расписанию, например каждую минуту? 1. Как помотреть список уже запланированных заданий? 1.
Anton Krivchenkov 2.1 175
Anton Krivchenkov 2.2 176 Что такое SSH? 1. Что нужно чтобы подключиться к удаленному серверу через SSH? 1. Как посмотреть запущен ли SSH сервер на linux хосте? 1. Где находится конфигурация SSH сервера? 1. Где хранятся ssh ключи текущего пользователя?
177
Anton Krivchenkov 2.1 178 1. Как установить программму в Linux Ubuntu?
179 1. Как обновить все программы?
180 1. Как посмотреть информацию о комманде или программе?
181 1. Как заменить одно слово на другое в файле?
Anton Krivchenkov 2.2 182 1.
Anton Krivchenkov 2.1 183
Anton Krivchenkov 2.2 184 Как редактировать файл в Linux? 1. Что такое файловый дискриптор?
185
Anton Krivchenkov 2.1 186 1. Как посмотреть запущенные процессы?
187 1. Как завершить запущенный процесс grafana?
188
189 ### Git
190
Anton Krivchenkov 2.2 191 1.
Anton Krivchenkov 2.1 192
Anton Krivchenkov 2.2 193 Как создать новую ветку? 1. Как переключиться на другую ветку?
194
Anton Krivchenkov 2.1 195 1. Как откатиться на несколько версий назад чтобы последние изменения ищезли?
196 1. Как отправить наши текущие изменения в удаленный репозиторий?
Anton Krivchenkov 2.2 197 1.
Anton Krivchenkov 2.1 198
Anton Krivchenkov 2.2 199 Как выполнить добавление изменений из одной ветки в другую? 1. Что делать если при этом возник конфликт?
200
Anton Krivchenkov 2.1 201 1. Как скачать себе локально последние изменения из удаленного репозитория (репозиторий уже есть на компьютере)?
202 1. Чем отличается tag от branch?
203 1. Чем отличается fetch от pull?
204
205 ### GitLab
206
Anton Krivchenkov 2.2 207 1.
Anton Krivchenkov 2.1 208
Anton Krivchenkov 2.2 209 Что такое GitLab CI/CD и CI/CD в целом? 1. Какие поля есть в шагах (stages)? 1. Как хранить пароли? 1. Как сделать так чтобы два или больше шагов запускались одновременно?
210
Anton Krivchenkov 2.1 211 1. Что такое артефакты и где они хранятся
212 1. Что такое stage, preprod, prod окружения?
213 1. Как склонировать себе локально git репозиторий из gitlab используя ssh?
214
215 ### Сеть и сетевые технологии
216
217 1. Что такое прокси и чем отличается от VPN?
218 1. Что такое балансировщик нагрузки?
219 1. Что такое кэширующий сервер и какие проблемы решает?
Anton Krivchenkov 2.2 220 1.
Anton Krivchenkov 2.1 221
Anton Krivchenkov 2.2 222 Что такое выделенный IP адресс в cloud? 1. Как правильно ограничить трафик к нашему приложению чтобы оно было доступно только нам? 1.
Anton Krivchenkov 2.1 223
Anton Krivchenkov 2.2 224 Какие есть уровни модели TCP/IP и пример протоколов на каждом из них? 1.
Anton Krivchenkov 2.1 225
Anton Krivchenkov 2.2 226 В чем разница между TCP и UDP? 1. Что такое трехстороннее рукопожатие? 1.
Anton Krivchenkov 2.1 227
Anton Krivchenkov 2.2 228 В чем разница между HTTP и HTTPS? 1. Опишите жизненный цикл запроса HTTP 1. Какие существуют методы HTTP? 1. Какие существуют коды/статусы ответа HTTP? 1. Какие распространненые заголовки HTTP? 1. Что такое TLS и как работает? 1. Что такое SMTP и как работает? 1. В чем разница между IP и MAC адресами? Для чего они используется? 1. Какие основные виды HTTP запросов существуют?
229
Anton Krivchenkov 2.1 230 1. Что такое TTL (Time to Live)?
231 1. Как работает DHCP?
Anton Krivchenkov 2.2 232 1.
Anton Krivchenkov 2.1 233
Anton Krivchenkov 2.2 234 Что такое DNS сервер? 1. По какому протоколу работает? 1. Что должен делать если не нашел запись у себя в конфигурации?
Anton Krivchenkov 2.1 235
236 ### Docker и работа с упакованными в контейнер приложениями
237
238 1. Чем контейнеризация Docker отличается от виртуализаии?
239 1. Чем отличается контейнер от образа (image)?
Anton Krivchenkov 2.2 240 1.
Anton Krivchenkov 2.1 241
Anton Krivchenkov 2.2 242 Как создать свой образ docker? 1. Что такое базовый образ? 1. Чем хорошо образ alpine linux и чем он отличается например от образа ubuntu linux? 1. В чем отличия между COPY и ADD? 1. Есть ли отличия между CMD и ENTRYPOINT и можно ли их использовать вместе? 1. Где лучше хранить собраные образы docker? 1.
Anton Krivchenkov 2.1 243
Anton Krivchenkov 2.2 244 Как запустить несколько образов вместе на своем компьютере для тестирования? 1. Можно ли в docker compose ограничить использование RAM и CPU для отдельных контейнеров? 1. Сохранятся ли данные записанные приложением в контенйнере на диск после его перезапуска? 1. Что такое volumes и для каких приложений использовать их нужно? 1. Как настроить контейнер так чтобы он перезапускался сам если приложение внутри сломается?
245
Anton Krivchenkov 2.1 246 1. Где хранятся volumes и logs в docker?
247
248 ### Облачные технологии
249
250 1. Для чего нам вообще нужны облака?
251 1. Что такое SaaS, PaaS и IaaS, в чем между ними разница?
252 1. Что такое VPC, Security Group и EIP например в AWS?
253
254 ### Ansible и Terraform (инфраструктура как код)
255
256 1. VPC, виртуальные машины или например EIP каким бы инструментом создавал?
257 1. Устанавливал бы docker на linux машину, обновлял сервис, давал права на директорию?
258
259 ### Kubernetes или коротко k8s
260
Anton Krivchenkov 2.2 261 1.
Anton Krivchenkov 2.1 262
Anton Krivchenkov 2.2 263 Какие компоненты должны быть установлены на master node? 1. А какие на worker node? 1.
Anton Krivchenkov 2.1 264
Anton Krivchenkov 2.2 265 Что такое etcd? 1. Какой тип у этой базы данных? 1. Почему в etcd должно быть нечетное количество реплик? 1.
Anton Krivchenkov 2.1 266
Anton Krivchenkov 2.2 267 Как настраивается сеть в k8s? 1. Что такое CNI? 1. Каким образом каждому pod выдается отдельный IP? 1.
Anton Krivchenkov 2.1 268
Anton Krivchenkov 2.2 269 Что такое service? 1. Как с помощью service обратиться к pod в другом namespace? 1. Является ли service DNS именем? 1. По какому правилу service будет распределять трафик между pod? 1. Чем отличаются service вида headless и clusterIP? 1.
Anton Krivchenkov 2.1 270
Anton Krivchenkov 2.2 271 Какие виды prob вы знаете? 1. Для чего нужна каждая из них? 1.
Anton Krivchenkov 2.1 272
Anton Krivchenkov 2.2 273 Сколько контейнеров может быть в одном pod? 1. Нужно ли создавать service для того чтобы контейнеры отправляли друг другу запросы в рамках одного pod? 1.
Anton Krivchenkov 2.1 274
Anton Krivchenkov 2.2 275 Какие ingress контроллеры вы знаете? 1. Что такое ingress, какие ресурсы он связывает на сетевом уровне? 1. Как в ingress использовать SSL сертификаты?
276
Anton Krivchenkov 2.1 277 1. Чем отличаются annotations от labels и приведите по одному примеру использования?
278 1. Основные различия между Deployment, StatefulSet и DaemonSet?
Anton Krivchenkov 2.2 279 1.
Anton Krivchenkov 2.1 280
Anton Krivchenkov 2.2 281 Что такое lifecycle хуки? 1. Для чего используется preStop хук с sleep 10 функцией? 1.
Anton Krivchenkov 2.1 282
Anton Krivchenkov 2.2 283 Для чего нужны лимиты (limits) и запросы (requests) у pod? 1. HPA при расчетах использует limits или requests? 1. Планировщик при выборе на какую node размещать pod учитывает limits?
284
Anton Krivchenkov 2.1 285 1. Каким образом можем ограничить права пользователей в k8s?
286 1. Чем так удобны helm charts?
287 1. Какие основные компоненты чарта?
288 1. Что находится в файле values.yaml и Chart.yaml?
289 1. Для чего в папке templates создают файл _helpers.tpl?
290 1. Как создать цикл который создаст несколько сущностей (например ports в service)?
291 1. Как сделать условный оператор для boolean значений и для строк?
292 1. Что будет записано вместо темплейта {{ divf .Values.replicaCount .Values.zones | ceil }}? Как может пригодиться читать тут [https://github.com/eabykov/devops-kubernetes/blob/main/](https://github.com/eabykov/devops-kubernetes/blob/main/)ЛУЧШИЕ_ПРАКТИКИ.md в коментарие к разделу _Распределите ваши pod по разным node и разным зонам (датацентрам)_
293
294 ### Vault
295
296 1. Для чего нужен Vault?
297 1. Что такое KV secrets engine в vault?
298 1. Как сделать так чтобы в Kubernetes использовать например для Deployment секреты из Vault?
299
300 ### Сервисная сетка (service mesh)
301
302 ### Jaeger трейсинг запросов
303
304 1. Что нужно сделать в приложении чтобы его трейсы появились в Jaeger?
305
306 ### Flux и Flagger (канареечные релизы)