Технологии DevOps
Курс читается для бакалавров 3-4 года обучения.
О программе
Курс посвящен практическому изучению современных DevOps-технологий. Вы овладеете базовыми знаниями и навыками построения конвейеров, автоматизации процессов разработки и эксплуатации ПО, контейнеризации приложений, развертывания систем непрерывной интеграции кода, построения пайплайнов сборки приложений, развертывания систем оркестрации контейнеров, построения процессов развертывания приложений на платформе исполнения, создания систем мониторинга инфраструктуры и приложений, сбора и анализа логов работы приложений.
Вы научитесь
- развертывать системы непрерывной интеграции кода
- собирать и анализировать логи работы приложений
- развертывать системы оркестрации контейнеров
- создавать системы мониторинга инфраструктуры и приложений
Темы занятий
-
Основы технологии контейнеризации приложений
Специфика развертывания распределенных высокопроизводительных приложений. Введение в облачные сервисы (IaaS, PaaS, SaaS). Философия DevOps, непрерывная интеграция и доставка кода. Система контроля версий. Git. Типовые операции. Репозиторий артефактов программного кода. Технология Docker. Разграничение пространств процессов в операционной системе при помощи cgroups. Состав технологии: файлы докер, реестр образов, контейнеры, демон Docker. Слои доступа к файлам. Кластер Docker-хостов. Создание кластера. Масштабирование контейнеров. Подготовка виртуальных машин на базе Debian. Написание Dockerfile и docker-compose.yaml для локального запуска React-mobx приложения с node.js-бекендом и PostgreSQL базой данных.
-
Установка и настройка GitLabCI
Назначение и составные модули системы автоматизации сборки GitLabCI. Формат дескриптора сборки проекта в файле .gitlab-ci.yml. Способы масштабирования GitLabCI для ускорения процесса сборок и тестирования. Установка и настройка GitLabCI в docker-compose окружении. Развертывание реестра Docker-образов GitLabCI.
-
Сборка приложений в GitLabCI
Компоненты конвейера GitLabCI, система стадий (stages) в конвейере GitLabCI. Запуск конвейера по расписанию. Публикация артефактов работы сборочного конвейера. Обработка ошибок сборки. Написание .gitlab-ci.yml для тестирования, сборки, публикации Docker-образа в реестра GitLabCI и локального развертывания проекта.
-
Система оркестрирования Kubernetes
Оркестрация сервисов масштабных приложений. Проблемы и вызовы. Состав кластера Kubernetes. Основные элементы развертывания (Pod, Service, Route). Варианты развертывания кластера Kubernetes (minikube, k8s, k3s, k8s managed). Управление кластером Kubernetes через kubectl и Kubernetes Dashboard. Развертывание кластера k3s и Kubernetes Dashboard в подготовленной виртуальной машине на базе Debian.
-
Развертывание приложений в Kubernetes при помощи GitLabCI
Автоматическое развертывание приложения в результате успешной сборки, контуры развертывания. Создание отчетов о развертывании приложений. Создание yaml-дескрипторов развертывания в кластер k3s. Создание элементов консолидации модулей развертывания (Service) и маршрутизации (Ingress). Передача параметров через ConfigMap. Создание GitLabCI конвейера для развертывания приложения в кластере Kubernetes с применением созданных дескрипторов.
-
Шаблонизатор развертывания Helm
Релиз приложений, состав релиза ,порядок развертывания релизов по контурам эксплуатации. Назначение и использование Helm-шаблонизатора. Установка Helm. Создание Helm-чартов. Структура чартов Helm. Настройка параметров (values) для конфигурации чарта Helm. Настройка установки и обновления релизов с использованием Helm. Откат релиза с использованием Helm.
Создание GitLabCI конвейера для развертывания приложения в кластере Kubernetes с применением helm-артефактов.
-
Технологии мониторинга Prometheus и Grafana
Назначение и состав системы сбора метрик на основе Prometheus. Подсистема рассылки предупреждений Prometheus. Длительное хранение метрик, использование PromQL для анализа и агрегации метрик в Prometheus. Возможности Grafana как среды визуализации метрик Prometheus. Масштабирование инфраструктуры мониторинга. Настройка мониторинга инфраструктуры эксплуатации и приложений при помощи Prometheus и Grafana. Развертывание серверов Prometheus и Grafana, развертывание node exporter для отправки метрик работы инфраструктуры (узлов кластера) в Prometheus. Создание Grafana Dashboard. Сбор метрик работы приложения. Создание GitLabCI конвейера для развертывания приложения в кластере Kubernetes с применением helm-артефактов.
-
Централизованный сбор журналов работы приложения
Назначение систем централизованного логирования в кластерных системах. Состав систем централизованного логирования. Брокер сообщений Kafka в системах централизованного логирования. Сбор стандартного вывода контейнеров при помощи beat-утилит. Logstash как система опроса, фильтрации и передачи сообщений от источника к приемнику. Система полнотекстового поиска OpenSearch как средство анализа логов. Развертывание модулей системы централизованного сбора логов на базе технологий Logstash и OpenSearch.