====== DevSecOps и промышленные решения ====== * [[https://habr.com/ru/companies/nubes/articles/808035/|Автоматический выпуск SSL-сертификатов. Используем Kubernetes и FreeIPA]] ===== Вы научитесь ===== - Интегрировать решения безопасности в CI - Создавать CD в Кubernetes, используя ArgoCD - Интегрировать приложения в Kubernetes с FreeIPA - Настраивать решения Observability кластера Кubernetes ===== Вы будете знать ===== - Как использовать распределенные блочные хранилища в Кubernetes - Как использовать операторы Kubernetes для управления сертификатами и базами данных - Как настроить IDS/IPS приложения в Kubernetes - Как восстановить кластер Kubernetes после сбоя ===== Модуль 1: Развертывание инфраструктуры предприятия ===== * Развертывание FreeIPA [[Решение FreeIPA]] * Развертывание Kubernetes [[Система Kubernetes#Развертывание через Kubespray]] * Развертывание GitLab [[Инструмент GitLab|Установка через docker-compose]] # cat docker-compose.yml ... userns_mode: 'host' ... external_url 'https://server.corp13.un:4443' ... - '4443:4443' ... * Создать УЗ student через [[Инструмент GitLab#REST API интерфейс]] * FreeIPA [[Решение FreeIPA#Установка и инициализация клиента]] client1 * FreeIPA [[Решение FreeIPA#Управление пользователями]] user1 * Настройка [[Firefox#Использование системных сертификатов]] в Firefox * Может, не понадобится, или не сразу bash -c ' scp /opt/freeipa-data/etc/ipa/ca.crt kube1:/usr/local/share/ca-certificates/ ssh kube1 update-ca-certificates ssh kube1 systemctl restart containerd scp /opt/freeipa-data/etc/ipa/ca.crt kube2:/usr/local/share/ca-certificates/ ssh kube2 update-ca-certificates ssh kube2 systemctl restart containerd scp /opt/freeipa-data/etc/ipa/ca.crt kube3:/usr/local/share/ca-certificates/ ssh kube3 update-ca-certificates ssh kube3 systemctl restart containerd scp /opt/freeipa-data/etc/ipa/ca.crt kube4:/usr/local/share/ca-certificates/ ssh kube4 update-ca-certificates ssh kube4 systemctl restart containerd ' kubeN# crictl pull server.corpX.un:5000/student/gowebd crictl images crictl rmi server.corpX.un:5000/student/gowebd ===== Модуль 2: Развертывание приложений в кластере Kubernetes ===== * Стратегии развертывания и масштабирование нагрузки * [[Система Kubernetes#MetalLB]], [[Система Kubernetes#ingress-nginx]] * Использование баз данных ([[Сервис PostgreSQL#CloudNativePG]]) * Сервис Keycloak в [[Сервис Keycloak#Kubernetes]], [[Сервис Keycloak#Базовая конфигурация]], LDAP [[Сервис Keycloak#FreeIPA]] * Сервис Keycloak [[Сервис Keycloak#Аутентификация пользователей WEB приложения]], [[Технология Docker#Приложение apwebd]], [[Система Kubernetes#Deployment]], [[Система Kubernetes#Service]], [[Решение FreeIPA#Создание ключа и сертификата для стороннего сервиса]], [[Система Kubernetes#ingress example]] * Использование распределённых хранилищ ([[Система Kubernetes#longhorn]]) * ArgoCD и универсальный Helm Chart ===== Модуль 3: Безопасность в DevOps ===== * Инструменты для статического анализа кода * Анализ уязвимостей в контейнерах * Интеграция инструментов безопасности в CI/CD * Управление секретами и сертификатами * Управление доступом в Kubernetes * Интеграция с внешними системами идентификации * Использование IDS/IPS в Kubernetes ===== Модуль 4: Восстановление кластера после сбоев ===== * Мониторинг кластера Kubernetes * Резервное копирование и восстановление данных приложений * Восстановление управляющих и рабочих узлов * Восстановление etcd ===== Черновик ===== ==== DevSecOps ==== * [[DevSecOps]] * - Анализ кода и контейнеров на уязвимости * - Управление доступом в K8S * - Управление чувствительными данными в CI/CD (Hashicorp Vault, Mozilla Sops) * - Управление сертификатами (K8S cert-manager и FreeIPA) * Использование LDAP и OpenID для управления идентификацией (Keycloak и FreeIPA) * IDS/IPS (Suricata) ==== Промышленные решения ==== * ArgoCD и универсальный Helm Chart * Распределенные блочные хранилища в K8S (Longhorn) * Операторы K8S и СУБД (CloudNativePG) * Брокеры сообщения (Kafka или RabbitMQ) * Service Mesh (Istio)