This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
devsecops_и_промышленные_решения [2026/06/14 11:53] val [2.2 Развертывание GitLab] |
devsecops_и_промышленные_решения [2026/06/20 08:57] (current) val [3.1 Интеграция инструментов безопасности в CI/CD] |
||
|---|---|---|---|
| Line 18: | Line 18: | ||
| ===== Модуль 1: Развертывание инфраструктуры предприятия ===== | ===== Модуль 1: Развертывание инфраструктуры предприятия ===== | ||
| - | ==== Теория ==== | + | ===== Слайд ===== |
| - | ==== Лабораторные работы: Развертывание стенда и kubernetes кластера ==== | + | * https://docs.google.com/presentation/d/1x0pls2ClHYfdB3W3l6jb4If7e9vGpfDA/edit?slide=id.p6#slide=id.p6 |
| - | + | ||
| - | * Разворачиваем стенд курса [[https://www.specialist.ru/course/yun2-b|Linux. Уровень 2. Администрирование сервисов и сетей]] или [[https://rutube.ru/video/18b52d9721f7464b4485fec7d894e8ca/|Развертывание стенда дома (смотреть с 13-й минуты)]] | + | |
| ==== 1.1 Схема стенда, импорт, настройка и запуск VM gate и server ==== | ==== 1.1 Схема стенда, импорт, настройка и запуск VM gate и server ==== | ||
| Line 82: | Line 80: | ||
| * Настройка сервера DHCP на gate | * Настройка сервера DHCP на gate | ||
| <code> | <code> | ||
| - | gate:~# ###git -C conf/ pull | ||
| - | |||
| gate:~# sh conf/dhcp.sh | gate:~# sh conf/dhcp.sh | ||
| </code> | </code> | ||
| Line 121: | Line 117: | ||
| </code> | </code> | ||
| - | ===== Практикум ===== | + | ==== Практикум ==== |
| * [[https://val.bmstu.ru/~val/pract/dev3/dev3_mod1_pract.mp4|Запись практикума]] (длительность: 41 минута) | * [[https://val.bmstu.ru/~val/pract/dev3/dev3_mod1_pract.mp4|Запись практикума]] (длительность: 41 минута) | ||
| + | |||
| ===== Модуль 2: Развертывание приложений в кластере Kubernetes ===== | ===== Модуль 2: Развертывание приложений в кластере Kubernetes ===== | ||
| + | |||
| + | ===== Слайд ===== | ||
| + | |||
| + | * https://docs.google.com/presentation/d/1x0pls2ClHYfdB3W3l6jb4If7e9vGpfDA/edit?slide=id.p7#slide=id.p7 | ||
| ==== 2.1 Развертывание Keycloak ==== | ==== 2.1 Развертывание Keycloak ==== | ||
| Line 213: | Line 214: | ||
| # cp /etc/gitlab/tmp/ca.crt /etc/gitlab/trusted-certs/ca.crt | # cp /etc/gitlab/tmp/ca.crt /etc/gitlab/trusted-certs/ca.crt | ||
| # apt update && DEBIAN_FRONTEND=noninteractive apt install msmtp-mta bsd-mailx -y | # apt update && DEBIAN_FRONTEND=noninteractive apt install msmtp-mta bsd-mailx -y | ||
| - | # echo -e 'account default\nhost server.corpX.un' > /etc/msmtprc | + | # /bin/echo -e 'account default\nhost server.corpX.un' > /etc/msmtprc |
| ... | ... | ||
| volumeMounts: | volumeMounts: | ||
| Line 249: | Line 250: | ||
| kube1:~/gitlab# kubectl -n my-gitlab-ns logs deployments/gitlab -f | kube1:~/gitlab# kubectl -n my-gitlab-ns logs deployments/gitlab -f | ||
| </code> | </code> | ||
| - | * [[Инструмент GitLab#Проверка конфигурации и перезапуск]] для процесса Sidekiq | + | * Может понадобиться [[Инструмент GitLab#Проверка конфигурации и перезапуск]] для процесса Sidekiq |
| + | |||
| + | * Можно показать [[Инструмент GitLab#Настройка отправки почты]], потребуется развернуть почтовый сервер из лабораторной работы [[#4.1 Мониторинг кластера]] | ||
| * Настройка подключения через OpenID (преподаватель) | * Настройка подключения через OpenID (преподаватель) | ||
| - | * [[Сервис Keycloak#Аутентификация пользователей WEB приложения]] | + | * Настройка [[Сервис Keycloak#Аутентификация пользователей WEB приложения]] через Keycloak |
| * Создать УЗ user1 через [[Инструмент GitLab#REST API интерфейс]] и связать через [[Инструмент GitLab#Клиент OpenID]] | * Создать УЗ user1 через [[Инструмент GitLab#REST API интерфейс]] и связать через [[Инструмент GitLab#Клиент OpenID]] | ||
| + | |||
| + | === Практикум === | ||
| + | |||
| + | * [[https://val.bmstu.ru/~val/pract/dev3/dev3_mod2_pract_path2.mp4|Запись практикума]] (длительность: 28 минут) | ||
| + | |||
| ==== 2.3 Стратегии развертывания и масштабирование нагрузки ==== | ==== 2.3 Стратегии развертывания и масштабирование нагрузки ==== | ||
| Line 298: | Line 306: | ||
| * Преподаватель демонстрирует добавление HTTPS в [[Система Kubernetes#Gateway]] с использованием [[Система Kubernetes#cert-manager]] | * Преподаватель демонстрирует добавление HTTPS в [[Система Kubernetes#Gateway]] с использованием [[Система Kubernetes#cert-manager]] | ||
| + | |||
| + | === Практикум === | ||
| + | |||
| + | * [[https://val.bmstu.ru/~val/pract/dev3/dev3_mod2_pract_path3.mp4|Запись практикума]] (длительность: 14 минуты) | ||
| + | |||
| ==== 2.4 ArgoCD и универсальный Helm Chart ==== | ==== 2.4 ArgoCD и универсальный Helm Chart ==== | ||
| Line 345: | Line 358: | ||
| ... 1.1 -> 1.2 ... | ... 1.1 -> 1.2 ... | ||
| - | client1$ curl https://htwebd.corp13.un | + | client1$ curl https://htwebd.corpX.un |
| kube1# kubectl delete ns my-ns | kube1# kubectl delete ns my-ns | ||
| Line 370: | Line 383: | ||
| kube1:~/webd-k8s# cp uni-webd-chart/values.yaml apps/ehwebd/ | kube1:~/webd-k8s# cp uni-webd-chart/values.yaml apps/ehwebd/ | ||
| + | kube1:~/webd-k8s# cat apps/ehwebd/values.yaml | ||
| + | ... | ||
| + | repository: brndnmtthws/nginx-echo-headers | ||
| + | ... | ||
| + | targetPort: 8080 | ||
| ... | ... | ||
| kube1:~/webd-k8s# helm template my-ehwebd uni-webd-chart/ -f apps/ehwebd/values.yaml -f env.yaml | kube1:~/webd-k8s# helm template my-ehwebd uni-webd-chart/ -f apps/ehwebd/values.yaml -f env.yaml | ||
| </code> | </code> | ||
| + | |||
| + | === Практикум === | ||
| + | |||
| + | * [[https://val.bmstu.ru/~val/pract/dev3/dev3_mod2_pract_path4.mp4|Запись практикума]] (длительность: 26 минут) | ||
| + | |||
| ===== Модуль 3: Безопасность в DevOps ===== | ===== Модуль 3: Безопасность в DevOps ===== | ||
| + | |||
| + | ===== Слайд ===== | ||
| + | |||
| + | * https://docs.google.com/presentation/d/1x0pls2ClHYfdB3W3l6jb4If7e9vGpfDA/edit?slide=id.p8#slide=id.p8 | ||
| ==== 3.1 Интеграция инструментов безопасности в CI/CD ==== | ==== 3.1 Интеграция инструментов безопасности в CI/CD ==== | ||
| Line 406: | Line 433: | ||
| kube1:~/webd-k8s# cp uni-webd-chart/values.yaml apps/pywebd/ | kube1:~/webd-k8s# cp uni-webd-chart/values.yaml apps/pywebd/ | ||
| + | kube1:~/webd-k8s# cat apps/pywebd/values.yaml | ||
| + | ... | ||
| + | PYWEBD_DOC_ROOT: /home/myuser/www/ | ||
| + | ... | ||
| + | - mkdir -p /home/myuser/www/ && echo \"<h1>Hello from pywebd on $(hostname)</h1>\" > /home/myuser/www/index.html | ||
| ... | ... | ||
| kube1:~/webd-k8s# helm template my-pywebd uni-webd-chart/ -f apps/pywebd/values.yaml -f env.yaml | kube1:~/webd-k8s# helm template my-pywebd uni-webd-chart/ -f apps/pywebd/values.yaml -f env.yaml | ||
| </code> | </code> | ||
| + | |||
| + | === Практикум === | ||
| + | |||
| + | * [[https://val.bmstu.ru/~val/pract/dev3/dev3_mod3_pract_path1.mp4|Запись практикума]] (длительность: 16 минут) | ||
| + | |||
| ==== 3.2 Управление секретами ==== | ==== 3.2 Управление секретами ==== | ||
| Line 423: | Line 460: | ||
| * [[Система Kubernetes#Работа с чувствительными данными (секретами)]] в Helm | * [[Система Kubernetes#Работа с чувствительными данными (секретами)]] в Helm | ||
| + | === Практикум === | ||
| + | |||
| + | * [[https://val.bmstu.ru/~val/pract/dev3/dev3_mod3_pract_path2.mp4|Запись практикума]] (длительность: 17 минут) | ||
| ==== 3.3 Управление доступом в Kubernetes ==== | ==== 3.3 Управление доступом в Kubernetes ==== | ||
| Line 435: | Line 475: | ||
| * Устанавливаем [[Система Kubernetes#Kubernetes Dashboard]] с client1 | * Устанавливаем [[Система Kubernetes#Kubernetes Dashboard]] с client1 | ||
| - | * Преподаватель демонстрирует интеграцию с внешними системами идентификации для [[Управление доступом в Kubernetes]] | + | * Можно продемонстрировать интеграцию с внешними системами идентификации - [[Управление доступом в Kubernetes#Шаг 7. Использование OpenID Connect]] |
| SecurityContext/NetworkPolicy | SecurityContext/NetworkPolicy | ||
| Line 448: | Line 488: | ||
| * [[Система Kubernetes#Использование NetworkPolicy]] для управления доступом в NS кластера | * [[Система Kubernetes#Использование NetworkPolicy]] для управления доступом в NS кластера | ||
| + | === Практикум === | ||
| + | |||
| + | * [[https://val.bmstu.ru/~val/pract/dev3/dev3_mod3_pract_path3.mp4|Запись практикума]] (длительность: 23 минуты) | ||
| ==== 3.4 Использование IDS/IPS в Kubernetes ==== | ==== 3.4 Использование IDS/IPS в Kubernetes ==== | ||
| Line 487: | Line 530: | ||
| root@my-ubuntu:/# snort -i eth0 -S HOME_NET=[0.0.0.0/0] -c /etc/snort/snort.conf # -A console | root@my-ubuntu:/# snort -i eth0 -S HOME_NET=[0.0.0.0/0] -c /etc/snort/snort.conf # -A console | ||
| </code> | </code> | ||
| + | |||
| + | === Практикум === | ||
| + | |||
| + | * [[https://val.bmstu.ru/~val/pract/dev3/dev3_mod3_pract_path4.mp4|Запись практикума]] (длительность: 17 минут) | ||
| ===== Модуль 4: Восстановление кластера после сбоев ===== | ===== Модуль 4: Восстановление кластера после сбоев ===== | ||
| + | |||
| + | ===== Слайд ===== | ||
| + | |||
| + | * https://docs.google.com/presentation/d/1x0pls2ClHYfdB3W3l6jb4If7e9vGpfDA/edit?slide=id.p9#slide=id.p9 | ||
| ==== 4.1 Мониторинг кластера ==== | ==== 4.1 Мониторинг кластера ==== | ||
| Line 501: | Line 552: | ||
| * [[Сервис VictoriaMetrics]] | * [[Сервис VictoriaMetrics]] | ||
| + | === Практикум === | ||
| + | |||
| + | * [[https://val.bmstu.ru/~val/pract/dev3/dev3_mod4_pract_path1.mp4|Запись практикума]] (длительность: 35 минут) | ||
| ==== 4.2 Резервное копирование и восстановление ==== | ==== 4.2 Резервное копирование и восстановление ==== | ||
| - | * Резервное копирование и восстановление данных приложений с [[Система Kubernetes#Использование snapshot-ов]] longhorn (Вебинар: [[Работа с хранилищами в Kubernetes]]) | + | * Резервное копирование и восстановление данных приложений с [[Система Kubernetes#Использование backup-ов]] longhorn (Вебинар: [[Работа с хранилищами в Kubernetes]]) |
| * [[Сервис PostgreSQL#Резервное копирование и восстановление]] PostgreSQL (Вебинар: [[Все что должен знать DevOps про PostgreSQL]]) | * [[Сервис PostgreSQL#Резервное копирование и восстановление]] PostgreSQL (Вебинар: [[Все что должен знать DevOps про PostgreSQL]]) | ||
| * [[Система Kubernetes#Отладка etcd]] | * [[Система Kubernetes#Отладка etcd]] | ||
| + | |||
| + | === Практикум === | ||
| + | |||
| + | * [[https://val.bmstu.ru/~val/pract/dev3/dev3_mod4_pract_path2.mp4|Запись практикума]] (длительность: 8 минут) | ||
| + | |||
| ==== 4.3 Восстановление кластера после сбоев ==== | ==== 4.3 Восстановление кластера после сбоев ==== | ||
| Line 536: | Line 595: | ||
| * Проверка состояния кластера и приложений | * Проверка состояния кластера и приложений | ||
| + | |||
| + | === Практикум === | ||
| + | |||
| + | * [[https://val.bmstu.ru/~val/pract/dev3/dev3_mod4_pract_path3.mp4|Запись практикума]] (длительность: 15 минут) | ||
| + | |||
| ==== 4.4 Обновление кластера ==== | ==== 4.4 Обновление кластера ==== | ||
| Line 541: | Line 605: | ||
| * [[Система Kubernetes#Обновление кластера через kubespray]] | * [[Система Kubernetes#Обновление кластера через kubespray]] | ||
| * Проверка состояния кластера и приложений | * Проверка состояния кластера и приложений | ||
| + | |||
| + | === Практикум === | ||
| + | |||
| + | * [[https://val.bmstu.ru/~val/pract/dev3/dev3_mod4_pract_path4.mp4|Запись практикума]] (длительность: 4 минуты) | ||
| + | |||
| ===== Примеры конфигураций ===== | ===== Примеры конфигураций ===== | ||