Table of Contents

Методологии DevOps

Ссылка на вебинар

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

Примерный план

Развертывание стенда

Запустите с правами Administrator

C:\cmder\cmder.exe

bash

cd

git clone http://val.bmstu.ru/unix/conf.git

cd conf/virtualbox/

./setup.sh X 8

Историческая ретроспектива систем контроля версий и CI/CD

  1. Изучаем/вспоминаем Сервис Git на примере каталога /etc ПЕРЕД и после установки Сервис DHCP в систему gate
  2. Обсуждаем общий репозиторий для всех систем, но весь /etc туда - плохо
  3. Вспоминаем/узнаем про Использование утилиты make и, в том числе Использование make для сопровождения файлов конфигурации сервиса, на примере dhcp, поутно сталкиваемся с необходимостью Определение наличия и правка профилей для служб в AppArmor, подключаем сюда Сервис Git, это уже можно класть в общий репозиторий
  4. Если GitLab к этому времени не установился, можно показать Создание сетевого http/ssh git репозитория и обновление Персонального http/ssh git репозитория

Современное решение CI/CD на примере GitLab

Часть 1: Знакомимся с GitLab (Если GitLab к этому времени не установился, начать тему Vagrant)

  1. Создание учетной записи student в GitLab
  2. Подключаемся как student, New Blank Project (Project name: dhcp, без README)
  3. Редактируем dhcpd.conf в GitLab IDE (Commit to master branch)

Часть 2: Знакомимся с GitLab CI/CD

  1. Устанавливаем GitLab Runner (shell) на gate
  2. Используем Пакет sudo для разрешений пользователя gitlab-runner

Часть 3: Работа с ветками в GitLab CI/CD (в теме Ansible)

  1. Устанавливаем GitLab Runner (shell) на server
  2. Включаем Сервис Git для каталога openvpn1 и загружаем его в новый репозиторий openvpn1 в GitLab (пользуясь инструкцией к проекту, можно переименовать ветку master→main)
  3. Загружаем репозиторий openvpn1 на локальную систему в Cmder, открываем проект в npp
  4. Используем Работа с ветками в Git для тестовой конфигурации в Роль OpenVPN сервера
  5. Используем GitLab CI/CD Пример shell ansible для сервиса OpenVPN с ручным тестированием тестовой конфигурации

Инфраструктура как код, при построении ландшафта на примере Vagrant

  1. Добавляем в DNS записи nodeN в Настройка мастер сервера зоны corpX.un
  2. Развертываем с использованием Технология Vagrant node1,2,3

Инфраструктура как код, для управления уровнем приложений на примере Аnsible

  1. Изучаем Сервис Ansible (можно установить docker на node1,2,3)
  2. Для проверки результата используем Сервис Keepalived в режиме Настройка балансировки нагрузки и соответствующей Настройка клиента windows
  3. GitLab - Часть 2

Разработка и распространение ПО с использованием контейнеров на примере Docker

external-host# echo "GET http://172.16.1.13" | vegeta attack -duration=10s -rate=200 | vegeta report

root@node1:~# tail -f /var/log/syslog
  1. Разрабатываем/знакомимся с Технология Docker (без sftp) на gitlab-runner@server (удобно для тестов CI/CD из командной строки)
  2. Создаем проект webd в On-Premise gitlab
  3. Включаем GitLab Docker Registry
  4. Cохраняем образ используя Локальные репозитории
  5. Автоматизируем сборку образа используя Проверка синтаксиса и (уже на локальной системе) GitLab CI/CD не забыв Предоставление прав непривилегированным пользователям на docker для пользователя gitlab-runner

ТЗ: Горизонтально масштабируем веб сервер используя общий каталог на node1,2,3

  1. Сервис NFS на server
  2. Установка nfs клиента на node1,2,3 (может добавить в Сервис Ansible редактировать fstab не будем, поскольку это временное решение)
  3. Используя vagrant ansible provisioning устанавливаем docker и docker-compose на node1,2,3
  4. Настраиваем Локальные репозитории на node1,2,3
  5. Готовимся масштабировать добавив в проект файл docker-compose с ссылкой на образ
  6. Используя Подключение через API скачиваем на node1,2,3 файл docker-compose и пробуем масштабировать

Разработка и распространение ПО с использованием Kubernetes

  1. Производим Установка minikube для gitlab-runner@server (для доступа к репозиторию, на нем же, понадобится включить Сервисы Gateway и routing)
  2. Преподаватель разворачивает Кластер Kubernetes на node1,2,3
  3. Автоматизируем deploy используя GitLab CI/CD, сталкиваемся с необходимостью править версию в манифесте, рассмотрев вариант envsubst (здесь же можно и keepalived и нагрузочное тестирование и автоматическое увеличение подов …) приходим к Helm
  4. Изучаем тему Ingress для minikube и используем Helm для его развертывании в кластере
  5. Изучаем тему Helm на примере разработки чарта для приложения webd
  6. Возвращаемся к deploy используя GitLab CI/CD и чарта Helm приложения webd

ToDo

  1. Хранение общих файлов (сертификатов/ключей) в gitlab
  2. Тестирование ansible playbook

Методические приемы

  1. Преподаватель создает основы проекта копипастингом из методички, слушатели загружают себе, помещают в свой gitlab и проводят эксперименты CI/CD

Модуль 0. Подготовка стенда в классе

Модуль 1: Развертывание IT инфраструктуры

Теория

Лабораторные работы: Развертывание объектов мониторинга

1.1 Развертывание системы gate

# sh net_gate.sh

# init 6
# cat /etc/bind/corp13.un
$TTL      3h
@         SOA     ns root.ns  1 1d 12h 1w 3h
          NS      ns

          A       192.168.13.1
          MX 1    server

ns        A       192.168.13.1
gate      A       192.168.13.1
server    A       192.168.13.1

node1     A       192.168.13.10
node2     A       192.168.13.20
node3     A       192.168.13.30

1.2 Инфраструктура как код

Вопросы

Модуль 2: Использование контейнеров

Теория

Лабораторные работы: Использование контейнеров

2.1 Использование контейнеров

Вопросы

Модуль 3: Использование GitLab

Теория

Лабораторные работы: Использование GitLab

3.1 Использование GitLab

Вопросы

Модуль N: Тема модуля

Теория

Лабораторные работы: Тема лабораторных работ

N.1 Тема лабораторной работы

Вопросы

Модуль N: Тема модуля

Теория

Лабораторные работы: Тема лабораторных работ

N.1 Тема лабораторной работы

Вопросы

Модуль N: Тема модуля

Теория

Лабораторные работы: Тема лабораторных работ

N.1 Тема лабораторной работы

Вопросы