Открытый вебинар «Использование Jenkins c K8S» 10.02.2020 в 20:00 | OTUS
Запланируйте обучение с выгодой в Otus!
-15% на все курсы до 20.11 Забрать скидку! →
Выбрать курс
Проходил 10 февраля 2020 года в 20:00

Открытый вебинар
Использование Jenkins c K8S

Открытый вебинар онлайн

Изучим особенности взаимодействия Jenkins и Kubernetes, рассмотрим примеры использования такого подхода, проанализируем описание работы плагина и оператора.
Преподаватель
Борис Николаев

Запись

О курсе

CI/CD

Практический интенсивный курс по популярной методике непрерывной разработки и поставки программного обеспечения Continuous Integration и Continuous Delivery на GitLab
Партнером данного курса является Selectel. Вам выдадут промокоды на ресурсы Selectel, чтобы выполнять практические задания.

Цель курса:
- сформировать понимание архитектуры облачных провайдеров
- научить настройке процесса сборки и тестирования приложения
- изучить автоматизацию анализа кода и поиска уязвимостей
- настраивать процесс установки приложения

Программа курса
Модуль 1
Знакомство с процессами
Модуль 2
Continuous Delivery/Deployment
Модуль 3
Построение полноценного флоу CI/CD
Модуль 4
Итоговый модуль
Знакомство с процессами
Архитектура GitLab, знакомство с Gitlab CI
объяснить, что такое гитлаб сиай нужен для того, чтобы запускать какие-то действия с кодом после его получения.
Установка и настройка GitLab и агентов сборки
после занятия вы сможете:
ставить гитлаб, готовить его к работе, добавлять раннеры.
Домашние задания: 1
ДЗ
Регистрация Gitlab Runner и запуск простейшего пайплайна. 1) сделать репозиторий
2) запустить и привязать к проекту gitlab-runner
3) написать простейший .gitlab-ci.yml пайплайн по примеру с занятия
4) добиться успешного выполнения пайплайна на своём раннере
Continuous Integration и концепция CICD Workflow
объяснить, что такое CI, зачем он нужен;
показать какие могут быть триггеры на запуск задач;
рассказать про концепецию универсального воркфлоу для процессов.
Домашние задания: 1
ДЗ
Доработка пайплайна.
Жизненный цикл ПО и флоу работы с кодом
проанализировать различные виды моделей ветвления в git-е:
- Centralized Workflow
- Git flow
- Trunc-based
- Forking Workflow

обсудить какую модель в каком случае имеет смысл применить.
Автоматическая сборка и тестирование
написать первый пайплайн для автоматической сборки проекта и модульного тестирования через несколько утилит, линтеры и анализаторы.
Домашние задания: 1
ДЗ
Написание пайплайна для модульного тестирования и сборки. 1. определить стадии движения продукта для выбранного проекта
2. описать в файле gitlab-ci пайплайн для поочередного выполнения
3. добавить модульные тесты, линтеры
4. добавить сборку
5. вынести сборку и тестирование в отдельные ci-файлы (в другом репозитории)
6. включить вынесенные файлы в исходный пайплайн как зависимости
5. (необязательно) добавить шаг деплоя
Gitlab CI и Docker: Services, Artifacts, Rules
разобраться с применением services, сохранением артефактов между этапами
Домашние задания: 1
ДЗ
Условия. Добавить условия для сборки докер-образа - если менялся код приложения или докерфайл
Интеграция с Kubernetes
Continuous Delivery/Deployment
Введение в CD
проанализировать, чем отличается Continuous Delivery от Continuous Deploymen;
написать простейшую доставку на баше.
Домашние задания: 1
ДЗ
Развертывание приложения. 1. описываем этап доставки и развертывания
2. добавляем его в наш пайплайн
3. используем баш-шелл для доставки и запуска приложения на целевом сервере
Инструменты управления конфигурациями
написать первый плейбук;
установить nginx.
Домашние задания: 1
ДЗ
Необязательно: Первый плейбук. 1. создаем структуру каталога для ансибл-плейбука
2. описываем простейший плейбук для запуска на целевой машине нашего docker-контейнера
Ansible 1/2: разработка плейбуков и шаблонизация
Домашние задания: 1
ДЗ
Дорабатываем наш плейбук. 1. добавляем в наш плейбук новые задачи и условия
2. выносим переменные
3. пишем шаблон конфигурации
Ansible 2/2: разработка ролей и работа с переменными
Домашние задания: 1
ДЗ
Написание ansible-роли . 1. Переделываем наш плейбук в роль
2. Делаем роль конфигурируемой
3. Переписываем плейбук чтобы он работал с ролью
Инфраструктура как код
рассказать про концепцию инфраструктуры как код.
объяснить, что из этого мы уже успели реализовать;
проанализировать, что можно улучшить и чего не хватает;
построить инфраструктурный пайплайн.
Kafka
настраивать kafka как буфер между logstash и elsaticsearch.
Тестируем и версионируем инфраструктурный код
поработать с ansible galaxy;
версионировать инфраструктуру по гит флоу и протестировать через Molecule.
Домашние задания: 1
ДЗ
Добавляем к роли тесты и выносим её в galaxy. 1. поставить gitlab runner docker executor
2. запускать сборку в одном из питоновских образов
3. в pre степе устанавливать молекулу, ansible, docker.py
4. Добавить molecule сборку ролей

