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
Last revision Both sides next revision
методологии_devops [2022/08/15 07:05]
val [Примерный план]
методологии_devops [2022/09/19 12:30]
val [Примерный план]
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 66: Line 66:
 Часть 3: Работа с ветками в GitLab CI/CD (в теме Ansible) Часть 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 приходим к 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