User Tools

Site Tools


введение_в_devops

This is an old revision of the document!


Введение в DevOps

Программа курса

Модуль 0. Подготовка стенда в классе

  • Узнать свой номер стенда
  • Проверить наличие дистрибутивов и образов (будет сделано)
  • Использовать кэширующий прокси для ускорения загрузки

Модуль 1: Развертывание стенда

Теория

  • Разворачиваем стенд курса ЛИН2

Лабораторные работы: Развертывание стенда

1.1 Схема стенда, импорт, настройка и запуск VM gate и server

Запустите с правами Administrator

C:\cmder\cmder.exe

bash

cd

git clone http://val.bmstu.ru/unix/conf.git

cd conf/virtualbox/

./setup.sh X 8

1.2 Настройка сети VM gate и server

  • gate
# sh net_gate.sh

# init 6
  • server
# sh net_server.sh

# init 6
  • Создать в Putty профили gate, server и подключиться

1.3 настройка сервиса DNS

server:~# sh conf/dns.sh
  • Настройка клиента DNS на gate и server
# cat /etc/resolv.conf
search corpX.un
nameserver 192.168.X.10
# nslookup ns

Вопросы

Модуль 2: От Git к GitLab CI/CD

Теория

Лабораторные работы: От Git к GitLab

2.1 Вспоминаем Git

gate:~# sh conf/dhcp.sh
gate# su - student

2.2 Знакомимся с GitLab

!!! Если GitLab к этому времени не установился, начать тему Vagrant

2.3 Знакомимся с GitLab CI/CD

  • Устанавливаем GitLab Runner (shell) на gate и регистрируем в GitLab
  • Используем Пакет sudo для разрешений пользователя gitlab-runner
  • Экспериментируем)

2.4 Работа с ветками в GitLab CI/CD

!!! в теме Ansible

  • Включаем Сервис Git для каталога openvpn1 и загружаем его в
  • Создаем новый репозиторий (Project name: openvpn1, без README) в GitLab и пользуясь инструкцией к проекту, добавляем его в ветку main)
  • Загружаем репозиторий openvpn1 на локальную систему в Cmder (!!! появляется скрытое окно, в котором надо нажать Ок), открываем проект в npp
  • Используем Работа с ветками в Git для тестовой конфигурации в Роль OpenVPN сервера (можно добавить и протестировать настройки push…dhcp…dns)
  • Устанавливаем GitLab Runner (shell) на server
  • Используем GitLab CI/CD Пример shell ansible для сервиса OpenVPN с ручным тестированием тестовой конфигурации
  • Дополнительное задание - добавить тестирование конфигурации перед деплоем

Вопросы

  1. Чем отличается GitLab от Git?
  2. Что делают операции add, commit, push в Git?
  3. Что такое “ветка” в Git и почему переименовали master в main?
  4. Для чего нужен GitLab Runner?
  5. Как называется файл для CI/CD в GitLab?

Модуль 3: Инфраструктура как код

Теория

  • Построение ландшафта инфраструктуры на примере Технология Vagrant
  • Построение ландшафта облачной инфраструктуры с использованием HashiCorp Terraform
  • Управление инфраструктурой на примере Сервис Ansible

Лабораторные работы: Использование Vagrant

3.1 Использование Vagrant

3.2 Использование Ansible

3.3 Использование Ansible в Vagrant

Вопросы

  1. Что общего и в чем отличие между Ansible, Vagrant и Terraform?
  2. Что такое module, playbook, role в Ansible?
  3. Назовите каталоги в роли Ansible
  4. Что должно быть установлено на целевой системе для управления ею через Ansible
  5. Каким образом Vagrant управляет VM?
  6. Для чего предназначен Provision в Vagrant?
  7. Как реализован Ansible provision в Vagrant?

Модуль 4: Распространение ПО с использованием контейнеров

Теория

[[Технология Docker]]

Лабораторные работы: Работа с контейнерами Docker

4.1 Разработка и нагрузочное тестирование приложения webd

external-host# curl http://172.16.1.X

external-host# echo "GET http://172.16.1.X" | vegeta attack -duration=10s -rate=400 | vegeta report

server# tail -f /var/log/syslog

4.2 Использование технологии Docker для распространения приложения webd

4.3 Горизонтальное масштабирование приложения webd с использованием docker-compose

Примечание: слушатели делают только “Сервис NFS на server”, остальное демонстрирует преподаватель

  • Сервис NFS на server
  • Установка nfs клиента на node1 (достаточно для демонстрации, node2,3 опустим)
  • Настраиваем доступ к Локальные репозитории на node1,2,3, понадобится в k8s (дополнительное задание - создать ansible playbook для настройки подключения docker к локальному репозиторию)
  • Используя Подключение через API скачиваем на node1 (node2,3 опустим) файл docker-compose и масштабируем
  • Считаем, что пришлось делать “вручную”: выбирать узлы, монтировать nfs, загружать файл docker-compose, выяснять порты - выход: Система Kubernetes

Вопросы

Модуль 5: Управление ПО с использованием Kubernetes

Теория

Лабораторные работы: Тема лабораторных работ

5.1 Установка и подключение к k8s

5.2 Базовые объекты k8s

  • Для понимания работы Ingress, изучаем NGINX, используя его параллельно Ingress для доступа к приложению webd с хост системы
  • и системы снаружи для тестирования livenessProbe (лучше не использовать DNS View из-зи множества внутренних сетей Docker/K8S)
extern-host# cat /etc/hosts
...
172.16.1.X     webd.corpX.un

5.3 Deploy в k8s

  • Автоматизируем deploy используя GitLab CI/CD, сталкиваемся с необходимостью править версию в манифесте, рассмотрев вариант envsubst видим необходимость в Helm

5.4 Helm в k8s

Вопросы

Дополнительные материалы

введение_в_devops.1664338654.txt.gz · Last modified: 2022/09/28 07:17 by val