This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
введение_в_devops [2023/01/25 18:10] val [Лабораторные работы: Тема лабораторных работ] |
введение_в_devops [2024/11/12 11:25] (current) val |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Введение в DevOps ====== | ====== Введение в DevOps ====== | ||
- | * [[https://www.cisco.com/c/dam/m/ru_ru/training-events/2019/cisco-connect/pdf/netdevops_angrechi_on_site.pdf|Как начать управлять сетью на основе методологии NetDevOps и перестать бояться изменений в пятницу вечером]] | + | |
Line 7: | Line 7: | ||
* [[https://www.specialist.ru/course/kuber|DevOps. Уровень 1. Инфраструктура как код, основные инструменты]] | * [[https://www.specialist.ru/course/kuber|DevOps. Уровень 1. Инфраструктура как код, основные инструменты]] | ||
+ | * [[https://www.specialist.ru/track/dp-devops|ДП-ДЕВОПС-М]] | ||
===== Модуль 0. Подготовка стенда в классе ===== | ===== Модуль 0. Подготовка стенда в классе ===== | ||
Line 35: | Line 36: | ||
cd conf/virtualbox/ | cd conf/virtualbox/ | ||
+ | |||
+ | !!! 8 - это номер курса, вместо X укажите Ваш номер стенда, если не знаете его, спросите преподавателя !!! | ||
./setup.sh X 8 | ./setup.sh X 8 | ||
Line 40: | Line 43: | ||
=== 1.2 Настройка сети VM gate и server === | === 1.2 Настройка сети VM gate и server === | ||
+ | * !!! Добавить HDD 20GB к server | ||
* [[Настройка стендов слушателей#Настройка виртуальных систем Unix]] с использованием [[Настройка стендов слушателей#Скрипты автоконфигурации]] | * [[Настройка стендов слушателей#Настройка виртуальных систем Unix]] с использованием [[Настройка стендов слушателей#Скрипты автоконфигурации]] | ||
Line 60: | Line 64: | ||
=== 1.3 настройка сервиса DNS === | === 1.3 настройка сервиса DNS === | ||
+ | * [[Управление файловыми системами в Linux#Использование LVM]] | ||
* [[Финальная настройка DNS сервера]] | * [[Финальная настройка DNS сервера]] | ||
<code> | <code> | ||
Line 131: | Line 136: | ||
* Используем [[Пакет sudo]] для разрешений пользователя gitlab-runner | * Используем [[Пакет sudo]] для разрешений пользователя gitlab-runner | ||
* [[Инструмент GitLab#GitLab CI/CD]] | * [[Инструмент GitLab#GitLab CI/CD]] | ||
- | * Экспериментируем) | + | * Экспериментируем или смотри вебинар :) [[https://youtu.be/FeD6VBY2Xss|Вход в CI/CD для Linux-админа]] |
=== 2.4 Работа с ветками в GitLab CI/CD === | === 2.4 Работа с ветками в GitLab CI/CD === | ||
Line 138: | Line 143: | ||
* Создаем новый репозиторий (Project name: openvpn1, без README) в GitLab | * Создаем новый репозиторий (Project name: openvpn1, без README) в GitLab | ||
- | * Пользуясь инструкцией к проекту, включаем [[Сервис Git]] для каталога openvpn1 (ветку main) | + | * Пользуясь инструкцией к проекту, включаем [[Сервис Git]] для каталога openvpn1 (ubuntu20 ветка master) и помещаем его в GitLab (можно сразу добавить GitLab Runner и CI/CD для выкатки в прод) |
* Используем [[Сервис Git#Клонирование и обновление локального репозитория из сетевого]] проекта openvpn1 на локальную систему в [[Cmder]] (!!! появляется скрытое окно, в котором надо нажать Ок) и открываем проект в npp | * Используем [[Сервис Git#Клонирование и обновление локального репозитория из сетевого]] проекта openvpn1 на локальную систему в [[Cmder]] (!!! появляется скрытое окно, в котором надо нажать Ок) и открываем проект в npp | ||
* Используем [[Сервис Git#Работа с ветками]] в Git для тестовой конфигурации в [[Сервис Ansible#Роль OpenVPN сервера]] (можно добавить и протестировать настройки push...dhcp...dns) | * Используем [[Сервис Git#Работа с ветками]] в Git для тестовой конфигурации в [[Сервис Ansible#Роль OpenVPN сервера]] (можно добавить и протестировать настройки push...dhcp...dns) | ||
* Устанавливаем и регистрируем [[Инструмент GitLab#GitLab Runner]] (shell) на server | * Устанавливаем и регистрируем [[Инструмент GitLab#GitLab Runner]] (shell) на server | ||
* Используем GitLab CI/CD [[Инструмент GitLab#Пример shell ansible]] для сервиса OpenVPN с ручным тестированием конфигурации | * Используем GitLab CI/CD [[Инструмент GitLab#Пример shell ansible]] для сервиса OpenVPN с ручным тестированием конфигурации | ||
- | * Используем [[Сервис Git#Работа с ветками]] в Git для переноса изменений ветки test в main | + | * Используем [[Сервис Git#Работа с ветками]] в Git для переноса изменений ветки test в master |
* Дополнительное задание - добавить [[Пакет OpenVPN#Тестирование конфигурации]] перед деплоем | * Дополнительное задание - добавить [[Пакет OpenVPN#Тестирование конфигурации]] перед деплоем | ||
Line 167: | Line 172: | ||
* Добавляем DNS записи nodeN A 192.168.X.200+N в [[Сервис DNS#Настройка мастер сервера зоны corpX.un]] | * Добавляем DNS записи nodeN A 192.168.X.200+N в [[Сервис DNS#Настройка мастер сервера зоны corpX.un]] | ||
+ | * Обзор команд [[Технология VirtualBox]] | ||
* Развертываем с использованием [[Технология Vagrant]] node1,2,3 | * Развертываем с использованием [[Технология Vagrant]] node1,2,3 | ||
Line 190: | Line 196: | ||
- Что должно быть установлено на целевой системе для управления через Ansible? | - Что должно быть установлено на целевой системе для управления через Ansible? | ||
- Каким образом Vagrant управляет VM? | - Каким образом Vagrant управляет VM? | ||
- | - Для чего предназначен Provision в Vagrant? | ||
- Как реализован Ansible provision в Vagrant? | - Как реализован Ansible provision в Vagrant? | ||
===== Модуль 4: Распространение ПО с использованием контейнеров ===== | ===== Модуль 4: Распространение ПО с использованием контейнеров ===== | ||
Line 207: | Line 212: | ||
* [[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://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)]] | ||
+ | |||
+ | * duration=60s rate=400 выдерживают 10 экземпляров приложения | ||
+ | * в качестве external-host можно использовать gate | ||
<code> | <code> | ||
external-host# curl http://172.16.1.X | external-host# curl http://172.16.1.X | ||
Line 291: | Line 299: | ||
* Тестируем [[Система Kubernetes#Базовые объекты k8s]] из локального репозитория и deploy [[Инструмент GitLab#GitLab CI/CD]] в новом кластере (потребуется [[Система Kubernetes#Настройка доступа к Insecure Private Registry]] и, при использовании nfs-volume, [[Сервис NFS#Установка nfs клиента]] на node1,2,3) | * Тестируем [[Система Kubernetes#Базовые объекты k8s]] из локального репозитория и deploy [[Инструмент GitLab#GitLab CI/CD]] в новом кластере (потребуется [[Система Kubernetes#Настройка доступа к Insecure Private Registry]] и, при использовании nfs-volume, [[Сервис NFS#Установка nfs клиента]] на node1,2,3) | ||
* Используем [[Система Kubernetes#Helm]] Chart для развертывания и тестирования [[Система Kubernetes#Ingress]] в новом кластере | * Используем [[Система Kubernetes#Helm]] Chart для развертывания и тестирования [[Система Kubernetes#Ingress]] в новом кластере | ||
- | * Создаем [[Система Kubernetes#Helm]] Chart для развертывания приложения webd (предварительно проводим [[Система Kubernetes#Удаление объектов]] deployment, service и [[Система Kubernetes#Ingress]] (можно весь namespace my-ns) и добавляем index.html в [[Технология Docker#Создание контейнера для приложения с использованием Dockerfile]] для упрощения примера) | + | * Создаем [[Система Kubernetes#Helm]] Chart для развертывания приложения webd (предварительно проводим [[Система Kubernetes#Удаление объектов]] deployment, service и [[Система Kubernetes#Ingress]] (можно весь namespace my-ns) и добавляем index.html в [[Технология Docker#Создание образа для приложения с использованием Dockerfile]] для упрощения примера) |
* Используем [[Система Kubernetes#Helm]] Chart для deploy приложения webd в [[Инструмент GitLab#GitLab CI/CD]], демонстрируем history и rollback | * Используем [[Система Kubernetes#Helm]] Chart для deploy приложения webd в [[Инструмент GitLab#GitLab CI/CD]], демонстрируем history и rollback | ||
* Через [[Сервис Keepalived#Настройка балансировки нагрузки]] в Keepalived предоставляем доступ снаружи для тестирования нагрузки и отказоустойчивости | * Через [[Сервис Keepalived#Настройка балансировки нагрузки]] в Keepalived предоставляем доступ снаружи для тестирования нагрузки и отказоустойчивости |