User Tools

Site Tools


devops1._основные_инструменты

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
devops1._основные_инструменты [2023/09/17 20:33]
val [Вопросы]
devops1._основные_инструменты [2024/04/16 08:09]
val [Лабораторные работы: От Git к CI/CD]
Line 29: Line 29:
  
 cd cd
 +
 +test -d conf && rm -r conf
  
 git clone http://​val.bmstu.ru/​unix/​conf.git git clone http://​val.bmstu.ru/​unix/​conf.git
Line 82: Line 84:
  
   * !!! Заранее выполняем на server   * !!! Заранее выполняем на server
-  * [[Переменные окружения#​Установка переменных окружения]] http_proxy, https_proxy и no_proxy+  * [[Переменные окружения#​Установка переменных окружения]] http_proxy, https_proxy и no_proxy ​(только для ОО) 
   * Установку [[Инструмент Gitea]]   * Установку [[Инструмент Gitea]]
-  * Установку [[Сервис JRE]] (и на gate)+  * Установку [[Сервис JRE]] (на gate)
   * Установку [[Инструмент Jenkins]] !!! и установку плагинов !!!   * Установку [[Инструмент Jenkins]] !!! и установку плагинов !!!
 +
   * Установку [[Сервис Ansible]]   * Установку [[Сервис Ansible]]
   * Cкачать deb пакет [[Инструмент GitLab#​GitLab Runner]]   * Cкачать deb пакет [[Инструмент GitLab#​GitLab Runner]]
Line 98: Line 102:
  
  
-==== Лабораторные работы:​ От Git к GitLab ​====+==== Лабораторные работы:​ От Git к CI/CD====
  
 === 2.1 Вспоминаем Git === === 2.1 Вспоминаем Git ===
Line 109: Line 113:
   * [[Сервис DHCP#​Статистика DHCP сервера]]   * [[Сервис DHCP#​Статистика DHCP сервера]]
   * [[Установка ПО из исходных текстов#​Использование утилиты make]] (установить)   * [[Установка ПО из исходных текстов#​Использование утилиты make]] (установить)
-  * [[Модуль AppArmor#​Определение наличия и правка профилей для служб]] !!! проверить,​ не качается ли что-то на server !!!+  * [[Модуль AppArmor#​Определение наличия и правка профилей для служб]] ​(удалить профиль) ​!!! перед перезагрузкой gate, проверить,​ не качается ли что-то на server !!!
 <​code>​ <​code>​
 gate# su - student gate# su - student
Line 130: Line 134:
  
   * [[Инструмент Jenkins]]   * [[Инструмент Jenkins]]
-  * [[https://​youtu.be/​FeD6VBY2Xss|Вход в CI/CD для Linux-админа]] 
  
 === 2.4 Знакомимся с GitLab CI/CD === === 2.4 Знакомимся с GitLab CI/CD ===
 +
 +  * [[https://​youtu.be/​FeD6VBY2Xss|Вебинар:​ Вход в CI/CD для Linux-админа]]
 +  * [[https://​habr.com/​ru/​articles/​716454/​|Статья:​ Самый простой пример CI/CD]]
  
   * http://​server.corpX.un/​   * http://​server.corpX.un/​
Line 179: Line 185:
 === 3.2 Использование Ansible === === 3.2 Использование Ansible ===
  
-  * [[Сервис Ansible]] openvpn, docker (только слушатели),​ можно addusers.yml для OpenVPN+  * [[Сервис Ansible]], модуль apt на примере ​openvpn, ​playbook ​docker (только слушатели),​ можно addusers.yml ​(для OpenVPN)
   * Преподаватель импортирует систему Windows для тестирования OpenVPN   * Преподаватель импортирует систему Windows для тестирования OpenVPN
-  * Разворачиваем [[Пакет OpenVPN]] в конфигурации с [[Пакет OpenVPN#​Использование PAM аутентификации]] на node1,​2,​3 ​ с [[Сервис Ansible#​Использование ролей]] +  * Разворачиваем [[Пакет OpenVPN]] в конфигурации с [[Пакет OpenVPN#​Использование PAM аутентификации]] на node1,​2,​3 ​ с [[Сервис Ansible#​Использование ролей]] ​(не забыть про [[Сервисы Gateway и routing#​Управление таблицей маршрутизации]] на gate) 
-  * Для подключения используем [[Сервис Keepalived]] в режиме [[Сервис Keepalived#​Настройка балансировки нагрузки]] и client.ovpn ([[Пакет OpenVPN#​Настройка клиента]]) в windows+  * Для подключения используем [[Сервис Keepalived]] в режиме [[Сервис Keepalived#​Настройка балансировки нагрузки]] и corpX.ovpn ([[Пакет OpenVPN#​Настройка клиента]]) в windows ​или linux
   * Можно добавить [[Сервис NAT]] для зрелищности   * Можно добавить [[Сервис NAT]] для зрелищности
  
Line 208: Line 214:
 === 4.1 Разработка и нагрузочное тестирование приложения webd === === 4.1 Разработка и нагрузочное тестирование приложения webd ===
  
-  * Преподаватель импортирует linux систему external-host для нагрузочного тестирования и демонстрирует "​разработку"​ приложения на VM server+  * Преподаватель использует linux систему external-host для нагрузочного тестирования и демонстрирует "​разработку"​ приложения на VM server
   * [[Средства программирования shell#Web сервер на shell]] (методически,​ для обсуждения кода, можно, для упрощения,​ удалить из него все за комментированные строки,​ но не сохранять. Так же, можно вывести в лог [[Сервис HTTP#​Пример HTTP диалога]])   * [[Средства программирования shell#Web сервер на shell]] (методически,​ для обсуждения кода, можно, для упрощения,​ удалить из него все за комментированные строки,​ но не сохранять. Так же, можно вывести в лог [[Сервис HTTP#​Пример HTTP диалога]])
   * [[Сервис INETD]]   * [[Сервис INETD]]
  
   * Через [[Сервис Keepalived#​Настройка балансировки нагрузки]] в Keepalived предоставляем доступ снаружи ​   * Через [[Сервис Keepalived#​Настройка балансировки нагрузки]] в Keepalived предоставляем доступ снаружи ​
 +
 +  * [[https://​github.com/​wg/​wrk|wrk - a HTTP benchmarking tool]]
  
   * [[https://​lindevs.com/​install-vegeta-on-ubuntu|Install Vegeta on Ubuntu 20.04]]   * [[https://​lindevs.com/​install-vegeta-on-ubuntu|Install Vegeta on Ubuntu 20.04]]
Line 225: Line 233:
 external-host#​ curl http://​172.16.1.X external-host#​ curl http://​172.16.1.X
  
-external-host#​ echo "GET http://​172.16.1.X"​ | vegeta attack -duration=60s -rate=400 | vegeta report+external-host#​ echo "GET http://​172.16.1.X"​ | vegeta attack -duration=20s -rate=100 | vegeta report
  
 server# tail -f /​var/​log/​syslog server# tail -f /​var/​log/​syslog
Line 233: Line 241:
  
   * Устанавливаем [[Технология Docker]] на server, собираем образ приложения "​вручную"​ из под root   * Устанавливаем [[Технология Docker]] на server, собираем образ приложения "​вручную"​ из под root
-  * Изучаем [[Технология Docker#​Процессы контейнера и системы]] и [[Технология Docker#​Анализ параметров запущенного контейнера]]+  * Изучаем [[Технология Docker#​Процессы контейнера и системы]] и [[Технология Docker#​Анализ параметров запущенного контейнера]] ​(преподаватель,​ можно на node1, пока у всех ставится docker)
  
-  * Используя [[Технология Docker#​Предоставление прав непривилегированным пользователям]] ​и su - gitlab-runner (пригодится для процесса CD в minikube, для удобства работы выполнить [[Настройка командных интерпретаторов]]), знакомимся с [[Технология Docker#​Создание контейнера для приложения с использованием Dockerfile]]+  ​* Для удобства,​ выполнить [[Настройка командных интерпретаторов]] 
 +  ​* Используя [[Технология Docker#​Предоставление прав непривилегированным пользователям]] ​для ​gitlab-runner (пригодится для процесса CD в minikube), знакомимся с [[Технология Docker#​Создание контейнера для приложения с использованием Dockerfile]]
  
-  * [[Технология Docker#​Запуск в режиме демона и подключение к контейнеру]] несколько копий вручную,​ и, через [[Сервис Keepalived#​Настройка балансировки нагрузки]],​ повторяем нагрузочное тестирование+  * [[Технология Docker#​Запуск в режиме демона и подключение к контейнеру]] несколько копий вручную,​ и, через [[Сервис Keepalived#​Настройка балансировки нагрузки]],​ повторяем нагрузочное тестирование ​(преподаватель)
   * Знакомимся с [[Технология Docker#​docker-compose]] для запуска нескольких копий приложения   * Знакомимся с [[Технология Docker#​docker-compose]] для запуска нескольких копий приложения
  
Line 286: Line 295:
 === 5.2 Базовые объекты k8s === === 5.2 Базовые объекты k8s ===
  
-  * Изучаем [[Система Kubernetes#​Базовые объекты k8s]]+  * Изучаем [[Система Kubernetes#​Базовые объекты k8s]] (gitlab-runner@server:​~/​webd$)
   * Для понимания работы [[Система Kubernetes#​Ingress]] (понадобится в следующем курсе),​ настраиваем [[Сервис HTTP#​NGINX]] для доступа к приложению webd в minikube с хост системы ​   * Для понимания работы [[Система Kubernetes#​Ingress]] (понадобится в следующем курсе),​ настраиваем [[Сервис HTTP#​NGINX]] для доступа к приложению webd в minikube с хост системы ​
   * Тестируем livenessProbe с extern-host   * Тестируем livenessProbe с extern-host
Line 298: Line 307:
 === 5.3 Deploy в k8s === === 5.3 Deploy в k8s ===
  
-  * Автоматизируем deploy используя [[Инструмент GitLab#​Пример shell Kubernetes]] GitLab CD, сталкиваемся с необходимостью править версию в манифесте,​ рассмотрев вариант envsubst видим необходимость в Helm+  * Автоматизируем deploy используя [[Инструмент GitLab#​Пример shell Kubernetes]] GitLab CD (см. выше), сталкиваемся с необходимостью править версию в манифесте,​ рассмотрев вариант envsubst видим необходимость в Helm
  
  
devops1._основные_инструменты.txt · Last modified: 2024/04/16 10:47 by val