Знакомство
Чикшова Екатерина
Системный инженер Рексофт
- В DevOps с 2018 года
- Начала свой путь в карьере с маленького стартапа, где была единственным системным инженером
- Стек:
Kubernetes, Docker, Helm, GitLab CI, Kafka, PostgreSQL, ClickHouse, Grafana, Python, Bash и т.д. - Люблю автоматизировать рутину и делиться знаниями

Короткий путь от базовых понятий Kubernetes до управления приложениями с помощью Helm
От разработки до продакшена

Проблема: "У меня на машине работает!"
- Разрыв сред: Разработка, тестирование, продакшен — везде разные окружения.
- Проблема: Несовместимость версий, зависимостей, библиотек.
- Результат: Непредсказуемость, долгое и болезненное развертывание.
- Решение: Контейнеризация (Docker)
- Приложение + зависимости упакованы в единый образ.
- Образ — переносимая и предсказуемая единица развертывания.
Когда контейнеров становится много
- Новая проблема: Микросервисная архитектура = десятки/сотни контейнеров.
- Вопросы к orchestration (оркестрации):
- Запуск и остановка?
- Сетевое взаимодействие?
- Маcштабирование под нагрузку?
- Восстановление после сбоев?
- Решение: Нужен автоматизированный контроль и управление жизненным циклом. Нужен Оркестратор.

Оркестраторы: Кто на рынке?
|
|
|
||
|
Docker Swarm
Просто, но уже не модно |
Apache Mesos
Мощно, но сложно (ниша) |
Nomad (HashiCorp)
Проще K8s, универсальный |
||
|
|
|||
|
Kubernetes (K8s)
Индустриальный стандарт. 'Голый' движок |
||||
|
||||
|
OpenShift (Red Hat)
Enterprise-платформа на базе K8s. 'Kubernetes с батарейками'. |
||||
Что такое Kubernetes?

Что такое Kubernetes?
- Определение: Open-source система для автоматизации развертывания, масштабирования и управления контейнеризированными приложениями.
- Происхождение: Google -> CNCF.
- Аналогия: "Операционная система для кластера".
- Выделяет ресурсы (CPU, RAM, Disk) под ваши приложения.
- Вы говорите ЧТО вам нужно (желаемое состояние), K8s решает КАК это выполнить.
Ключевые понятия K8s
Нажимайте на вкладки, чтобы узнать подробнее
Pod
- Pod — наименьшая и простейшая единица в K8s ("стручок").
- Это "обертка" для 1+ контейнеров.
- Контейнеры в Pod:
- Разделяют сеть (общий IP).
- Разделяют дисковое пространство (общие тома).
- Аналогия: Pod — это виртуальный "хост" для ваших контейнеров.
- Хрупкость: Pod сам по себе не восстанавливается.

Deployment и ReplicaSet
- Deployment = Стратег: Задает желаемое состояние приложения.
- Отвечает за обновления (rolling updates) и откаты (rollbacks).
- Создает и управляет ReplicaSet'ами.
- ReplicaSet = Исполнитель: Обеспечивает наличие заданного количества идентичных Pod'ов.
- Его задача — следить за репликами.
- Создает новые Pod'ы, если они падают или удаляются.
- Вместе: Deployment управляет ReplicaSet'ами, а ReplicaSet управляет Pod'ами.

Service
- Проблема: У Pod'ов нестабильные IP. Как к ним обращаться?
- Решение: Service — стабильная сетевая точка доступа.
- Дает:
- Постоянный IP-адрес.
- Постоянное DNS-имя (внутри кластера).
- Типы:
- ClusterIP (только внутри кластера).
- LoadBalancer (внешний IP для доступа из интернета).
- NodePort (открывает порт на каждой ноде).


Проблема: Управление множеством манифестов
- Простое приложение = 3+ YAML-манифеста.
- Реальное приложение = 10-20+ манифестов.
- Проблема: Развертывание в dev, stage, prod?
- Новая проблема: Хаос, копипаста, человеческий фактор, трудно поддерживать.
- Нужен способ: параметризации, шаблонизации и управления конфигурациями.
Helm - менеджер пакетов для K8s
Решение: Helm - менеджер пакетов для K8s
- Helm — это как apt / yum / brew для Kubernetes.
- Основные понятия:
- Chart: Пакет, содержащий шаблонизированные манифесты + настройки.
- Values (values.yaml): Настройки для шаблонов (версия образа, кол-во реплик).
- Release: Запущенный экземпляр chart'а в кластере.
- Плюсы:
- Упрощает развертывание сложных приложений (1 команда).
- Параметризация конфигурации для разных сред.
- Огромный публичный репозиторий готовых charts.


Наш Helm Chart и магия ReplicaSet
- Цель: Упаковать наши манифесты в переиспользуемый Chart.
- Как: Превращаем статические значения в переменные (шаблонизируем).
- replicas: 1 -> replicas: {{ .Values.replicaCount }}
- image: nginx -> image: {{ .Values.image.repository }}:{{ .Values.image.tag }}
- Values.yaml — единый файл конфигурации:
replicaCount: 2 image: repository: nginx tag: alpine
- Результат: Одна команда helm install создает весь стек (Deployment -> ReplicaSet -> Pods, Service).
- Вау-эффект: helm upgrade с новым image.tag заставляет Deployment создать новый ReplicaSet для новой версии и выполнить плавное обновление!
Итоги и Что дальше?
- Коротко изучили: Зачем нужны K8s и Helm.
- Узнали основные сущности: Pod, Deployment, ReplicaSet, Service.
- Увидели вживую: Как это все создается и работает
- Что изучать дальше?
- ConfigMaps и Secrets (для конфигурации)
- Volumes (для хранения данных)
- Ingress (для продвинутой маршрутизации трафика)
- Namespaces (для изоляции проектов)
- Мониторинг (Prometheus, Grafana)
- Ресурсы: Официальная документация Kubernetes
kubernetes.io
DevOps RoadMap

Дополнительные материалы
Для закрепления материала, разобранного на вебинаре, выкладываем архив со всеми артефактами по практическим кейсам. Скачать его можно по ссылке: Kubernetes_Webinar.zip.

