0 Голосов

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

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

Скрыть последних авторов
Anton Krivchenkov 4.1 1 ВОПРОСЫ для проверки знаний:
Anton Krivchenkov 2.2 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
Anton Krivchenkov 4.1 155 ## ​Вопросы на собеседованииях
Anton Krivchenkov 2.3 156
Anton Krivchenkov 2.1 157 Хороший набор ответов: [https://habr.com/ru/articles/775560/](https://habr.com/ru/articles/775560/)
158
159 ### Linux
160
Anton Krivchenkov 4.1 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?
Anton Krivchenkov 2.1 187
188 ### Git
189
Anton Krivchenkov 4.1 190 1. Как создать новую ветку?
191 1. Как переключиться на другую ветку?
192 1. Как откатиться на несколько версий назад чтобы последние изменения ищезли?
193 1. Как отправить наши текущие изменения в удаленный репозиторий?
194 1. Как выполнить добавление изменений из одной ветки в другую?
195 1. Что делать если при этом возник конфликт?
196 1. Как скачать себе локально последние изменения из удаленного репозитория (репозиторий уже есть на компьютере)?
197 1. Чем отличается tag от branch?
198 1. Чем отличается fetch от pull?
Anton Krivchenkov 2.1 199
200 ### GitLab
201
Anton Krivchenkov 4.1 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?
Anton Krivchenkov 2.1 209
210 ### Сеть и сетевые технологии
211
Anton Krivchenkov 4.1 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. Что должен делать если не нашел запись у себя в конфигурации?
Anton Krivchenkov 2.1 234
235 ### Docker и работа с упакованными в контейнер приложениями
236
Anton Krivchenkov 4.1 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?
Anton Krivchenkov 2.1 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
Anton Krivchenkov 4.1 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 и разным зонам (датацентрам)_
Anton Krivchenkov 2.1 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 (канареечные релизы)