Инфраструктурная платформа. Основные сущности и функционал Kubernetes
Первый модуль курса знакомит с понятием инфраструктурной платформы, историей их появления, развития и основными видами платформ на сегодняшний день.
В рамках модуля рассмотрим архитектуру Kubernetes, его базовые сущности и функционал. Научимся разворачивать приложения в кластере, настраивать взаимодействие между ними и доступ к ним извне кластера.
Познакомимся с способами персистентного хранения информации в k8s, а также с базовыми механизмами управления безопасностью, доступами и правами.
Инфраструктурная платформа для разработки и эксплуатации цифровых продуктов
определить концепцию инфраструктурной платформы;
сформулировать необходимость построения платформы;
определить состав сервисов, входящих в инфраструктурную платформу;
оценить свою компанию, на соответствие современному состоянию индустрии.
Знакомство с Kubernetes, основные понятия и архитектура // ДЗ
познакомиться с архитектурой кластера kubernetes, инструментами для взаимодействия и управления кластером;
получить представление о базовых сущностях k8s и научиться их запускать/создавать/конфигурировать.
ДЗ
Знакомство с решениями для запуска локального Kubernetes кластера, создание первого pod.
Все действия описаны в методическом указании.
P.S. Промокоды для Яндекс Облака запрашиваются у КМ. Количество промокодов ограничено, не забывайте отключать ВМ, когда она не используется.
Управление жизненным циклом и взаимодействием pod в Kubernetes // ДЗ
понимать жизненный цикл pod, механику взаимодействия контейнеров внутри него;
получить понимание о ресурсах k8s, управляющих pod и их группах, научиться использовать их базовый функционал;
понимать предназначение проб и уметь их настраивать.
ДЗ
Kubernetes controllers. ReplicaSet, Deployment, DaemonSet.
Все действия описаны в методическом указании.
Сетевая подсистема и сущности Kubernetes // ДЗ
понимать работу сетевых функций kubernetes - kube-proxy, dns;
познакомиться с объектами k8s, служащимми для организации взаимодействия между приложениями внутри кластер и доступа снаружи;
научиться использовать базовый функционал объектов Service, Ingress.
ДЗ
Сетевое взаимодействие Pod, сервисы.
Все действия описаны в методическом указании.
Хранение данных в Kubernetes: Volumes, Storages, Statefull-приложения // ДЗ
понимать когда и зачем требуется персистентное хранение в kubernetes;
познакомиться с основными типами Volume и StorageClass в k8s;
научиться конфигурировать PV и PVC;
получить понимание специфики statefull приложений и особенности реализации в k8s.
ДЗ
Volume, PV и PVC. Жизненный цикл PV.
Все действия описаны в методическом указании.
Основы безопасности в Kubernetes // ДЗ
понимать основы управления доступом к кластеру Kubernetes;
познакомиться с разграничением доступа к ресурсам внутри кластера;
понимать специфику хранения чувствительной информации в кластере и вне его;
знать механизмы обеспечения безопасного взаимодействия между приложениями в кластере;
разобрать такие сущности, как: PodSecurityPolicy, PodDisruptionBudget, PodSecurityAdmission, LimitRange, ResourceQuota.
ДЗ
Настройка сервисных аккаунтов и ограничение прав для них.
Все действия описаны в методическом указании.
Экосистема Kubernetes
В этом модуле мы познакомимся с инструментами, утилитами и сервисами, которые сделают вашу жизнь с Kubernetes проще, позволят использовать современные инженерные практики и будут незаменимо полезны как команде, которая занимается администрированием и развитием Kubernetes кластера, так и продуктовым командам, которые используют Kubernetes для запуска своих систем.
Мы рассмотрим, как собирать метрики мониторинга и логи с самого кластера и приложений, работающих поверх него, как предоставить приложениям надежное хранилище для секретных данных и многое другое.
После этого модуля вы будете владеть такими инструментами как helm и kustomize, ksonnet, легко интегрировать Prometheus+Grafana, Elastic stack и Vault как для нужд кластера, так и приложений в нем.
Мы еще раз вернемся к Registry и хранилищам артефактов, ведь в этом модуле нам предстоит познакомится с подписями образов и использованием Notary
Домашние задания в этом модуле нацелены на изучение инструментов и утилит, используемых сообществом Kubernetes, а также на построение экосистемы, необходимой для поддержания процессов поставки цифровых продуктов.
Мы развернем и настроим для нашего кластера систему мониторинга, систему сбора логов, систему управления секретами и подписи образов, хранилище артефактов и прочие системы, входящие в состав платформы.
Управление приложениями в k8s. Пакетный менеджер Helm // ДЗ
понимать жизненный цикл приложений в k8s;
научиться устанавливать и использовать community Helm charts;
уметь создавать собственные Helm chart и устанавливать их в кластер;
знать какие альтернативные решения есть для установки приложений в кластер и управления их жизненным циклом.
ДЗ
Шаблонизация манифестов приложения, использование Helm, kustomize, helmfile, jsonnet. Установка community Helm charts.
Все действия описаны в методическом указании.
Custom Resource Definitions. Operators // ДЗ
отличать операторы и контроллеры;
писать контроллеры даже на bash и хорошо понимать логику их работы;
создавать операторы для помощи в рутинных задачах эксплуатации кластеров.
ДЗ
Описание собственного CRD, использование open-source операторов.
Все действия описаны в методическом указании.
Мониторинг компонентов кластера и приложений, работающих в нем // ДЗ
понять, как устроен мониторинг кластера, его компоненты и приложения в кластере.
ДЗ
Мониторинг приложения в кластере.
Все действия описаны в методическом указании.
Сервисы централизованного логирования для компонентов Kubernetes и приложений // ДЗ
развёртывать стек ELK или EFK в кластере Kubernetes и процессить логи на лету с помощью Logstash или Ingest API.
ДЗ
Сервисы централизованного логирования для Kubernetes.
Все действия описаны в методическом указании.
Инфраструктура для Distributed Tracing: Jaeger и аналоги. Сквозное логирование
разобраться, для чего применяются системы распределенной трассировки, и чем они могут быть полезны.
Хранилища артефактов поставки, контроль безопасности артефактов
подобрать необходимые компоненты для формирования эффективного хранилища артефактов.
Chaos Engineering
применять практику Chaos Engineering для повышения надежности инфраструктурной платформы;
ориентироваться в инструментах, реализующих практику.
GitOps и инструменты поставки // ДЗ
приобрести понимание и практические навыки имплементации концепции GitOps к процессу поставки изменений кодовой базы.
ДЗ
ArgoCD, Flux, Flagger.
Все действия описаны в методическом указании.
Kubernetes для непрерывной поставки (CI/CD). Интеграция с CI-сервисом
строить CI/CD пайплайны для своей выгоды;
корректно дружить CI/CD пайплайны с kubernetes;
использовать один кластер для всех задач;
рассмотреть реализацию канареечного релиза, blue/green деплоймента и A/B тестирования с помощью Kubernetes.
Service mesh. Знакомство с Istio и Envoy
объяснить, что такое service mesh, познакомитесь с Istio.
Хранилище секретов для приложений. Vault // ДЗ
объяснить, как хранить чувствительные данные в рамках кластера, как утроен Hashicorp Vault, как приложения и кластер могут взаимодействовать с Hashicorp Vault.
ДЗ
Устанавливаем и настраиваем Vault для нужд платформенной команды и команд разработки.
Все действия описаны в методическом указании.
Kubernetes в деталях
Здесь нас ждет изучение сервисов, из которых состоит kubernetes: api-server, scheduler, kubelet, etcd. Мы рассмотрим каждый из них в отдельности с точки зрения использования и эксплуатации, разберемся в том, как эти сервисы развертывать, конфигурировать, обновлять и мониторить.
Знания о компонентах, из которых состоит кластер нам потребуются для проектирования и развертывания собственной инсталляции Kubernetes с учетом отказоустойчивости, безопасности, простоты использования и эксплуатации. Здесь же мы рассмотрим типы инсталляций Kubernetes, их сильные и слабые стороны (minikube, bare-metal, cloud, и т.д.).
Для этого нам предстоит изучить стандартные интерфейсы взаимодействия (CNI/CRI/CSI) и реализации, которые используют эти интерфейсы, например, мы расскажем про множество сетевых подсистем, которые могут быть использованы для организации взаимодействия между приложениями и их связи с внешним миром, для этого познакомимся с такими системами как kube-proxy, ipvs, flannel, calico, istio, envoy и многими другими, и определим, как из всего многообразия выбрать именно то, что больше всего подходит под задачу.
В этом же модуле мы расскажем про механизмы безопасности контейнеров и дополнительные механизмы безопасности, которые предоставляет сам Kubernetes.
И, конечно же, не обойдем вниманием Operators – функционал Kubernetes, который задает новую планку в подходе к автоматизации и управлению системами.
Домашние задания третьего модуля нацелены на подготовку отказоустойчивого и безопасного кластера Kubernetes, который при этом просто обновлять и использовать. Опыт, полученный при выполнении ДЗ этого модуля позволит вам самостоятельно развернуть и настроить кластер с использованием практики Инфраструктура как код, выбрать подсистемы, реализующие сетевую связность и хранение файлов, а также отлаживать сбои в работе подсистем кластера.
Компоненты Kubernetes: api-server, scheduler, kubelet, etcd
проанализировать архитектура Kubernetes;
проанализировать принципы взаимодействия управляющих компонент;
рассмотреть путь от применения манифеста до создания pod в кластере;
закрепить знания пройдя гайд "Kubernetes The Hard Way".
CRI. Обзор контейнерных runtime
сделать выбор в пользу того или иного контейнерного runtime;
интегрировать сборку OCI совместимых образов в CI/CD процесс;
рассмотреть процесс запуска контейнера с использованием runc.
CNI. Обзор существующих сетевых подсистем Kubernetes
разобраться в сетевой подсистеме kubernetes;
рассмотреть сетевые плагины;
разобраться как происходит взаимодействие CNI kubelet runtime.
CSI. Обзор подсистем хранения данных в Kubernetes // ДЗ
еще раз огнем и мечом пройтись по Volumes, их видам, уместности применения;
посмотреть чуть больше внутренностей реализации Storage на ноде;
посмотреть на реализацию PersistentVolumes и PersistentVolumeClaim;
разобраться с Dynamic Provisioning;
поговорить про CSI;
глянуть, как устанавливается CSI-драйвер;
посмотреть на реализацию снапшотов в CSI.
ДЗ
Развертывание системы хранения данных.
Все действия описаны в методическом указании.
Диагностика и отладка кластера и приложений в нем // ДЗ
разобраться, с чего стоит начать отладку кластера Kubernetes и приложений работающих в нем.
ДЗ
Проведение диагностики состояния кластера, знакомство с инструментами для диагностики.
Все действия описаны в методическом указании.
Варианты создания кластера Kubernetes: Hard way, kubespray, rancher и аналоги.
познакомиться с вариантами создания кластера kubernetes
Подходы к развертыванию и обновлению production-grade кластера // ДЗ
объяснить, как с минимальными простоями обновить работающий кластер.
ДЗ
Создание и обновление кластера при помощи kubeadm.
Все действия описаны в методическом указании.
Резервное копирование кластера Kubernetes с помощью Heptio Velero, Ротация сертификатов, Cert-manager
разобраться с резервным копированием кластера Kubernetes, и восстановлением из резервной копии;
рассмотреть ручную ротацию сертификатов через kubeadm и без;
установить и настроить Cert-manager, разобраться в возможностях Cert-Manager.
Проектная работа
Заключительный месяц курса посвящен проектной работе. Свой проект — это то, что интересно писать слушателю. То, что можно создать на основе знаний, полученных на курсе. При этом не обязательно закончить его за месяц. В процессе написания по проекту можно получить консультации преподавателей
Платформенная команда и продуктовые команды. Выбор темы и организация проектной работы
выбрать и обсудить тему проектной работы;
спланировать работу над проектом;
ознакомиться с регламентом работы над проектом.
ДЗ
Проектная работа.
Все требования описаны в методическом указании.
Защита проектных работ
защитить проект и получить рекомендации экспертов.