DevOps1. Основные инструменты 2025
Программа курса
Модуль 0. Подготовка к занятию
Узнать и записать свой номер стенда: X=
Сообщить его в чат преподавателю
Модуль 1: Введение и развертывание стенда
Теория
Лабораторные работы: Развертывание стенда и инициализация репозитория Git
1.1 Схема стенда, импорт, настройка и запуск VM gate и server
Запустите с правами Administrator
C:\cmder\cmder.exe
bash
cd
test -d conf && rm -r conf
git clone http://val.bmstu.ru/unix/conf.git
cd conf/virtualbox/
!!! 8 - это номер курса, вместо X укажите Ваш номер стенда, если не знаете его, спросите преподавателя !!!
./setup.sh X 8
1.2 Настройка сети VM gate и server
# sh net_gate.sh
# init 6
# sh net_server.sh
# init 6
1.3 Инициализация репозитория Git
Сервис Git, команды init, add, commit для каталога /etc на server
server:~# git -C conf/ pull
server:~# sh conf/dns.sh
Настройка клиента
DNS на gate и server
# cat /etc/resolv.conf
search corpX.un
nameserver 192.168.X.10
# nslookup ns
1.4 Работа с репозиторием Git
!!! Методическая рекомендация, запустить установку Docker (только на server) из лабораторной работы 2.1
server# cat /etc/bind/corpX.un
...
webd A 192.168.X.10
Сервис Git, команды git -C /etc/ …, log, show, diff, reset
Вопросы
Перечислите и объясните команды git
Модуль 2: Docker
Теория
Лабораторные работы: Установка docker и работа с контейнерами
2.1 Собираем docker контейнер
Установка Docker из базового репозитория на
server и из репозитория вендора на
gate
!!! Методическая рекомендация, запустить установку Golang из этой лабораторной работы
!!! Методическая рекомендация, запустить установку docker-compose из лабораторной работы 2.2
Приложение на Python
!!! Методическая рекомендация, запустить установку Vagrant из лабораторной работы 3.1
Приложение на Go
!!! Методическая рекомендация, запустить установку GitLab из лабораторной работы 4.1
~/gowebd# apt purge golang-go; apt autoremove -y
2.2 Связываем и деплоим контейнеры с помощью docker-compose
Вопросы
Зачем нужен Docker?
Чем Docker отличается от LXC?
Чем Docker контейнер отличается от Docker образа?
Как ПО в Docker контейнере может взаимодействовать с системой и другими контейнерами?
Зачем нужен Dockerfile?
Зачем “запихивать” сразу много инструкций в команду RUN?
Зачем нужен docker-compose?
Модуль 3. Инфраструктура как код
Теория
Лабораторные работы: Управление инфраструктурой
3.1 Управление инфраструктурой с использованием Vagrant
!!! Методическая рекомендация, запустить установку Ansible из лабораторной работы 3.2
3.2 Управление инфраструктурой с использованием Ansible
Вопросы
Что общего и в чем отличие между Ansible, Vagrant и Terraform?
Что означает термин Provision в Vagrant?
Что такое module, playbook, role в Ansible?
Назовите каталоги в роли Ansible
Что должно быть установлено на целевой системе для управления через Ansible?
Каким образом Vagrant управляет VM?
Как реализован Ansible provision в Vagrant?
Модуль 4. Continuous Integration
Теория
Лабораторные работы: От Git к CI/CD
4.1 Обзор GitLab
!!! Методическая рекомендация, скачать gitlab-runner из лабораторной работы 4.2
4.2 Запуск пайплайнов из .gitlab-ci в gitlab-runners
Используя GitLab Pipeline Editor добавляем в проект openvpn1
Пример shell ansible Pipeline и наблюдаем “выкатку” в “прод” после Commit в ветку main
Вопросы
Чем отличается GitLab от Git?
Для чего нужен GitLab Runner?
Как называется файл для CI/CD в GitLab?
Модуль 5. Обзор задач QA
Теория
Лабораторные работы: Задачи тестирования
5.1 Ручное тестирование функциональности и работа с ветками проекта
Добавляем параметры dhcp-option,block-outside-dns и Commit в test с созданием Merge requests и наблюдаем “выкатку” в “тестовую” среду, проверяем работу сервиса в ней
Одобряем Merge requests и наблюдаем “выкатку” в “прод”
5.2 Тестирование в этапах развертывания образа приложения в Docker среде
!!! Методическая рекомендация, включить GitLab Docker Registry из этой лабораторной работы
!!! Методическая рекомендация, запустить установку minikube из лабораторной работы 6.1
5.3 Тестирование в процессе CI и управление версиями
Отключаем gowebd→CI/CD Settings→Auto DevOps
-
Используя инструкции из GitLab добавляем папку в проект и наблюдаем сборку образа с тэгом commit hash
Можно продемонстрирорвать Smoke test, заменив порт в коде
-
-
-
Увеличиваем версию и наблюдаем сборку образа с тэгом commit hash
Можно продемонстрирорвать Lint test, добавив лишнюю переменную в коде
Вопросы
Что такое “ветка” в Git и почему переименовали master в main?
Из каких частей состоит имя образа?
Как работает DooD и DinD?
Что такое Linter?
Что такое Smoke test?
Модуль 6. Kubernetes
Теория
Лабораторные работы: Работа с minikube, cоздание deployment и service
6.1 Установка minikube
6.2 Создание deployment и service
-
Для понимания работы
Ingress (будет в следующем курсе), можно продемонстрировать использование
Nginx для доступа к приложению webd в minikube с хост системы
Если есть 30 минут, можно показать CD через envsubst “3.2 Разворачивание приложения в kubernetes” из Девопс2
Понадобится назначить метку k8s-deploy ранеру и
server# cp -v /home/gitlab-runner/.minikube/cache/linux/amd64/v*/kubectl /usr/local/bin/
Вопросы
Почему Kubernetes часто обозначают K8s?
Чем K8s отличается от Docker-Compose?
Что используется для описания состояния объектов в K8s?
Как связаны понятия Deployment, Replica Sets, Pods?
Для чего используются Namespace?
Модуль 7. Дополнительные материалы
Вход в Jenkins и процесс непрерывной интеграции для администратора Linux (выполняем работы с 00:05:30 до конца)
Administrator@RAZLIV_48 ~/conf/vagrant/nodes (master)
λ vagrant halt