User Tools

Site Tools


введение_в_devops

This is an old revision of the document!


Введение в DevOps

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

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

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

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

Теория

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

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. Для чего нужен GitLab Runner?
  4. Как называется файл для CI/CD в GitLab?
  5. Что такое “ветка” в Git и почему переименовали master в main?

Модуль 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

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”, остальное демонстрирует преподаватель

Вопросы

  1. Зачем нужен Docker?
  2. Чем Docker отличается от LXC?
  3. Из каких частей состоит имя образа?
  4. Чем Docker контейнер отличается от Docker образа?
  5. Как ПО в Docker контейнере может взаимодействовать с системой и другими контейнерами?
  6. Зачем нужен Dockerfile?
  7. Зачем “запихивать” сразу много инструкций в команду RUN?
  8. Зачем нужен docker-compose?

Модуль 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.1664432734.txt.gz · Last modified: 2022/09/29 09:25 by val