Инфраструктурная платформа. Основные сущности и функционал Kubernetes
Инфраструктурная платформа. Основные сущности и функционал Kubernetes
Первый модуль курса знакомит с понятием инфраструктурной платформы, историей их появления, развития и основными видами платформ на сегодняшний день. В рамках модуля рассмотрим архитектуру Kubernetes, его базовые сущности и функционал. Научимся разворачивать приложения в кластере, настраивать взаимодействие между ними и доступ к ним извне кластера. Познакомимся со способами персистентного хранения информации в k8s, а также с базовыми механизмами управления безопасностью, доступами и правами.
Инфраструктурная платформа для разработки и эксплуатации цифровых продуктов
определить концепцию инфраструктурной платформы;
сформулировать необходимость построения платформы;
определить состав сервисов, входящих в инфраструктурную платформу;
оценить свою компанию на соответствие современному состоянию индустрии.
Знакомство с Kubernetes, основные понятия и архитектура // ДЗ
познакомиться с архитектурой кластера Kubernetes, инструментами для взаимодействия и управления кластером;
получить представление о базовых сущностях k8s и научиться их запускать/создавать/конфигурировать.
ДЗ
Знакомство с решениями для запуска локального Kubernetes кластера, создание первого pod.
1. Сформировать локальное окружение;
2. Запустить локальную версию kubernetes при помощи Minikube;
3. Научиться использовать CLI утилиту kubectl для управления kubernetes.
4. Научиться создавать манифест и запускать простейший pod с полезной нагрузкой
Все действия описаны в методическом указании [по ссылке](https://docs.google.com/presentation/d/12EFC_psBQGcYUucWPa4qgazdd8a05OD7/edit?usp=sharing&ouid=115091978751816149816&rtpof=true&sd=true).
P.S. Промокоды для Яндекс Облака запрашиваются у комьюнити менеджера (далее — КМ). Количество промокодов ограничено, не забывайте отключать ВМ, когда она не используется.
Управление жизненным циклом и взаимодействием pod в Kubernetes // ДЗ
понимать жизненный цикл pod, механику взаимодействия контейнеров внутри него;
получить понимание о ресурсах k8s, управляющих pod и их группах, научиться использовать их базовый функционал;
понимать предназначение проб и уметь их настраивать.
ДЗ
Настройка Kubernetes controllers; ReplicaSet, Deployment, DaemonSet.
1. Научиться создавать и конфигурировать Replicaset, Deployment для своего приложения;
2. Научиться управлять обновлением своего приложения;
3. Научиться использовать механизм Probes для проверки работоспособности своих приложений.
Все действия описаны в методическом указании [по ссылке](https://docs.google.com/presentation/d/1an4J59A7oHwnSEOfuyZImJqfEwqO9gkF/edit?usp=sharing&ouid=115091978751816149816&rtpof=true&sd=true).
Сетевая подсистема и сущности Kubernetes // ДЗ
познакомиться с объектами k8s, служащими для организации взаимодействия между приложениями внутри кластера и доступа снаружи;
научиться использовать базовый функционал объектов Service, Ingress;
познакомиться с тем, как Service взаимодействует с kube-proxy и DNS.
ДЗ
Настройка сетевого взаимодействия Pod, сервисов.
1. Научиться создавать и конфигурировать объекты типа Service
2. Научиться использовать объекты типа Service для взаимодействия между приложениями в кластере
Все действия описаны в методическом указании [по ссылке](https://docs.google.com/presentation/d/1Yla1XCuPNbEgXrWWgs9tY6o_ntXqF1zz/edit?usp=sharing&ouid=115091978751816149816&rtpof=true&sd=true).
Хранение данных в Kubernetes: Volumes, Storages, Stateful-приложения // ДЗ
понимать, когда и зачем требуется персистентное хранение в Kubernetes;
познакомиться с основными типами Volume и StorageClass в k8s;
научиться конфигурировать PV и PVC;
получить понимание специфики stateful-приложений и особенностей реализации в k8s.
ДЗ
Настройка PV, PVC и конфигурации.
1. Научиться создавать в кластере объекты, описывающие персистентные хранилища и научиться подключать их к подам.
2. Научиться создавать объект ConfigMap и монтировать его как volume
3. Получить представление об объекте StorageClass и механизме provisioning для PV
Все действия описаны в методическом указании [по ссылке](https://docs.google.com/presentation/d/1vBmvfPya9EGpBlI3UZx_7HfGUfrJlg_0/edit?usp=sharing&ouid=115091978751816149816&rtpof=true&sd=true).
Основы безопасности в Kubernetes // ДЗ
понимать основы управления доступом к кластеру Kubernetes;
познакомиться с разграничением доступа к ресурсам внутри кластера;
понимать специфику хранения чувствительной информации в кластере и вне его;
знать механизмы обеспечения безопасного взаимодействия между приложениями в кластере;
разобрать такие сущности, как: PodSecurityPolicy, PodDisruptionBudget, PodSecurityAdmission, LimitRange, ResourceQuota.
ДЗ
Настройка сервисных аккаунтов и ограничение прав для них.
1. Получить представление о объекте ServiceAccount, его роли в ЖЦ подов.
2. Научиться настраивать bindins для ServiceAccount с различными правами, на уровне namespace так и на уровне всего кластера.
3. Понять механизм работы секретов, которые создаются для SA
Все действия описаны в методическом указании [по ссылке](https://docs.google.com/presentation/d/1WSX9Bhs2sWdVJjkKXKD9zt_PjitnD13D/edit?usp=sharing&ouid=115091978751816149816&rtpof=true&sd=true).
Экосистема Kubernetes
В этом модуле мы познакомимся с инструментами, утилитами и сервисами, расширяющими возможности Kubernetes и упрощающими работу с ним.
Мы рассмотримпрактики мониторинга, логирования и управления секретами, а также интеграция популярных решений.
После этого модуля вы будете владеть такими инструментами как Helm, Kustomize, Ksonnet и подходами к работе с Registry и артефактами.
В рамках практики будет развернута экосистема, включающая мониторинг, логирование, управление секретами и хранилище артефактов.
Управление приложениями в k8s. Пакетный менеджер Helm // ДЗ
понимать жизненный цикл приложений в k8s;
научиться устанавливать и использовать community Helm charts;
уметь создавать собственные Helm chart и устанавливать их в кластер;
знать, какие альтернативные решения есть для установки приложений в кластер и управления их жизненным циклом.
ДЗ
Шаблонизация и деплой Helm.
1. Научиться создавать собственные helm-chart и деплоить их в кластер k8s
2. Научиться устанавливать и конфигурировать community чарты из публичных репозиториев
3. Научиться использовать helmfile для описания релизов
Все действия описаны в методическом указании [по ссылке](https://docs.google.com/presentation/d/1EmTbVEmcwFmTVNRo3HzuKJZCPucvRdl2/edit?usp=sharing&ouid=115091978751816149816&rtpof=true&sd=true).
Custom Resource Definitions. Operators // ДЗ
отличать операторы и контроллеры;
писать контроллеры даже на bash и хорошо понимать логику их работы;
создавать операторы для помощи в рутинных задачах эксплуатации кластеров.
ДЗ
Создание CRD и оператора.
1. Научиться создавать и конфигурировать CR и CRD ресурсы.
2. Научиться создавать и устанавливать в кластер собственные Operators
Все действия описаны в методическом указании [по ссылке](https://docs.google.com/presentation/d/1QQyOwke7lo1NI0sJEJ6hUbciFjhBxP35/edit?usp=sharing&ouid=115091978751816149816&rtpof=true&sd=true).
Мониторинг компонентов кластера и приложений, работающих в нем // ДЗ
понять, как устроен мониторинг кластера, его компоненты и приложения в кластере.
ДЗ
Мониторинг приложения в кластере.
1. Установить в кластер и научиться пользоваться prometheus-operator
2. Научиться инструментировать ваше приложение и собирать с него метрики в Prometheus-формате
Все действия описаны в методическом указании [по ссылке](https://docs.google.com/presentation/d/1wIzvEzubae2Iy9sS187yaZ6_Va6UUluJ/edit?usp=sharing&ouid=115091978751816149816&rtpof=true&sd=true).
Сервисы централизованного логирования для компонентов Kubernetes и приложений // ДЗ
познакомиться с различными системами централизованного логирования.
реализовывать централизованное хранилище логов на PLG-стеке.
ДЗ
Настройка централизованного логирования.
1. Установить в кластер loki и научиться его конфигурировать
2. Научиться собирать логи с нод кластера с помощью promtail
3. Настроить подключение Grafana к loki
Все действия описаны в методическом указании [по ссылке](https://docs.google.com/presentation/d/1Vl2MzatvDmc0MxORm4VpFzs-ts2-eXAY/edit?usp=sharing&ouid=115091978751816149816&rtpof=true&sd=true).
Инфраструктура для Distributed Tracing: Jaeger и аналоги. Сквозное логирование
разобраться, для чего применяются системы распределенной трассировки и чем они могут быть полезны.
Хранилища артефактов поставки, контроль безопасности артефактов
подобрать необходимые компоненты для формирования эффективного хранилища артефактов.
Chaos Engineering
применять практику Chaos Engineering для повышения надежности инфраструктурной платформы;
ориентироваться в инструментах, реализующих практику.
GitOps и инструменты поставки // ДЗ
приобрести понимание и практические навыки имплементации концепции GitOps к процессу поставки изменений кодовой базы.
ДЗ
Настройка ArgoCD приложений.
1. Установить в кластер ArgoCD и научиться его конфигурировать
2. Создать приложение, описывающее установку манифестов из git-репозитория
3. Создать приложение, описывающее установку из Helm-чарта, хранящегося в Git-репозитории
Все действия описаны в методическом указании [по ссылке](https://docs.google.com/presentation/d/16aywZ4K36dxHWfzuqx6Nyz-raX4DbKEe/edit?usp=sharing&ouid=115091978751816149816&rtpof=true&sd=true).
Kubernetes для непрерывной поставки (CI/CD). Интеграция с CI-сервисом
строить CI/CD пайплайны для своей выгоды;
корректно интегрировать CI/CD пайплайны с Kubernetes;
использовать один кластер для всех задач;
рассмотреть реализацию канареечного релиза, blue/green деплоя и A/B тестирования с помощью Kubernetes.
Service mesh. Знакомство с Istio и Envoy
изучить, что такое service mesh;
познакомиться с Istio.
Istio
познакомиться с лучшими практиками работы с Istio и service mesh.
Хранилище секретов для приложений. Vault // ДЗ
знать, как хранить чувствительные данные в рамках кластера;
знать, как устроен HashiCorp Vault, как приложения и кластер могут взаимодействовать с HashiCorp Vault.
ДЗ
Настройка Vault и секретов.
1. Установить в кластер hashicorp vault в HA режиме и научиться его конфигурировать.
2. Понять как работает хранилище секретов, как создавать секреты в нем, роли и политики доступа
3. Установить External Secret Operator и настроить его для получения секретов, хранящихся в vault
Все действия описаны в методическом указании [по ссылке](https://docs.google.com/presentation/d/1DQxTSeO28a_4N6LpxjDawZkJWYOjSEWi/edit?usp=sharing&ouid=115091978751816149816&rtpof=true&sd=true).
Проектирование Internal Developer Platform
проектировать Internal Developer Platform для стандартизации разработки и снижения операционной нагрузки.
Kubernetes в деталях
В этом модуле изучим ключевые компоненты Kubernetes и их роль в работе кластера, подходы к установке, конфигурации, обновлению и мониторингу, а также типы инсталляций и их особенности. Познакомимся с сетевыми подсистемами, интерфейсами взаимодействия и механизмами безопасности.
Практическая часть направлена на развёртывание отказоустойчивого и безопасного кластера с использованием подхода «инфраструктура как код».
Компоненты Kubernetes: api-server, scheduler, kubelet, etcd
проанализировать архитектуру Kubernetes;
проанализировать принципы взаимодействия управляющих компонентов;
рассмотреть путь от применения манифеста до создания pod в кластере.
CRI. Обзор контейнерных runtime
сделать выбор в пользу того или иного контейнерного runtime;
интегрировать сборку OCI совместимых образов в CI/CD процесс;
рассмотреть процесс запуска контейнера с использованием runc.
CNI. Обзор существующих сетевых подсистем Kubernetes
разобраться в сетевой подсистеме Kubernetes;
рассмотреть сетевые плагины;
разобраться как происходит взаимодействие CNI kubelet runtime.
CSI. Обзор подсистем хранения данных в Kubernetes // ДЗ
повторить Volumes, их виды, уместность применения;
углубиться в реализацию Storage на ноде;
посмотреть на реализацию PersistentVolumes и PersistentVolumeClaim;
разобраться с Dynamic Provisioning;
поговорить про CSI;
посмотреть, как устанавливается CSI-драйвер;
посмотреть на реализацию снапшотов в CSI.
ДЗ
Развертывание системы хранения данных.
1. Установить и сконфигурировать CSI driver для Yandex Object Storage
2. Запускать и использовать полезную нагрузку, использующую для хранения бакеты в Yandex Object Storage
Все действия описаны в методическом указании [по ссылке](https://docs.google.com/presentation/d/1AvX3yWHEtdTp1mOhrIza7wXUZ963n0eD/edit?usp=sharing&ouid=115091978751816149816&rtpof=true&sd=true).
eBPF-наблюдаемость Kubernetes
изучить eBPF-инструменты Cilium, Hubble и Pixie для диагностики сетевых и runtime-проблем в кластере Kubernetes.
Диагностика и отладка кластера и приложений в нем // ДЗ
разобраться, с чего стоит начать отладку кластера Kubernetes и приложений работающих в нем.
ДЗ
Диагностика и отладка кластера Kubernetes.
Научиться отлаживать контейнеры и ноды Kubernetes с помощью эфемерных контейнеров и kubectl debug
Все действия описаны в методическом указании [по ссылке](https://docs.google.com/presentation/d/19HoaYyIcq_QBgyePqXAIvkmw9hqIkfOi/edit?usp=sharing&ouid=115091978751816149816&rtpof=true&sd=true).
Варианты создания кластера Kubernetes: Hard way, kubespray, rancher и аналоги.
познакомиться с вариантами создания кластера kubernetes
Подходы к развертыванию и обновлению production-grade кластера // ДЗ
объяснить, как с минимальными простоями обновить работающий кластер.
ДЗ
Создание и обновление кластера при помощи kubeadm.
1. Создать кластер с использованием kubeadm
2. Понять как обновить кластер до нужной версии kubernetes с использованием kubeadm
3. Создать кластер с использованием kubespray
Все действия описаны в методическом указании [по ссылке](https://docs.google.com/presentation/d/1smdNbJyaUR6zCObYpH7sGM15n32eK-jP/edit?usp=sharing&ouid=115091978751816149816&rtpof=true&sd=true).
Резервное копирование кластера Kubernetes с помощью Heptio Velero, Ротация сертификатов, Cert-manager
разобраться с резервным копированием кластера Kubernetes, и восстановлением из резервной копии;
рассмотреть ручную ротацию сертификатов через kubeadm и без;
установить и настроить Cert-manager, разобраться в возможностях Cert-manager.
Проектная работа
Заключительный месяц курса посвящен проектной работе. Проект – это самая интересная часть обучения. Вы будете разрабатывать его на основе полученных на курсе навыков и компетенций. В процессе работы над проектом можно получить консультацию преподавателей.
Платформенная команда и продуктовые команды. Выбор темы и организация проектной работы
выбрать и обсудить тему проектной работы;
спланировать работу над проектом;
ознакомиться с регламентом работы над проектом.
ДЗ
Проектная работа.
Все требования описаны в методическом указании.
Защита проектных работ
защитить проект и получить рекомендации экспертов.