devops1._основные_инструменты

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
devops1._основные_инструменты [2025/04/23 10:50]
val [Вопросы]
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 113: Line 122:
   * [[Технология Docker#​Установка]] Docker из базового репозитория на **server** и из репозитория вендора на **gate**   * [[Технология Docker#​Установка]] Docker из базового репозитория на **server** и из репозитория вендора на **gate**
  
-!!! Методическая рекомендация,​ запустить установку Golang из этой лабораторной работы+!!! Методическая рекомендация,​ запустить установку Golang ​на gate из этой лабораторной работы ​2.1.3
  
   * Обсудить [[Технология Docker#​Создание образа для приложения вручную]] было в ЛИН3   * Обсудить [[Технология Docker#​Создание образа для приложения вручную]] было в ЛИН3
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 до конца)
devops1._основные_инструменты.1745394608.txt.gz · Last modified: 2025/04/23 10:50 by val