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
технологии_devops [2022/09/20 11:54]
val removed
— (current)
Line 1: Line 1:
-====== Технологии DevOps ====== 
  
-  * [[https://​www.cisco.com/​c/​dam/​m/​ru_ru/​training-events/​2019/​cisco-connect/​pdf/​netdevops_angrechi_on_site.pdf|Как начать управлять сетью на основе методологии NetDevOpsи перестать бояться изменений в пятницу вечером]] 
-  * [[https://​stackoverflow.com/​questions/​47536536/​whats-the-difference-between-docker-compose-and-kubernetes|What'​s the difference between Docker Compose and Kubernetes?​]] 
- 
-===== Ссылка на вебинар ===== 
- 
-===== Программа курса ===== 
- 
-  * [[https://​www.specialist.ru/​course/​kuber|Введение в DevOps: инфраструктура как код, использование Docker и Kubernetes]] 
- 
-==== Примерный план ==== 
- 
-=== Развертывание стенда === 
- 
-  * Разворачиваем ЛИН2 (gate, server (4Gb)) 
-<​code>​ 
-Запустите с правами Administrator 
- 
-C:​\cmder\cmder.exe 
- 
-bash 
- 
-cd 
- 
-git clone http://​val.bmstu.ru/​unix/​conf.git 
- 
-cd conf/​virtualbox/​ 
- 
-./setup.sh X 8 
-</​code>​ 
- 
-  * Настраиваем сеть на gate и server 
-  * На server запускаем сервис DNS (gate пока БЕЗ dhcp) 
-  * На gate и server resolv.conf + на host системе dns для vbox адаптера 
-  * На server запускаем установку [[Сервис Ansible]] и [[Инструмент GitLab]] 
- 
-=== Историческая ретроспектива систем контроля версий и CI/CD === 
- 
-  - Изучаем/​вспоминаем [[Сервис Git]] на примере каталога /etc ПЕРЕД и после установки [[Сервис DHCP]] в систему gate  
-  - Обсуждаем общий репозиторий для всех систем,​ но весь /etc туда - плохо 
-  - Вспоминаем/​узнаем про [[Установка ПО из исходных текстов#​Использование утилиты make]] и, в том числе [[Установка ПО из исходных текстов#​Использование make для сопровождения файлов конфигурации сервиса]],​ на примере dhcp, поутно сталкиваемся с необходимостью [[Модуль AppArmor#​Определение наличия и правка профилей для служб]] в AppArmor, подключаем сюда [[Сервис Git]], это уже можно класть в общий репозиторий 
-  - Если GitLab к этому времени не установился,​ можно показать [[Сервис Git#​Создание сетевого http/ssh git репозитория]] и обновление [[Сервис Git#​Персонального http/ssh git репозитория]] 
- 
-=== Современное решение CI/CD на примере GitLab === 
- 
-Часть 1: Знакомимся с GitLab (Если GitLab к этому времени не установился,​ начать тему Vagrant) 
- 
-  - [[Инструмент GitLab]] 
-  - Создание учетной записи student в GitLab 
-  - http://​server.corp13.un:​81/​mail 
-  - Подключаемся как student, New Blank Project (Project name: dhcp, без README) 
-  - [[Сервис Git#​Обновление сетевого репозитория из локального]] 
-  - Редактируем dhcpd.conf в GitLab IDE (Commit to master branch) 
- 
-Часть 2: Знакомимся с GitLab CI/CD 
- 
-  - [[Сервис Git#​Клонирование и обновление локального репозитория из сетевого]] (root на gate) 
-  - [[Установка ПО из исходных текстов#​Использование make для сопровождения файлов конфигурации сервиса]] 
-  - [[Сервис DHCP#​Статистика DHCP сервера]] 
- 
-  - Устанавливаем [[Инструмент GitLab#​GitLab Runner]] (shell) на gate 
-  - Используем [[Пакет sudo]] для разрешений пользователя gitlab-runner 
-  - [[Инструмент GitLab#​GitLab CI/CD]] 
- 
-Часть 3: Работа с ветками в GitLab CI/CD (в теме Ansible) 
- 
-  - Устанавливаем [[Инструмент GitLab#​GitLab Runner]] (shell) на server 
-  - Включаем [[Сервис Git]] для каталога openvpn1 и загружаем его в новый репозиторий openvpn1 в GitLab (пользуясь инструкцией к проекту,​ можно переименовать ветку master->​main) 
-  - Загружаем репозиторий openvpn1 на локальную систему в [[Cmder]], открываем проект в npp 
-  - Используем [[Сервис Git#​Работа с ветками]] в Git для тестовой конфигурации в [[Сервис Ansible#​Роль OpenVPN сервера]] 
-  - Используем GitLab CI/CD [[Инструмент GitLab#​Пример shell ansible]] для сервиса OpenVPN с ручным тестированием тестовой конфигурации 
- 
-=== Инфраструктура как код, при построении ландшафта на примере Vagrant === 
- 
-  - Добавляем в DNS записи nodeN в [[Сервис DNS#​Настройка мастер сервера зоны corpX.un]] 
-  - Развертываем с использованием [[Технология Vagrant]] node1,2,3 
- 
-=== Инфраструктура как код, для управления уровнем приложений на примере Аnsible ​ === 
- 
-  - Изучаем [[Сервис Ansible]] (можно установить docker на node1,2,3) 
-  - Развертываем с [[Сервис Ansible#​Использование ролей]] [[Пакет OpenVPN]] в варианте с [[Пакет OpenVPN#​Использование PAM аутентификации]] на node1,​2,​3 ​ 
-  - Для проверки результата используем [[Сервис Keepalived]] в режиме [[Сервис Keepalived#​Настройка балансировки нагрузки]] и соответствующей [[Пакет OpenVPN#​Настройка клиента]] windows 
-  - 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 ==== 
- 
-  - Хранение общих файлов (сертификатов/​ключей) в gitlab 
-  - Тестирование ansible playbook 
-==== Методические приемы ==== 
- 
-  - Преподаватель создает основы проекта копипастингом из методички,​ слушатели загружают себе, помещают в свой gitlab и проводят эксперименты CI/CD 
-===== Модуль 0. Подготовка стенда в классе ===== 
- 
-  * Узнать свой номер стенда 
-  * Проверить наличие дистрибутивов и образов (будет сделано) 
-  * Использовать кэширующий прокси для ускорения загрузки 
-  * Настроить подключение к LAN стенда [[netsh#​Настройка IP]] 
- 
-===== Модуль 1: Развертывание IT инфраструктуры ===== 
- 
-==== Теория ==== 
- 
-  * Инфраструктура как код 
- 
-==== Лабораторные работы:​ Развертывание объектов мониторинга ==== 
- 
-=== 1.1 Развертывание системы gate === 
- 
-<​code>​ 
-# sh net_gate.sh 
- 
-# init 6 
-</​code>​ 
- 
-  * ? Настройка LAN .254 
-  * ? [[Сервис DNS#​Настройка мастер сервера зоны corpX.un]] на gate 
- 
-<​code>​ 
-# cat /​etc/​bind/​corp13.un 
-$TTL      3h 
-@         ​SOA ​    ns root.ns ​ 1 1d 12h 1w 3h 
-          NS      ns 
- 
-          A       ​192.168.13.1 
-          MX 1    server 
- 
-ns        A       ​192.168.13.1 
-gate      A       ​192.168.13.1 
-server ​   A       ​192.168.13.1 
- 
-node1     ​A ​      ​192.168.13.10 
-node2     ​A ​      ​192.168.13.20 
-node3     ​A ​      ​192.168.13.30 
-</​code>​ 
- 
-=== 1.2 Инфраструктура как код === 
- 
-  * [[Технология Vagrant]] 
- 
-==== Вопросы ==== 
- 
-===== Модуль 2: Использование контейнеров ===== 
- 
-==== Теория ==== 
- 
-==== Лабораторные работы:​ Использование контейнеров ==== 
- 
-=== 2.1 Использование контейнеров === 
- 
-  * [[Технология Docker]] 
- 
-==== Вопросы ==== 
- 
- 
-===== Модуль 3: Использование GitLab ===== 
- 
-==== Теория ==== 
- 
-==== Лабораторные работы:​ Использование GitLab ==== 
- 
-=== 3.1 Использование GitLab === 
- 
-==== Вопросы ==== 
- 
-===== Модуль N: Тема модуля ===== 
- 
-==== Теория ==== 
- 
-==== Лабораторные работы:​ Тема лабораторных работ ==== 
- 
-=== N.1 Тема лабораторной работы === 
- 
-==== Вопросы ==== 
- 
-===== Модуль N: Тема модуля ===== 
- 
-==== Теория ==== 
- 
-==== Лабораторные работы:​ Тема лабораторных работ ==== 
- 
-=== N.1 Тема лабораторной работы === 
- 
-==== Вопросы ==== 
- 
-===== Модуль N: Тема модуля ===== 
- 
-==== Теория ==== 
- 
-==== Лабораторные работы:​ Тема лабораторных работ ==== 
- 
-=== N.1 Тема лабораторной работы === 
- 
-==== Вопросы ==== 
- 
- 
-  * [[Технология Docker]] 
-  * [[Сервис HTTP#​NGINX]] 
-  * [[Сервис NAT]]