5* Написать тест запуска(verifier) на ansible
6* Подготовить Vagrantfile c docker, docke compose и gitlab runner
CI Pipeline + стратегии развертывания
рассказать о стратегиях Fail fast, Canary deployment, Feature flags, A/B;
добавить в наш прошлый пайплайн функции доставки и развертывания кода.
Домашние задания: 1
ДЗ
Добавляем CD в наш пайплайн. 1. Определяем где в пайплайне должны быть функции доставки и развертывания
2. Добавляем их в пайплайн
Построение полноценного флоу CI/CD
Воркшоп по Docker
Работа с секретами
объяснить, как деплоить на прод, сохраняя в секрете логины/пароли, ключи и другие sensitive data;
проанализировать возможности облачных провайдеров и внешние инструменты;
прописать для пайплайна демо-приложения, данные для доступа на промышленные среды.
Домашние задания: 1
ДЗ
Перенести секреты из пайплайна вашего проекта в безопасное хранилище..
Мониторинг работы приложения
настроить мониторинг приложения средствами облачных провайдеров:
- Amazon CloudWatch
- Azure Monitor
- Мониторинг в Gitlab

подключить мониторинг к демо-проекту, анализируем доступность приложения при установки новой версии.
Установка в базы данных
Знакомство с terraform
экстраполировать всё, что узнали про ansible - на terraform.
Домашние задания: 1
ДЗ
Пишем терраформ-план. 1. определяем состояния которые нам нужны в кластере
2. описываем всё в терраформ плане
3. делаем инфраструктурный пайплайн развертывания
Воркшоп по Ansible
Безопасность контейнеров, интеграция проверок безопасности и пайплайны
разобраться могут ли контейнеры быть безопасными.
Проверка на лицензионную чистоту
рассмотреть виды лицензирования - их отличия и возможности использования;
объяснить в чем смысл проверок на соответствие продукта, используемым лицензиям и к чему может привести нарушение "лицензионной чистоты" продукта;
добавить в пайплайн демо-приложения шаг проверки на "чистоту лицензирования".
Домашние задания: 1
ДЗ
Добавляем в пайплайн демо-приложения шаг проверки на ""чистоту лицензирования""..
GitOps
Jenkins
настроить и запустить сервис. интегрировать с git и Docker; рассмотреть pipeline-подход.
Итоговый модуль
тест
Консультация по проекту и домашним заданиям
получить ответы на вопросы по проекту, ДЗ и по курсу.
Домашние задания: 1
ДЗ
Проектная работа. 0. Создайте подгруппу для ваших будущих репозиториев
1. Возьмите несколько (2-3) репозитория с кодом приложений. Можно использовать те, которые встречались за время обучения.
2. Разработайте подходящий для всех репозиториев флоу cicd
3. Реализуйте шаг тестирования
4. Реализуйте шаг сборки
5. Выберите механизм деплоя этих проектов
6. Реализуйте механизм деплоя
7. При необходимости, добавьте инфраструктурные репозитории (роли, манифесты, шаблоны)
Проверка кода на кибербезопасность
объяснить разницу между статической проверкой кода (SAST) на уязвимости и динамической проверкой (DAST);
проанализировать функциональные возможности опен-соурсных и коммерческих утилит;
подключить к нашему пайплайну обе проверки.
Домашние задания: 1
ДЗ
подключить к пайплайну вашего проекта проекту с помощью любого SAST или DAST. Приложить отчет (даже если он пустой) в ДЗ. .
Работа с динамическими окружениями
проанализировать различные подходы к процессу ревью изменений до их принятия в основую ветку разработки;
настроить деплой изменений на статическое и динамическое окружение;
добавить шаг Review в пайпалайн демо-проекта.
Домашние задания: 1
ДЗ
Для выбранных вами проектов, реализовать динамическое формирование окружения для развертывания feature-веток..
Подведение итогов курса
обсуждение проектных работ.
узнать, как получить сертификат об окончании курса, как взаимодействовать после окончания курса с OTUS и преподавателями, какие вакансии и позиции есть для выпускников (опционально - в России и за рубежом) и на какие компании стоит обратить внимание.
«Воркшоп по Ansible» часть 2
Дополнительная защита и подведение итогов курса
обсуждение проектных работ. узнать, как получить сертификат об окончании курса, как взаимодействовать после окончания курса с OTUS и преподавателями, какие вакансии и позиции есть для выпускников (опционально - в России и за рубежом) и на какие компании стоит обратить внимание.

Преподаватель

Борис Николаев
Build Engineer в Dino Systems

в прошлом Software engineer в EPAM Systems

Более 5 лет занимается сборкой и развертыванием приложений для HPC кластеров, а также поддержкой и автоматизацией CI фермы, Jenkins, Gerrit, Selenium, Nexus
Поддерживал Continuous integration для нескольких проектов, с использованием Hudson.
Занимался непрерывной сборкой и развертыванием (CI/CD) приложений на тестовых серверах( Jenkins ant + liquibase + python ), поддержкой большого ( >20 ) однотипного окружения ( Ubuntu Maverick ) с централизованным управлением (puppet, fabric)

Более 7 лет администрирует Linux и веб-сервера.
Черная пятница в Otus! ⚡️
Скидка 15% на все курсы до 20.11 →