This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
методологии_devops [2022/08/15 19:39] val [Примерный план] |
методологии_devops [2022/09/19 13:17] 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) | ||
- | - Включаем [[Сервис Git]] для каталога openvpn1 и загружаем его в новый репозиторий openvpn1 в GitLab (пользуясь инструкцией к проекту, можно оставить ветку master) | + | - Устанавливаем [[Инструмент 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 === | ||
- | - [[Сервис DNS#Настройка мастер сервера зоны corpX.un]] | + | - Добавляем в DNS записи nodeN в [[Сервис DNS#Настройка мастер сервера зоны corpX.un]] |
- Развертываем с использованием [[Технология Vagrant]] node1,2,3 | - Развертываем с использованием [[Технология Vagrant]] node1,2,3 | ||
=== Инфраструктура как код, для управления уровнем приложений на примере Аnsible === | === Инфраструктура как код, для управления уровнем приложений на примере Аnsible === | ||
- | - Изучаем [[Сервис Ansible]] (можно устанавить docker на node1,2,3) | + | - Изучаем [[Сервис Ansible]] (можно установить docker на node1,2,3) |
- Развертываем с [[Сервис Ansible#Использование ролей]] [[Пакет OpenVPN]] в варианте с [[Пакет OpenVPN#Использование PAM аутентификации]] на node1,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 ==== | ||