0 Голосов

Изменения документа DevOps

Редактировал(а) Anton Krivchenkov 06.01.2025 19:01

От версии 1.1
отредактировано Anton Krivchenkov
на 06.01.2025 19:01
Изменить комментарий: К данной версии нет комментариев
К версии 4.1
отредактировано Anton Krivchenkov
на 06.01.2025 19:01
Изменить комментарий: К данной версии нет комментариев

Сводка

Подробности

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