User Tools

Site Tools


методологии_devops

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
методологии_devops [2022/06/15 15:09]
val [Примерный план]
методологии_devops [2022/09/19 13:17] (current)
val [Примерный план]
Line 12: Line 12:
 ==== Примерный план ==== ==== Примерный план ====
  
-  - Разворачиваем ЛИН2 (gate, server, dhcp, dns, mail+=== Развертывание стенда === 
-  ​Запускаем установку ​ansible, mail, gitlab ​на server (gitlab + apache ???) + 
-  - Параллельно изучаем ​makegit на примере сервиса ​dhcp +  * Разворачиваем ЛИН2 (gate, server ​(4Gb)) 
-  - Изучаем ​GitLab, устанавливаем gitlab-runner(shell) на gate и используем его CI/CD для сервиса ​dhcp +<​code>​ 
-  - Изучаем ​Vagrant ​для темы ​"Инфраструктура как код" ​и развертываем им node1, 2, 3 +Запустите с правами Administrator 
-  - Изучаем ​ansible ​и развертываем им сервис ​openvpn ​с использованием ролей на node 1, 2, 3  + 
-  - docker и gitlab-runner (а может и +C:​\cmder\cmder.exe 
 + 
 +bash 
 + 
 +cd 
 + 
 +git clone http://​val.bmstu.ru/​unix/​conf.git 
 + 
 +cd conf/​virtualbox/​ 
 + 
 +./setup.sh X 8 
 +</​code>​ 
 + 
 +  ​* Настраиваем сеть на gate и server 
 +  * На server запускаем сервис DNS (gate пока БЕЗ dhcp) 
 +  * На gate и server resolv.conf + на host системе dns для vbox адаптера 
 +  * На server запускаем установку ​[[Сервис Ansible]] и [[Инструмент GitLab]] 
 + 
 +=== Историческая ретроспектива систем контроля версий и CI/CD === 
 + 
 +  - Изучаем/​вспоминаем [[Сервис Git]] на примере каталога /etc ПЕРЕД и после установки [[Сервис DHCP]] в систему gate  
 +  - Обсуждаем общий репозиторий для всех систем,​ но весь /etc туда - плохо 
 +  - Вспоминаем/​узнаем про [[Установка ПО из исходных текстов#​Использование утилиты make]] и, в том числе [[Установка ПО из исходных текстов#​Использование make для сопровождения файлов конфигурации сервиса]],​ на примере dhcp, поутно сталкиваемся с необходимостью [[Модуль AppArmor#​Определение наличия и правка профилей для служб]] в AppArmor, подключаем ​сюда [[Сервис Git]]это уже можно класть в общий репозиторий 
 +  - Если GitLab к этому времени не установился,​ можно показать [[Сервис Git#​Создание сетевого http/ssh git репозитория]] и обновление [[Сервис ​Git#​Персонального http/ssh git репозитория]] 
 + 
 +=== Современное решение CI/CD на примере GitLab === 
 + 
 +Часть 1: Знакомимся с GitLab (Если GitLab к этому времени не установился,​ начать тему Vagrant) 
 + 
 +  - [[Инструмент GitLab]] 
 +  - Создание ​учетной записи student в GitLab 
 +  - http://​server.corp13.un:​81/​mail 
 +  - Подключаемся как studentNew Blank Project (Project name: dhcp, без README) 
 +  - [[Сервис Git#​Обновление сетевого репозитория из локального]] 
 +  - Редактируем dhcpd.conf в GitLab IDE (Commit to master branch) 
 + 
 +Часть 2: Знакомимся с GitLab CI/CD 
 + 
 +  - [[Сервис Git#Клонирование и обновление локального репозитория из сетевого]] (root на gate) 
 +  - [[Установка ПО из исходных текстов#​Использование make для сопровождения файлов конфигурации сервиса]] 
 +  ​[[Сервис DHCP#​Статистика DHCP сервера]] 
 + 
 +  - Устанавливаем [[Инструмент GitLab#​GitLab Runner]] ​(shell) на gate 
 +  - Используем ​[[Пакет sudo]] для разрешений пользователя gitlab-runner 
 +  - [[Инструмент GitLab#​GitLab ​CI/CD]] 
 + 
 +Часть 3: Работа с ветками в GitLab CI/CD (в теме Ansible) 
 + 
 +  - Устанавливаем [[Инструмент GitLab#​GitLab Runner]] (shell) на server 
 +  - Включаем [[Сервис Git]] для каталога openvpn1 и загружаем его в новый репозиторий openvpn1 в GitLab (пользуясь инструкцией к проекту, можно переименовать ветку master->​main) 
 +  - Загружаем репозиторий openvpn1 на локальную ​систему в [[Cmder]], открываем проект в npp 
 +  - Используем [[Сервис Git#Работа с ветками]] в Git для тестовой конфигурации в [[Сервис Ansible#​Роль OpenVPN сервера]] 
 +  - Используем GitLab CI/CD [[Инструмент GitLab#​Пример shell ansible]] для сервиса OpenVPN с ручным тестированием тестовой конфигурации 
 + 
 +=== Инфраструктура как код, при построении ландшафта на примере Vagrant === 
 + 
 +  - Добавляем в DNS записи nodeN в [[Сервис DNS#​Настройка мастер сервера зоны corpX.un]] 
 +  - Развертываем ​с использованием [[Технология Vagrant]] ​node1,2,3 
 + 
 +=== Инфраструктура как код, для управления уровнем приложений на примере Аnsible ​ === 
 + 
 +  - Изучаем ​[[Сервис Ansible]] (можно установить docker на node1,​2,​3) 
 +  - Развертываем с [[Сервис Ansible#​Использование ролей]] [[Пакет OpenVPN]] в варианте с [[Пакет OpenVPN#​Использование PAM аутентификации]] на node1,2,3  
 +  - Для проверки результата используем [[Сервис Keepalived]] в режиме [[Сервис Keepalived#​Настройка балансировки нагрузки]] и соответствующей [[Пакет OpenVPN#​Настройка клиента]] windows 
 +  - GitLab - Часть 2 
 + 
 +=== Разработка и распространение ПО с использованием контейнеров на примере Docker === 
 + 
 +  - [[Средства программирования shell#Web сервер на shell]] 
 +  - [[Сервис INETD]] 
 +  - [[https://​lindevs.com/​install-vegeta-on-ubuntu|Install Vegeta on Ubuntu 20.04]] 
 +  - [[https://​serverfault.com/​questions/​389645/​ftp-tcp-server-failing-looping|ftp/​tcp server failing (looping)]] 
 +<​code>​ 
 +external-host#​ echo "GET http://​172.16.1.13"​ | vegeta attack -duration=10s -rate=200 | vegeta report 
 + 
 +root@node1:​~#​ tail -f /​var/​log/​syslog 
 +</​code>​ 
 + 
 +  - Разрабатываем/​знакомимся с [[Технология Docker]] (без sftp) на gitlab-runner@server (удобно для тестов CI/CD из командной строки) 
 +  - Создаем проект webd в [[Сервис ​Git#​On-Premise gitlab]] 
 +  - Включаем [[Инструмент GitLab#​GitLab Docker Registry]] 
 +  - Cохраняем образ ​используя [[Технология Docker#​Локальные репозитории]] 
 +  - Автоматизируем сборку образа используя [[Средства программирования shell#​Проверка синтаксиса]] и (уже на локальной системе) [[Инструмент GitLab#​GitLab CI/CD]] не забыв [[Технология Docker#Предоставление прав непривилегированным пользователям]] на docker для пользователя gitlab-runner 
 + 
 +ТЗ: Горизонтально масштабируем веб сервер используя общий каталог ​на node1,2,3 
 + 
 +  - [[Сервис NFS]] на server 
 +  - [[Сервис NFS#​Установка nfs клиента]] на node1,2,3 (может добавить в [[Сервис Ansible]] редактировать fstab не будем, поскольку это временное решение) 
 +  - Используя vagrant ansible provisioning устанавливаем ​docker и docker-compose на node1,2,3 
 +  - Настраиваем [[Технология Docker#​Локальные репозитории]] на node1,2,3 
 +  - Готовимся масштабировать добавив в проект файл [[Технология Docker#​docker-compose]] с ссылкой на образ 
 +  - Используя [[Инструмент GitLab#​Подключение через API]] скачиваем на node1,2,3 файл [[Технология Docker#​docker-compose]] и пробуем масштабировать 
 + 
 +  * Считаем,​ что пришлось делать "​вручную":​ выбирать узлы, монтировать nfs, загружать файл docker-compose,​ выяснять порты - выход: [[Система Kubernetes]] 
 + 
 +=== Разработка и распространение ПО с использованием Kubernetes === 
 + 
 +  - Производим [[Система Kubernetes#​Установка minikube]] для ​gitlab-runner@server ​(для доступа к репозиторию,​ на нем же, понадобится включить [[Сервисы Gateway и routing]]) 
 +  - Преподаватель разворачивает [[Система Kubernetes#​Кластер Kubernetes]] на node1,2,3 
 +  - [[Система Kubernetes#​Инструмент командной строки kubectl]] для gitlab-runner@server 
 +  - Изучаем [[Система Kubernetes#​Базовые объекты k8s]] 
 +  - Автоматизируем deploy используя [[Инструмент GitLab#​GitLab CI/CD]], сталкиваемся с необходимостью править версию в манифесте,​ рассмотрев вариант envsubst (здесь ​же можно и keepalived и нагрузочное тестирование и автоматическое увеличение подов ...) приходим к Helm 
 +  - Изучаем тему [[Система Kubernetes#​Ingress]] для minikube и используем [[Система Kubernetes#​Helm]] для его развертывании в кластере 
 +  - Изучаем тему [[Система Kubernetes#​Helm]] на примере разработки чарта для приложения webd 
 +  - Возвращаемся к deploy используя [[Инструмент GitLab#​GitLab CI/CD]] и чарта [[Система Kubernetes#​Helm]] приложения webd 
 +==== ToDo ==== 
 + 
 +  - Хранение общих файлов (сертификатов/​ключей) в gitlab 
 +  - Тестирование ansible playbook 
 +==== Методические приемы ==== 
 + 
 +  - Преподаватель создает основы проекта копипастингом из методички,​ слушатели загружают себе, помещают в свой gitlab и проводят эксперименты CI/CD
 ===== Модуль 0. Подготовка стенда в классе ===== ===== Модуль 0. Подготовка стенда в классе =====
  
методологии_devops.1655294993.txt.gz · Last modified: 2022/06/15 15:09 by val