This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
devops1._основные_инструменты [2024/09/12 13:38] val [Лабораторные работы: Работа с контейнерами Docker] |
devops1._основные_инструменты [2025/01/27 10:17] (current) val [Дополнительные материалы] |
||
---|---|---|---|
Line 32: | Line 32: | ||
cd | cd | ||
- | test -d conf && rm -r conf | + | test -d conf && rm -rf conf |
git clone http://val.bmstu.ru/unix/conf.git | git clone http://val.bmstu.ru/unix/conf.git | ||
Line 44: | Line 44: | ||
=== 1.2 Настройка сети VM gate и server === | === 1.2 Настройка сети VM gate и server === | ||
- | * !!! Добавить HDD 20GB к server | ||
* [[Настройка стендов слушателей#Настройка виртуальных систем Unix]] с использованием [[Настройка стендов слушателей#Скрипты автоконфигурации]] | * [[Настройка стендов слушателей#Настройка виртуальных систем Unix]] с использованием [[Настройка стендов слушателей#Скрипты автоконфигурации]] | ||
Line 65: | Line 64: | ||
=== 1.3 настройка сервиса DNS === | === 1.3 настройка сервиса DNS === | ||
- | * [[Управление файловыми системами в Linux#Использование LVM]] | ||
* [[Финальная настройка DNS сервера]] | * [[Финальная настройка DNS сервера]] | ||
<code> | <code> | ||
Line 86: | Line 84: | ||
* !!! Заранее выполняем на server | * !!! Заранее выполняем на server | ||
- | * [[Переменные окружения#Установка переменных окружения]] http_proxy, https_proxy и no_proxy (только для ОО) | ||
* Установку [[Инструмент Gitea]] | * Установку [[Инструмент Gitea]] | ||
Line 120: | Line 117: | ||
</code> | </code> | ||
* [[Установка ПО из исходных текстов#Использование make для сопровождения файлов конфигурации сервиса]] | * [[Установка ПО из исходных текстов#Использование make для сопровождения файлов конфигурации сервиса]] | ||
- | * [[Сервис Git]] для каталога ~student/dhcp/ на gate | + | * [[Сервис Git]] для каталога ~student/dhcp/ на gate (лучше в следующей лабораторной) |
=== 2.2 Знакомимся с SCM Gitea === | === 2.2 Знакомимся с SCM Gitea === | ||
Line 126: | Line 123: | ||
* [[Инструмент Gitea]] | * [[Инструмент Gitea]] | ||
* Подключаемся как student, Repository Name: dhcp | * Подключаемся как student, Repository Name: dhcp | ||
- | * [[Сервис Git#Обновление сетевого репозитория из локального]] (копируем инструкции из посказки, ветка master) | + | * [[Сервис Git#Обновление сетевого репозитория из локального]] (копируем инструкции из подсказки) |
* Редактируем dhcpd.conf в Gitea (Commit to master branch) | * Редактируем dhcpd.conf в Gitea (Commit to master branch) | ||
Line 144: | Line 141: | ||
* Установка [[Инструмент GitLab]] | * Установка [[Инструмент GitLab]] | ||
* http://server.corpX.un/ | * http://server.corpX.un/ | ||
- | * Используем [[Инструмент GitLab#Управление пользователями]] в GitLab для отключения авто регистрации, назначении пароля пользователю root и создания учетной записи student | + | * Используем [[Инструмент GitLab#Управление пользователями]] в GitLab для назначении пароля пользователю root и создания учетной записи student (лучше назначить его администратором) |
- | + | ||
- | * http://server.corpX.un:81/mail | + | |
!!! в теме Ansible | !!! в теме Ansible | ||
Line 228: | Line 223: | ||
* [[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]] | ||
* [[https://github.com/tsenart/vegeta/releases|github/tsenart/vegeta/releases]] | * [[https://github.com/tsenart/vegeta/releases|github/tsenart/vegeta/releases]] | ||
- | * [[https://val.bmstu.ru/unix/WWW/vegeta_12.11.0_linux_amd64.tar.gz]] | + | * [[https://val.bmstu.ru/unix/WWW/vegeta_12.12.0_linux_amd64.tar.gz]] |
* [[https://serverfault.com/questions/389645/ftp-tcp-server-failing-looping|ftp/tcp server failing (looping)]] | * [[https://serverfault.com/questions/389645/ftp-tcp-server-failing-looping|ftp/tcp server failing (looping)]] | ||
Line 235: | Line 230: | ||
* в качестве external-host можно использовать gate | * в качестве external-host можно использовать gate | ||
<code> | <code> | ||
+ | cmd> route add 172.16.1.0 mask 255.255.255.0 10.5.N.178 | ||
+ | |||
external-host# curl http://172.16.1.X | external-host# curl http://172.16.1.X | ||
Line 244: | Line 241: | ||
=== 4.2 Использование технологии Docker и docker-compose для масштабирования приложения webd на одном узле === | === 4.2 Использование технологии Docker и docker-compose для масштабирования приложения webd на одном узле === | ||
- | * Устанавливаем [[Технология Docker]] на server, и рассматриваем [[Технология Docker#Создание контейнера для приложения вручную]] и образа из него (из под root) | + | * Устанавливаем [[Технология Docker]] на server, и рассматриваем [[Технология Docker#Создание образа для приложения вручную]] и образа из него (из под root) |
* Рассматриваем [[Технология Docker#Запуск в режиме демона и подключение к контейнеру]] | * Рассматриваем [[Технология Docker#Запуск в режиме демона и подключение к контейнеру]] | ||
* Изучаем [[Технология Docker#Процессы контейнера и системы]] и [[Технология Docker#Анализ параметров запущенного контейнера]] (преподаватель, можно на node1, пока у всех ставится docker) | * Изучаем [[Технология Docker#Процессы контейнера и системы]] и [[Технология Docker#Анализ параметров запущенного контейнера]] (преподаватель, можно на node1, пока у всех ставится docker) | ||
* Для удобства, выполнить [[Настройка командных интерпретаторов]] | * Для удобства, выполнить [[Настройка командных интерпретаторов]] | ||
- | * Используя [[Технология Docker#Предоставление прав непривилегированным пользователям]] для gitlab-runner (пригодится для процесса CD в minikube), знакомимся с [[Технология Docker#Создание контейнера для приложения с использованием Dockerfile]] | + | * Используя [[Технология Docker#Предоставление прав непривилегированным пользователям]] для gitlab-runner (пригодится для процесса CD в minikube), знакомимся с [[Технология Docker#Создание образа для приложения с использованием Dockerfile]] |
* [[Технология Docker#Запуск в режиме демона и подключение к контейнеру]] несколько копий вручную, и, через [[Сервис Keepalived#Настройка балансировки нагрузки]], повторяем нагрузочное тестирование (преподаватель) | * [[Технология Docker#Запуск в режиме демона и подключение к контейнеру]] несколько копий вручную, и, через [[Сервис Keepalived#Настройка балансировки нагрузки]], повторяем нагрузочное тестирование (преподаватель) | ||
Line 297: | Line 294: | ||
=== 5.1 Установка и подключение к k8s === | === 5.1 Установка и подключение к k8s === | ||
- | * Может закончиться место на диске VM server и понадобиться [[Управление ПО в Linux#Удаление архива установленных пакетов]] плюс отключение [[Инструмент GitLab#GitLab Prometheus]] или [[Управление файловыми системами в Linux#Расширение существующего логического тома]] | ||
* Производим [[Система Kubernetes#Установка minikube]] для gitlab-runner@server (для доступа к репозиторию, на нем же, понадобится включить [[Сервисы Gateway и routing]]) | * Производим [[Система Kubernetes#Установка minikube]] для gitlab-runner@server (для доступа к репозиторию, на нем же, понадобится включить [[Сервисы Gateway и routing]]) | ||
=== 5.2 Базовые объекты k8s === | === 5.2 Базовые объекты k8s === | ||
- | * Изучаем [[Система Kubernetes#Базовые объекты k8s]] (gitlab-runner@server:~/webd$) | + | * Изучаем [[Система Kubernetes#Базовые объекты k8s]] |
- | * Для понимания работы [[Система Kubernetes#Ingress]] (понадобится в следующем курсе), настраиваем [[Сервис HTTP#NGINX]] для доступа к приложению webd в minikube с хост системы | + | * Для понимания работы [[Система Kubernetes#Ingress]] (понадобится в следующем курсе), настраиваем [[Сервис HTTP#Прокси "красивого" URL в приложение (пример 3)|Nginx]] для доступа к приложению webd в minikube с хост системы |
+ | * Настраиваем [[Сервис Keepalived#Настройка балансировки нагрузки|Keepalived]] и тестируем [[Утилита curl]] | ||
* Тестируем livenessProbe с extern-host | * Тестируем livenessProbe с extern-host | ||
+ | |||
<code> | <code> | ||
- | extern-host# cat /etc/hosts | + | ext-host:~# echo "GET http://webd.corpX.un" | vegeta attack -duration=20s -rate=400 -connect-to webd.corpX.un:80:172.16.1.X:80 | vegeta report |
- | </code><code> | + | |
- | ... | + | |
- | 172.16.1.X webd.corpX.un | + | |
</code> | </code> | ||
=== 5.3 Deploy в k8s === | === 5.3 Deploy в k8s === | ||
- | * Автоматизируем deploy используя [[Инструмент GitLab#Пример shell Kubernetes]] GitLab CD (см. выше), сталкиваемся с необходимостью править версию в манифесте, рассмотрев вариант envsubst видим, необходимость в Helm | + | * Автоматизируем deploy используя [[Инструмент GitLab#Пример shell Kubernetes]] GitLab CD (см. выше) |
- | * В финале, можно "собрать" новую версию приложения на gate из под учетной записи student | + | * Тестируем "выкатку" новой версии приложения через запрос несуществующего файла и [[Система Kubernetes#Версии deployment]] |
+ | * Столкнувшись с необходимостью править версию в манифесте, рассмотрев вариант с envsubst в [[Инструмент GitLab#Пример shell Kubernetes]], видим необходимость в Helm | ||
+ | * В финале, можно "закоммитить" новую версию приложения прямо в GitLab | ||
Line 327: | Line 324: | ||
===== Дополнительные материалы ===== | ===== Дополнительные материалы ===== | ||
- | + | * [[https://rutube.ru/video/010673aafbfa7669938d1c3fec3a2ed8|Зачем нужен Kubernetes?]] | |
+ | * [[https://rutube.ru/video/299b61b457e95203906d9e60878993e3|Вход в Jenkins для администратора Linux]] | ||
+ | * [[https://rutube.ru/video/5ba29eaa5f03107ea8d4b686ae7551a6|Развертывание инфраструктуры в On-premise облаке с использованием Terraform]] | ||