Технологии DevOps

Технологии DevOps

Курс читается для бакалавров 3-4 года обучения.

О программе

Курс посвящен практическому изучению современных DevOps-технологий. Вы овладеете базовыми знаниями и навыками построения конвейеров, автоматизации процессов разработки и эксплуатации ПО, контейнеризации приложений, развертывания систем непрерывной интеграции кода, построения пайплайнов сборки приложений, развертывания систем оркестрации контейнеров, построения процессов развертывания приложений на платформе исполнения, создания систем мониторинга инфраструктуры и приложений, сбора и анализа логов работы приложений.

Вы научитесь

  • развертывать системы непрерывной интеграции кода
  • собирать и анализировать логи работы приложений
  • развертывать системы оркестрации контейнеров
  • создавать системы мониторинга инфраструктуры и приложений

Темы занятий

  1. Основы технологии контейнеризации приложений

    Специфика развертывания распределенных высокопроизводительных приложений. Введение в облачные сервисы (IaaS, PaaS, SaaS). Философия DevOps, непрерывная интеграция и доставка кода. Система контроля версий. Git. Типовые операции. Репозиторий артефактов программного кода. Технология Docker. Разграничение пространств процессов в операционной системе при помощи cgroups. Состав технологии: файлы докер, реестр образов, контейнеры, демон Docker. Слои доступа к файлам. Кластер Docker-хостов. Создание кластера. Масштабирование контейнеров. Подготовка виртуальных машин на базе Debian. Написание Dockerfile и docker-compose.yaml для локального запуска React-mobx приложения с node.js-бекендом и PostgreSQL базой данных.

  2. Установка и настройка GitLabCI

    Назначение и составные модули системы автоматизации сборки GitLabCI. Формат дескриптора сборки проекта в файле .gitlab-ci.yml. Способы масштабирования GitLabCI для ускорения процесса сборок и тестирования. Установка и настройка GitLabCI в docker-compose окружении. Развертывание реестра Docker-образов GitLabCI.

  3. Сборка приложений в GitLabCI

    Компоненты конвейера GitLabCI, система стадий (stages) в конвейере GitLabCI. Запуск конвейера по расписанию. Публикация артефактов работы сборочного конвейера. Обработка ошибок сборки. Написание .gitlab-ci.yml для тестирования, сборки, публикации Docker-образа в реестра GitLabCI и локального развертывания проекта.

  4. Система оркестрирования Kubernetes

    Оркестрация сервисов масштабных приложений. Проблемы и вызовы. Состав кластера Kubernetes. Основные элементы развертывания (Pod, Service, Route). Варианты развертывания кластера Kubernetes (minikube, k8s, k3s, k8s managed). Управление кластером Kubernetes через kubectl и Kubernetes Dashboard. Развертывание кластера k3s и Kubernetes Dashboard в подготовленной виртуальной машине на базе Debian.

  5. Развертывание приложений в Kubernetes при помощи GitLabCI

    Автоматическое развертывание приложения в результате успешной сборки, контуры развертывания. Создание отчетов о развертывании приложений. Создание yaml-дескрипторов развертывания в кластер k3s. Создание элементов консолидации модулей развертывания (Service) и маршрутизации (Ingress). Передача параметров через ConfigMap. Создание GitLabCI конвейера для развертывания приложения в кластере Kubernetes с применением созданных дескрипторов.

  6. Шаблонизатор развертывания Helm

    Релиз приложений, состав релиза ,порядок развертывания релизов по контурам эксплуатации. Назначение и использование Helm-шаблонизатора. Установка Helm. Создание Helm-чартов. Структура чартов Helm. Настройка параметров (values) для конфигурации чарта Helm. Настройка установки и обновления релизов с использованием Helm. Откат релиза с использованием Helm.

    Создание GitLabCI конвейера для развертывания приложения в кластере Kubernetes с применением helm-артефактов.

  7. Технологии мониторинга Prometheus и Grafana

    Назначение и состав системы сбора метрик на основе Prometheus. Подсистема рассылки предупреждений Prometheus. Длительное хранение метрик, использование PromQL для анализа и агрегации метрик в Prometheus. Возможности Grafana как среды визуализации метрик Prometheus. Масштабирование инфраструктуры мониторинга. Настройка мониторинга инфраструктуры эксплуатации и приложений при помощи Prometheus и Grafana. Развертывание серверов Prometheus и Grafana, развертывание node exporter для отправки метрик работы инфраструктуры (узлов кластера) в Prometheus. Создание Grafana Dashboard. Сбор метрик работы приложения. Создание GitLabCI конвейера для развертывания приложения в кластере Kubernetes с применением helm-артефактов.

  8. Централизованный сбор журналов работы приложения

    Назначение систем централизованного логирования в кластерных системах. Состав систем централизованного логирования. Брокер сообщений Kafka в системах централизованного логирования. Сбор стандартного вывода контейнеров при помощи beat-утилит. Logstash как система опроса, фильтрации и передачи сообщений от источника к приемнику. Система полнотекстового поиска OpenSearch как средство анализа логов. Развертывание модулей системы централизованного сбора логов на базе технологий Logstash и OpenSearch.