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/08/14 18:28]
val [Примерный план]
методологии_devops [2022/09/19 13:17]
val [Примерный план]
Line 14: Line 14:
 === Развертывание стенда === === Развертывание стенда ===
  
-  * Разворачиваем ЛИН2 (gate, server (4Gb), dhcp, dns)+  * Разворачиваем ЛИН2 (gate, server (4Gb))
 <​code>​ <​code>​
 Запустите с правами Administrator Запустите с правами Administrator
Line 31: Line 31:
 </​code>​ </​code>​
  
-  * Настраиваем ​четь на gate и server +  * Настраиваем ​сеть на gate и server 
-  * На server запускаем сервис DNS+  * На server запускаем сервис DNS (gate пока БЕЗ dhcp)
   * На gate и server resolv.conf + на host системе dns для vbox адаптера   * На gate и server resolv.conf + на host системе dns для vbox адаптера
   * На server запускаем установку [[Сервис Ansible]] и [[Инструмент GitLab]]   * На server запускаем установку [[Сервис Ansible]] и [[Инструмент GitLab]]
Line 38: Line 38:
 === Историческая ретроспектива систем контроля версий и CI/CD === === Историческая ретроспектива систем контроля версий и CI/CD ===
  
-  - Изучаем/​вспоминаем [[Сервис Git]] на примере каталога /etc ПЕРЕД и после установки [[Сервис DHCP]] ​на систему gate +  - Изучаем/​вспоминаем [[Сервис Git]] на примере каталога /etc ПЕРЕД и после установки [[Сервис DHCP]] ​в систему gate 
   - Обсуждаем общий репозиторий для всех систем,​ но весь /etc туда - плохо   - Обсуждаем общий репозиторий для всех систем,​ но весь /etc туда - плохо
   - Вспоминаем/​узнаем про [[Установка ПО из исходных текстов#​Использование утилиты make]] и, в том числе [[Установка ПО из исходных текстов#​Использование make для сопровождения файлов конфигурации сервиса]],​ на примере dhcp, поутно сталкиваемся с необходимостью [[Модуль AppArmor#​Определение наличия и правка профилей для служб]] в AppArmor, подключаем сюда [[Сервис Git]], это уже можно класть в общий репозиторий   - Вспоминаем/​узнаем про [[Установка ПО из исходных текстов#​Использование утилиты make]] и, в том числе [[Установка ПО из исходных текстов#​Использование make для сопровождения файлов конфигурации сервиса]],​ на примере dhcp, поутно сталкиваемся с необходимостью [[Модуль AppArmor#​Определение наличия и правка профилей для служб]] в AppArmor, подключаем сюда [[Сервис Git]], это уже можно класть в общий репозиторий
Line 45: Line 45:
 === Современное решение CI/CD на примере GitLab === === Современное решение CI/CD на примере GitLab ===
  
-Часть 1+Часть 1: Знакомимся с GitLab (Если GitLab к этому времени не установился,​ начать тему Vagrant)
  
-  - Знакомство с [[Инструмент GitLab]], пользователи, проекты (если GitLab к этому времени не установился, начать следующую тему) +  - [[Инструмент GitLab]] 
-  - Знакомимся ​с GitLab CI/CDустанавливаем [[Инструмент GitLab#​GitLab Runner]] (shell) на gate и реализуем CI/CD (с автоматической проверкой синтаксиса) для ​сервиса dhcp  +  - Создание учетной записи student в GitLab 
-  - Загружаем ​репозиторий dhpp на локальную систему в [[Cmder]], открываем проект в npp, меняем конфигурацию, проверяем изменения на gate+  - http://​server.corp13.un:​81/​mail 
 +  - Подключаемся ​как studentNew Blank Project (Project name: dhcp, без README) 
 +  - [[Сервис ​Git#Обновление сетевого репозитория из локального]] 
 +  - Редактируем ​dhcpd.conf в GitLab IDE (Commit to master branch)
  
-Часть 2 (в теме Ansible)+Часть 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   - Загружаем репозиторий openvpn1 на локальную систему в [[Cmder]], открываем проект в npp
-  - [[Сервис Git#​Работа с ветками]] в Git для тестовой конфигурации в [[Сервис Ansible#​Роль OpenVPN сервера]] +  - Используем ​[[Сервис Git#​Работа с ветками]] в Git для тестовой конфигурации в [[Сервис Ansible#​Роль OpenVPN сервера]] 
-  - Используем GitLab ​для ​CI/CD сервиса OpenVPN с ручным тестированием тестовой конфигурации+  - Используем GitLab CI/CD [[Инструмент GitLab#​Пример shell ansible]] для ​сервиса OpenVPN с ручным тестированием тестовой конфигурации
  
 === Инфраструктура как код, при построении ландшафта на примере Vagrant === === Инфраструктура как код, при построении ландшафта на примере Vagrant ===
  
-  - Развертываем с использованием [[Технология Vagrant]] node1, 2, 3 (ip 110,120,130 или 101,102,103 ???)+  ​- Добавляем в DNS записи nodeN в [[Сервис DNS#​Настройка мастер сервера зоны corpX.un]] 
 +  ​- Развертываем с использованием [[Технология Vagrant]] node1,2,3
  
 === Инфраструктура как код, для управления уровнем приложений на примере Аnsible ​ === === Инфраструктура как код, для управления уровнем приложений на примере Аnsible ​ ===
  
-  - Изучаем [[Сервис Ansible]] ​и устанавливаем ​docker ​и???​gitlab-runner ​на node 1, 2, 3 +  - Изучаем [[Сервис Ansible]] ​(можно ​установить docker на node1,2,3) 
-  - Развертываем с [[Сервис Ansible#​Использование ролей]] [[Пакет OpenVPN]] в варианте с [[Пакет OpenVPN#​Использование PAM аутентификации]] на node 1, 2, 3 +  - Развертываем с [[Сервис Ansible#​Использование ролей]] [[Пакет OpenVPN]] в варианте с [[Пакет OpenVPN#​Использование PAM аутентификации]] на node1,2,3 
   - Для проверки результата используем [[Сервис Keepalived]] в режиме [[Сервис Keepalived#​Настройка балансировки нагрузки]] и соответствующей [[Пакет OpenVPN#​Настройка клиента]] windows   - Для проверки результата используем [[Сервис Keepalived]] в режиме [[Сервис Keepalived#​Настройка балансировки нагрузки]] и соответствующей [[Пакет OpenVPN#​Настройка клиента]] windows
   - GitLab - Часть 2   - 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 ==== ==== ToDo ====
  
методологии_devops.txt · Last modified: 2022/09/19 13:17 by val