User Tools

Site Tools


введение_в_devops

Введение в 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/

!!! 8 - это номер курса, вместо X укажите Ваш номер стенда, если не знаете его, спросите преподавателя !!!

./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

  • !!! Заранее выполняем на host системе
  • Технология Vagrant Установка

Теория

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

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

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

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

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

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

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

!!! в теме Ansible

Вопросы

  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

  • Лабораторная работа 2.4

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

Вопросы

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

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

Теория

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

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

  • duration=60s rate=400 выдерживают 10 экземпляров приложения
  • в качестве external-host можно использовать gate
external-host# curl http://172.16.1.X

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

server# tail -f /var/log/syslog

4.2 Использование технологии Docker и docker-compose для масштабирования приложения webd на одном узле

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

Методически, достаточно показать на node1

4.4 GitLab CI для Docker images

  • Автоматизируем сборку образа используя Проверка синтаксиса и GitLab CI/CD, проверяем “в ручном” режиме, а затем, в автоматическом, не забыв назначить переменные проекта, метки Gitlab Runner и сделав add, commit и push

4.5 CD приложения webd с использованием docker-compose

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

Вопросы

  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 для доступа к приложению webd в minikube с хост системы
  • Тестируем livenessProbe с extern-host
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 (следующий курс :)

Вопросы

  • Почему Kubernetes часто обозначают K8s?
  • Чем K8s отличается от Docker-Compose?
  • Что используется для описания состояния объектов в K8s?
  • Как связаны понятия Deployment, Replica Sets, Pods?
  • Для чего используются Namespace?
  • Что общего и в чем различие между Service и Ingress?
  • Что используется для подключения Pod к общим файлам?
  • Для чего нужен Helm и что используется для его описания?

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

введение_в_devops.txt · Last modified: 2023/09/11 06:23 by val