User Tools

Site Tools


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

DevOps1. Основные инструменты 2025

Программа курса

Модуль 0. Подготовка к занятию

  1. Узнать и записать свой номер стенда: X=
  2. Сообщить его в чат преподавателю

Модуль 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

  • gate
# sh net_gate.sh

# init 6
  • server
# sh net_server.sh

# init 6
  • Создать в Putty профили gate, server и подключиться

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

Вопросы

  1. Перечислите и объясните команды 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
  • Расширение docker buildx
  • Вопросы оптимизации времени сборки образа

2.2 Связываем и деплоим контейнеры с помощью docker-compose

Вопросы

  1. Зачем нужен Docker?
  2. Чем Docker отличается от LXC?
  3. Чем Docker контейнер отличается от Docker образа?
  4. Как ПО в Docker контейнере может взаимодействовать с системой и другими контейнерами?
  5. Зачем нужен Dockerfile?
  6. Зачем “запихивать” сразу много инструкций в команду RUN?
  7. Зачем нужен docker-compose?

Модуль 3. Инфраструктура как код

Теория

Лабораторные работы: Управление инфраструктурой

3.1 Управление инфраструктурой с использованием Vagrant

!!! Методическая рекомендация, запустить установку Ansible из лабораторной работы 3.2

3.2 Управление инфраструктурой с использованием Ansible

Вопросы

  1. Что общего и в чем отличие между Ansible, Vagrant и Terraform?
  2. Что означает термин Provision в Vagrant?
  3. Что такое module, playbook, role в Ansible?
  4. Назовите каталоги в роли Ansible
  5. Что должно быть установлено на целевой системе для управления через Ansible?
  6. Каким образом Vagrant управляет VM?
  7. Как реализован Ansible provision в Vagrant?

Модуль 4. Continuous Integration

Теория

Лабораторные работы: От Git к CI/CD

4.1 Обзор GitLab

!!! Методическая рекомендация, скачать gitlab-runner из лабораторной работы 4.2

  • Управление пользователями (назначить УЗ student администратором)
  • Создаем новый репозиторий (Project name: openvpn1, Private, без README) в GitLab
  • Пользуясь инструкцией к проекту, включаем Сервис Git для каталога openvpn1 и помещаем его в GitLab

4.2 Запуск пайплайнов из .gitlab-ci в gitlab-runners

  • Используя GitLab Pipeline Editor добавляем в проект openvpn1 Пример shell ansible Pipeline и наблюдаем “выкатку” в “прод” после Commit в ветку main

Вопросы

  1. Чем отличается GitLab от Git?
  2. Для чего нужен GitLab Runner?
  3. Как называется файл для CI/CD в GitLab?

Модуль 5. Обзор задач QA

Теория

Лабораторные работы: Задачи тестирования

5.1 Ручное тестирование функциональности и работа с ветками проекта

  • Понадобится win client2 (ip/m: 172.16.1.100+X/24, dns: 172.16.1.254)
  • Добавляем параметры dhcp-option,block-outside-dns и Commit в test с созданием Merge requests и наблюдаем “выкатку” в “тестовую” среду, проверяем работу сервиса в ней
  • Одобряем Merge requests и наблюдаем “выкатку” в “прод”

5.2 Тестирование в этапах развертывания образа приложения в Docker среде

!!! Методическая рекомендация, включить GitLab Docker Registry из этой лабораторной работы

!!! Методическая рекомендация, запустить установку minikube из лабораторной работы 6.1

  • Можно продемонстрировать развертывание приложения на nodeN

5.3 Тестирование в процессе CI и управление версиями

  • Отключаем gowebd→CI/CD Settings→Auto DevOps
  • Используя инструкции из GitLab добавляем папку в проект и наблюдаем сборку образа с тэгом commit hash
  • Можно продемонстрирорвать Smoke test, заменив порт в коде

Вопросы

  1. Что такое “ветка” в Git и почему переименовали master в main?
  2. Из каких частей состоит имя образа?
  3. Как работает DooD и DinD?
  4. Что такое Linter?
  5. Что такое 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/
  • Можно показать все, используя Web IDE

Вопросы

  • Почему 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
  • Понадобится развернуть VM home-computer (Вложенная виртуализация) подключить к сети класса (WAN), увеличить RAM до 8192, запустить, назначить hostname, выяснить IP адрес и подключиться PuTTY
  • Понадобится установить VNC https://www.tightvnc.com/download.php, все по умолчанию
  • Перед “Шаг 3”: перенести home-computer в LAN, назанчить IP .200 из сети 192.168.X.0/24 и считать ее “домашней сетью”
  • Шаг 4 - в режиме просмотра
devops1._основные_инструменты_2025.txt · Last modified: 2025/02/13 12:10 by val