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
devops1._основные_инструменты [2023/09/17 20:25]
val [Лабораторные работы: Тема лабораторных работ]
devops1._основные_инструменты [2024/04/16 10:47] (current)
val [Лабораторные работы: Тема лабораторных работ]
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 
 +  * В финале,​ можно "​собрать"​ новую версию приложения на gate из под учетной записи student
  
  
Line 308: Line 318:
   * Как связаны понятия Deployment, Replica Sets, Pods?   * Как связаны понятия Deployment, Replica Sets, Pods?
   * Для чего используются Namespace?   * Для чего используются Namespace?
-  * Что общего и в чем различие между Service и Ingress? 
-  * Что используется для подключения Pod к общим файлам?​ 
-  * Для чего нужен Helm и что используется для его описания?​ 
 ===== Дополнительные материалы ===== ===== Дополнительные материалы =====
  
devops1._основные_инструменты.1694971501.txt.gz · Last modified: 2023/09/17 20:25 by val