This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
devops1._основные_инструменты [2025/05/28 09:40] val [Лабораторные работы: Установка docker и работа с контейнерами] |
devops1._основные_инструменты [2025/07/31 10:18] (current) val [Теория] |
||
---|---|---|---|
Line 6: | Line 6: | ||
* [[https://www.specialist.ru/track/dp-devops|ДП-ДЕВОПС-М]] | * [[https://www.specialist.ru/track/dp-devops|ДП-ДЕВОПС-М]] | ||
+ | ===== Практикум ===== | ||
+ | |||
+ | * [[https://val.bmstu.ru/~val/pract/dev1/|Записи практикума]] | ||
===== Модуль 0. Подготовка к занятию ===== | ===== Модуль 0. Подготовка к занятию ===== | ||
Line 16: | Line 19: | ||
* [[https://landscape.cncf.io/]] | * [[https://landscape.cncf.io/]] | ||
- | * [[https://dzen.ru/a/ZVIBk2kT0ntemhwK|∞ Дорожная карта DevOps-инженера в 2023 году]] | + | * [[https://dzen.ru/a/ZVIBk2kT0ntemhwK|Дорожная карта DevOps-инженера в 2023 году]] |
* Ссылки в разделе [[Сервис Git]] | * Ссылки в разделе [[Сервис Git]] | ||
Line 88: | Line 91: | ||
!!! Методическая рекомендация, запустить установку Docker (только на server) из лабораторной работы 2.1 | !!! Методическая рекомендация, запустить установку Docker (только на server) из лабораторной работы 2.1 | ||
+ | * Дбавляем A запись в DNS, понадобится в финальной работе (практикум) | ||
<code> | <code> | ||
server# cat /etc/bind/corpX.un | server# cat /etc/bind/corpX.un | ||
Line 96: | Line 100: | ||
* [[Сервис Git]], команды git -C /etc/ ..., log, show, diff, reset | * [[Сервис Git]], команды git -C /etc/ ..., log, show, diff, reset | ||
+ | |||
+ | ===== Практикум ===== | ||
+ | |||
+ | * [[https://val.bmstu.ru/~val/pract/dev1/dev1_mod1_pract.mp4|Запись практикума]] (длительность: 16 минут) | ||
+ | |||
==== Вопросы ==== | ==== Вопросы ==== | ||
Line 133: | Line 142: | ||
* [[Технология Docker#Анализ параметров запущенного контейнера]] | * [[Технология Docker#Анализ параметров запущенного контейнера]] | ||
- | == 2.1.3 Приложение на Go == | + | == 2.1.3 Приложение на Go (практикум) == |
!!! Методическая рекомендация, запустить установку GitLab из лабораторной работы 4.1 | !!! Методическая рекомендация, запустить установку GitLab из лабораторной работы 4.1 | ||
Line 158: | Line 167: | ||
* Можно показать "кубернетес" - [[Сервис HTTP#Прокси "красивого" URL в приложение (пример 3)|Использование прокси Nginx]] для доступа к приложению (если установился GitLab) | * Можно показать "кубернетес" - [[Сервис HTTP#Прокси "красивого" URL в приложение (пример 3)|Использование прокси Nginx]] для доступа к приложению (если установился GitLab) | ||
+ | |||
+ | ===== Практикум ===== | ||
+ | |||
+ | * [[https://val.bmstu.ru/~val/pract/dev1/dev1_mod2_pract.mp4|Запись практикума]] (длительность: 11 минут) | ||
==== Вопросы ==== | ==== Вопросы ==== | ||
Line 184: | Line 197: | ||
!!! Методическая рекомендация, запустить установку Ansible из лабораторной работы 3.2 | !!! Методическая рекомендация, запустить установку Ansible из лабораторной работы 3.2 | ||
- | * Добавляем DNS записи nodeN A 192.168.X.200+N в [[Сервис DNS#Настройка мастер сервера зоны corpX.un]] | + | * Добавляем DNS записи nodeN A 192.168.X.200+N в [[Сервис DNS#Настройка мастер сервера зоны corpX.un]] (практикум) |
- | * Обзор команд [[Технология VirtualBox]] | + | * Обзор команд [[Технология VirtualBox]] |
- | * Обзор [[Технология Vagrant]] | + | * Обзор и установка [[Технология Vagrant]] (практикум) |
- | * Развертываем с использованием [[Технология Vagrant#Multi-Machine Vagrant Environments]] узлы кластера node1,2,3 | + | * Развертываем с использованием [[Технология Vagrant#Multi-Machine Vagrant Environments]] узлы кластера node1,2,3 (практикум) |
=== 3.2 Управление инфраструктурой с использованием Ansible === | === 3.2 Управление инфраструктурой с использованием Ansible === | ||
* Общие принципы и модели управления (Push and Pull) | * Общие принципы и модели управления (Push and Pull) | ||
- | * Ansible - [[Сервис Ansible#Установка на управляющей системе]] | + | * Ansible - [[Сервис Ansible#Установка на управляющей системе]] (практикум) |
- | * [[Сервис Ansible#Настройка групп управляемых систем]] | + | * [[Сервис Ansible#Настройка групп управляемых систем]] (практикум) |
- | * [[Сервис Ansible#Настройка транспорта ssh]] с [[Сервис SSH#Парольная аутентификация]] | + | * [[Сервис Ansible#Настройка транспорта ssh]] с [[Сервис SSH#Парольная аутентификация]] (практикум) |
- | * [[Сервис Ansible#Использование модулей]] для тестирования связи с управляемыми системами | + | * [[Сервис Ansible#Использование модулей]] для тестирования связи с управляемыми системами (практикум) |
- | * Установка Docker с помощью [[Сервис Ansible#Использование playbook|Ansible playbook]] на node1,2,3 (лучше во время перерыва) | + | * Установка Docker с помощью [[Сервис Ansible#Использование playbook|Ansible playbook]] на node1,2,3 (лучше во время перерыва) (практикум) |
* [[Сервис Ansible#Использование шаблонов]] Jinja в playbook для установки Nginx (на gate, по окончании демонстрации удалить!!) | * [[Сервис Ansible#Использование шаблонов]] Jinja в playbook для установки Nginx (на gate, по окончании демонстрации удалить!!) | ||
* Обсудить варианты [[Сервис Ansible#Использование handlers]] | * Обсудить варианты [[Сервис Ansible#Использование handlers]] | ||
- | * Развертывание кластера приложения с [[Сервис Ansible#Использование ролей]] Ansible | + | * Развертывание кластера приложения с [[Сервис Ansible#Использование ролей]] Ansible (практикум, в конце запустить установку GitLab) |
+ | |||
+ | ===== Практикум ===== | ||
+ | |||
+ | * [[https://val.bmstu.ru/~val/pract/dev1/dev1_mod3_pract.mp4|Запись практикума]] (длительность: 19 минут) | ||
==== Вопросы ==== | ==== Вопросы ==== | ||
Line 223: | Line 240: | ||
==== Лабораторные работы: От Git к CI/CD ==== | ==== Лабораторные работы: От Git к CI/CD ==== | ||
- | === 4.1 Обзор GitLab === | + | === 4.1 Обзор GitLab (практикум) === |
* [[Инструмент GitLab#Установка из репозитория]] | * [[Инструмент GitLab#Установка из репозитория]] | ||
Line 230: | Line 247: | ||
* [[Инструмент GitLab#Управление пользователями]] (назначить УЗ student администратором) | * [[Инструмент GitLab#Управление пользователями]] (назначить УЗ student администратором) | ||
- | * Создаем новый репозиторий (Project name: openvpn1, Private, без README) в GitLab | + | * Создаем новый репозиторий (Project name: openvpn1, Private, без README) в GitLab |
* Пользуясь инструкцией к проекту, включаем [[Сервис Git]] для каталога openvpn1 и помещаем его в GitLab | * Пользуясь инструкцией к проекту, включаем [[Сервис Git]] для каталога openvpn1 и помещаем его в GitLab | ||
- | === 4.2 Запуск пайплайнов из .gitlab-ci в gitlab-runners === | + | === 4.2 Запуск пайплайнов из .gitlab-ci в gitlab-runners (практикум) === |
* [[Инструмент GitLab#Установка из пакета]] GitLab Runner на server и его [[Инструмент GitLab#Регистрация]] с меткой **ansible** и исполнителем **shell** | * [[Инструмент GitLab#Установка из пакета]] GitLab Runner на server и его [[Инструмент GitLab#Регистрация]] с меткой **ansible** и исполнителем **shell** | ||
* Используя GitLab Pipeline Editor добавляем в проект openvpn1 [[Инструмент GitLab#Пример shell ansible]] Pipeline и наблюдаем "выкатку" в "прод" после Commit в ветку main | * Используя GitLab Pipeline Editor добавляем в проект openvpn1 [[Инструмент GitLab#Пример shell ansible]] Pipeline и наблюдаем "выкатку" в "прод" после Commit в ветку main | ||
+ | |||
+ | ===== Практикум ===== | ||
+ | |||
+ | * [[https://val.bmstu.ru/~val/pract/dev1/dev1_mod4_pract.mp4|Запись практикума]] (длительность: 13 минут) | ||
==== Вопросы ==== | ==== Вопросы ==== | ||
Line 280: | Line 301: | ||
* Размещение образа приложения в Registry | * Размещение образа приложения в Registry | ||
- | * Включаем [[Инструмент GitLab#GitLab Docker Registry]] | + | * Включаем [[Инструмент GitLab#GitLab Docker Registry]] (практикум) |
- | * Включаем [[Технология Docker#Insecure Private Registry]] и [[Технология Docker#Аутентификация в Registry]] | + | * Включаем [[Технология Docker#Insecure Private Registry]] и [[Технология Docker#Аутентификация в Registry]] на gate (практикум) |
- | * Создаем (Public, без README) проект gowebd | + | * Создаем (Public, без README) проект gowebd (практикум) |
- | * Cохраняем образ, [[Технология Docker#Использование Private Registry]] | + | * Cохраняем образ, [[Технология Docker#Использование Private Registry]] (практикум) |
!!! Методическая рекомендация, запустить установку minikube из лабораторной работы 6.1 | !!! Методическая рекомендация, запустить установку minikube из лабораторной работы 6.1 | ||
Line 291: | Line 312: | ||
=== 5.3 Тестирование в процессе CI и управление версиями === | === 5.3 Тестирование в процессе CI и управление версиями === | ||
- | * Проводим [[Инструмент GitLab#Установка в виде контейнера]] gitlab-runner на gate | + | * Проводим [[Инструмент GitLab#Установка в виде контейнера]] gitlab-runner на gate (практикум) |
- | * Используем [[Инструмент GitLab#Регистрация DooD]] для добавления runner в проект gowebd | + | * Используем [[Инструмент GitLab#Регистрация DooD]] для добавления runner в проект gowebd (практикум) |
- | * Отключаем gowebd->CI/CD Settings->Auto DevOps | + | * Отключаем gowebd->CI/CD Settings->Auto DevOps (практикум) |
- | * Добавляем в папку gowebd [[Инструмент GitLab#Пример CI с использованием контейнеров]] | + | * Добавляем в папку gowebd [[Инструмент GitLab#Пример CI с использованием контейнеров]] стадии build test push (практикум) |
- | * Используя инструкции из GitLab добавляем папку в проект и наблюдаем сборку образа с тэгом commit hash | + | * Используя инструкции из GitLab добавляем папку в проект и наблюдаем сборку образа с тэгом commit hash (практикум) |
- | * Можно продемонстрирорвать Smoke test, заменив порт в коде | + | * Можно продемонстрировать Smoke test, заменив порт в коде |
* Останавливаем, очищаем конфигурацию [[Инструмент GitLab#Установка в виде контейнера]] gitlab-runner на gate | * Останавливаем, очищаем конфигурацию [[Инструмент GitLab#Установка в виде контейнера]] gitlab-runner на gate | ||
Line 308: | Line 329: | ||
* Добавляем необходимые для DinD элементы конфигурации в [[Инструмент GitLab#Пример CI с использованием контейнеров]] | * Добавляем необходимые для DinD элементы конфигурации в [[Инструмент GitLab#Пример CI с использованием контейнеров]] | ||
* Увеличиваем версию и наблюдаем сборку образа с тэгом commit hash | * Увеличиваем версию и наблюдаем сборку образа с тэгом commit hash | ||
- | * Можно продемонстрирорвать Lint test, добавив лишнюю переменную в коде | + | * Можно продемонстрировать Lint test, добавив лишнюю переменную в коде |
- | * Используем Git тэги ([[Сервис Git#Обновление сетевого репозитория из локального]] или Code->Tags) для указания версии Docker образов | + | * Используем Git тэги ([[Сервис Git#Обновление сетевого репозитория из локального]] или Code->Tags) для указания версии Docker образов (практикум, в конце запустить установку MiniKube) |
+ | |||
+ | ===== Практикум ===== | ||
+ | |||
+ | * [[https://val.bmstu.ru/~val/pract/dev1/dev1_mod5_pract.mp4|Запись практикума]] (длительность: 23 минуты) | ||
==== Вопросы ==== | ==== Вопросы ==== | ||
Line 331: | Line 356: | ||
=== 6.1 Установка minikube === | === 6.1 Установка minikube === | ||
- | * Для доступа к репозиторию, понадобится включить [[Сервисы Gateway и routing]] | + | * Для доступа к репозиторию, понадобится включить [[Сервисы Gateway и routing]] (практикум) |
- | * [[Система Kubernetes#Установка minikube]] для gitlab-runner@server (можно, если будет время, показать CD) | + | * [[Система Kubernetes#Установка minikube]] для gitlab-runner@server (можно, если будет время, показать CD) (практикум) |
=== 6.2 Создание deployment и service === | === 6.2 Создание deployment и service === | ||
- | * Изучаем [[Система Kubernetes#Базовые объекты k8s]] - [[Система Kubernetes#Deployment]] и [[Система Kubernetes#Service]] | + | * Изучаем [[Система Kubernetes#Базовые объекты k8s]] - [[Система Kubernetes#Deployment]] и [[Система Kubernetes#Service]] (практикум) |
- | * Для понимания работы [[Система Kubernetes#Ingress]] (будет в следующем курсе), можно продемонстрировать использование [[Сервис HTTP#Прокси "красивого" URL в приложение (пример 3)|Nginx]] для доступа к приложению webd в minikube с хост системы | + | * Для понимания работы [[Система Kubernetes#Ingress]] (будет в следующем курсе), можно продемонстрировать использование [[Сервис HTTP#Прокси "красивого" URL в приложение (пример 3)|Nginx]] для доступа к приложению webd в minikube с хост системы (практикум) |
- | * Если есть 30 минут, можно показать CD через envsubst "**3.3 Разворачивание нужной версии приложения в kubernetes**" из Девопс2 | + | * Если есть 30 минут, можно показать CD через envsubst "**Развертывание нужной версии приложения в kubernetes**" из Девопс2 |
* Понадобится назначить метку k8s-deploy ранеру и | * Понадобится назначить метку k8s-deploy ранеру и | ||
<code> | <code> | ||
Line 345: | Line 370: | ||
</code> | </code> | ||
* Можно показать все, используя Web IDE | * Можно показать все, используя Web IDE | ||
+ | |||
+ | ===== Практикум ===== | ||
+ | |||
+ | * [[https://val.bmstu.ru/~val/pract/dev1/dev1_mod6_pract.mp4|Запись практикума]] (длительность: 13 минут) | ||
+ | |||
==== Вопросы ==== | ==== Вопросы ==== | ||
Line 354: | Line 384: | ||
===== Модуль 7. Дополнительные материалы ===== | ===== Модуль 7. Дополнительные материалы ===== | ||
+ | |||
+ | ==== 7.1 Вход в Jenkins ==== | ||
* [[Вход в Jenkins]] и процесс непрерывной интеграции для администратора Linux (выполняем работы с 00:05:30 до конца) | * [[Вход в Jenkins]] и процесс непрерывной интеграции для администратора Linux (выполняем работы с 00:05:30 до конца) | ||
+ | |||
+ | ==== 7.2 Зачем нужен Kubernetes ==== | ||
* [[Зачем нужен Kubernetes]] (выполняем работы с 00:02:45 до 00:53:00 и с 01:08:33 до конца), понадобятся [[Средства программирования shell#Ресурсы Web сервера на shell]] | * [[Зачем нужен Kubernetes]] (выполняем работы с 00:02:45 до 00:53:00 и с 01:08:33 до конца), понадобятся [[Средства программирования shell#Ресурсы Web сервера на shell]] | ||
+ | |||
+ | ==== 7.3 Что должен знать DevOps про Python ==== | ||
+ | |||
+ | * [[Все что должен знать DevOps про Python]] | ||
+ | |||
+ | ==== 7.4 Развертывание инфраструктуры с использованием Terraform ==== | ||
* [[On-premise Terraform|Развертывание инфраструктуры в On-premise облаке с использованием Terraform]] (выполняем работы с 00:10:15 до 00:35:30 и с 00:40:45 до конца) | * [[On-premise Terraform|Развертывание инфраструктуры в On-premise облаке с использованием Terraform]] (выполняем работы с 00:10:15 до 00:35:30 и с 00:40:45 до конца) |