Съдържание и теми, включени в курса
Ден 1 – Контейнери и управление на образи
Въведение в контейнерните платформи
- Традиционно внедряване на приложения в сравнение с внедряване, базирано на контейнери
- Контейнери и виртуални машини
- Среди за изпълнение на контейнери и контейнерни двигатели
- Ролята на Docker, Kubernetes и OpenShift
- Често срещани архитектури на контейнерни платформи
- Работни потоци за разработка, тестване и продукция
Работа с контейнери
- Стартиране и управление на контейнери
- Жизнен цикъл на контейнера
- Стартиране, спиране и премахване на контейнери
- Изпълнение на команди вътре в контейнери
- Променливи на средата
- Пренасочване на портове
- Контейнерни логове
- Използване на ресурси и инспекция на процеси
Изграждане на контейнерни образи
- Структура на образа и слоеве
- Създаване на Dockerfiles и Containerfiles
- Избор на базови образи
- Добавяне на зависимости на приложението
- Конфигуриране на входни точки и команди
- Кеширане на образи
- Намаляване на размера на образа
- Изграждане на възпроизводими образи
Контейнерни регистри
- Публични и частни регистри
- Тагване и версиониране на образи
- Качване и изтегляне на образи
- Удостоверяване за достъп до образи
- Запазване и почистване на образи
- Основни съображения за сигурност на образите
Мрежова свързаност и хранилище на контейнери
- Концепции за контейнерна мрежа
- Мостова мрежа (Bridge networking)
- Експониране на портове
- Комуникация между контейнери
- Bind mounts и томове
- Персистентни данни на контейнера
- Съображения за архивиране
Практически упражнения
- Стартиране и инспекция на контейнери
- Изграждане на образ на приложение
- Конфигуриране на портове и променливи на средата
- Публикуване на образ в регистър
- Съхраняване на персистентни данни извън контейнер
Ден 2 – Архитектура на Kubernetes и работни натоварвания
Основи на Kubernetes
- Целта на оркестрацията на контейнери
- Архитектура на Kubernetes
- Компоненти на управляващата равнина (Control plane)
- Работни възли (Worker nodes)
- API сървър
- Планировчик (Scheduler)
- Контролери (Controllers)
- Състояние на клъстера и желано състояние
- Комуникация с клъстера чрез kubectl
Kubernetes ресурси
- Pod-ове
- ReplicaSets
- Deployments
- Именни пространства (Namespaces)
- Етикети и анотации
- Селектори
- Декларативни дефиниции на ресурси
- YAML манифести
Внедряване на приложения
- Създаване и управление на Deployments
- Мащабиране на работни натоварвания
- Актуализиране на контейнерни образи
- Плавни актуализации (Rolling updates)
- Връщане към предишна версия (Rollbacks)
- Хронология на внедряванията
- Рестартиране на работни натоварвания
- Управление на реплики на приложението
Конфигурация на приложението
- ConfigMaps
- Secrets
- Променливи на средата
- Конфигурационни файлове
- Разделяне на кода на приложението от конфигурацията
- Управление на настройки, специфични за средата
Управление на ресурси
- Заявки за CPU и памет
- Лимити на CPU и памет
- Квоти за ресурси
- Диапазони на лимити
- Последици за планирането
- Диагностициране на грешки, свързани с ресурси
Практически упражнения
- Внедряване на контейнеризирано приложение
- Създаване и актуализиране на Kubernetes манифести
- Мащабиране на приложение
- Извършване на плавна актуализация и връщане към предишна версия
- Конфигуриране на приложението чрез ConfigMaps и Secrets
- Прилагане на заявки и лимити за ресурси
Ден 3 – Kubernetes мрежова свързаност, хранилище и сигурност
Мрежова свързаност в Kubernetes
- Модел на клъстерна мрежа
- Комуникация между pod-ове
- Откриване на услуги (Service discovery)
- DNS в клъстера
- ClusterIP услуги
- NodePort услуги
- LoadBalancer услуги
- Концепции за Ingress
- Модели за експониране на приложения
Мрежови политики
- Контролиране на трафика между работни натоварвания
- Правила за входящ и изходящ трафик
- Контрол на трафика, базиран на именни пространства
- Тестване на мрежова свързаност
- Отстраняване на проблеми с комуникацията на услугите
Персистентно хранилище
- Ефимерно и персистентно хранилище
- Томове (Volumes)
- PersistentVolumes
- PersistentVolumeClaims
- StorageClasses
- Динамично осигуряване
- Режими на достъп
- Политики за възстановяване
- Хранилище за приложения, запазващи състояние
Контрол на достъпа в Kubernetes
- Концепции за удостоверяване и оторизация
- Контрол на достъпа, базиран на роли (RBAC)
- Roles и ClusterRoles
- RoleBindings и ClusterRoleBindings
- Сервизни акаунти
- Достъп с минимални привилегии
- Инспекция на ефективните права
Сигурност на работните натоварвания
- Контексти за сигурност
- Стартиране на контейнери като non-root потребител
- Linux възможности (Capabilities)
- Файлови системи само за четене
- Работа с Secrets
- Произход на образите
- Често срещани рискове в конфигурацията
Практически упражнения
- Експониране на приложение чрез Kubernetes услуги
- Конфигуриране на ingress
- Ограничаване на трафика чрез мрежова политика
- Осигуряване на персистентно хранилище
- Конфигуриране на RBAC права
- Стартиране на работно натоварване с подходящ контекст за сигурност
Ден 4 – Работа с OpenShift среди
Въведение в OpenShift
- OpenShift като платформа за приложения, базирана на Kubernetes
- Kubernetes ресурси в OpenShift среда
- Архитектура на OpenShift клъстер
- Проекти и именни пространства
- Платформени потребители и сервизни акаунти
- Работа с уеб конзолата
- Работа с OpenShift CLI
Управление на проекти и достъп
- Създаване и управление на проекти
- Присвояване на потребителски права
- Роли на ниво проект
- Административен достъп
- Квоти за ресурси
- Диапазони на лимити
- Сервизни акаунти
- Преглед на ресурсите на проекта
Внедряване на приложения
- Внедряване на контейнерни образи
- Създаване на работни натоварвания на приложения
- Управление на Deployments
- Мащабиране на приложения
- Актуализиране на версиите на приложенията
- Връщане към предишна версия (Rollbacks)
- Управление на конфигурацията на приложението
- Работа със Secrets
Експониране на приложения
- Услуги в OpenShift
- Маршрути (Routes)
- TLS концепции
- Вътрешен и външен достъп до приложения
- Имена на хостове и сертификати
- Диагностициране на проблеми с маршрути и услуги
Хранилище в OpenShift
- Persistent Volume Claims
- StorageClasses
- Свързване на хранилище към работни натоварвания
- Работни натоварвания, запазващи състояние
- Права за достъп до хранилище
- Отстраняване на проблеми с монтирането на томове
Планиране и управление на възли
- Етикети и селектори
- Селектори на възли (Node selectors)
- Taints и tolerations
- Концепции за афинитет и анти-афинитет
- Разполагане на работни натоварвания
- Изолиране (Cordoning) и източване (Draining) на възли
- Съображения за поддръжка на възли
Практически упражнения
- Достъп до OpenShift среда
- Създаване и конфигуриране на проект
- Внедряване и експониране на приложение
- Конфигуриране на достъп за потребители и сервизни акаунти
- Свързване на персистентно хранилище
- Мащабиране и актуализиране на работещо натоварване
Ден 5 – Операции, наблюдение и отстраняване на проблеми
Наблюдение на платформата
- Наблюдение на здравето на клъстера и приложенията
- Метрики на ресурсите
- Здраве на възлите
- Състояние на работните натоварвания
- Капацитет и използване на ресурси
- Идентифициране на ограничения в производителността
Логове и събития
- Контейнерни логове
- Логове на pod-ове
- Предишни контейнерни логове
- Kubernetes събития
- Съобщения от приложения и платформа
- Филтриране и интерпретиране на оперативни данни
Проверки на здравето
- Сонди за стартиране (Startup probes)
- Сонди за готовност (Readiness probes)
- Сонди за жизнеспособност (Liveness probes)
- Проектиране на полезни здравни крайни точки
- Диагностициране на неуспешни сонди
- Предотвратяване на ненужни рестарти на приложения
Отстраняване на проблеми с работни натоварвания
- Чакащи pod-ове
- Неуспешно изтегляне на образ (Image pull failures)
- Цикли на срив (Crash loops)
- Неправилно конфигурирани променливи на средата
- Неуспешни монтирания
- Недостатъчни ресурси
- Грешки в правата за достъп
- Проблеми със свързаността на услуги и маршрути
- DNS проблеми
- Неуспешно стартиране на приложения
Оперативна сигурност
- Преглед на правата за достъп
- Използване на сервизни акаунти
- Сигурно боравене с удостоверения
- Практики за сигурност на образите
- Мрежова изолация
- Одит на достъпа до платформата
- Прилагане на принципа на минималните привилегии
Поддръжка и управление на жизнения цикъл
- Рутинни проверки на платформата
- Поддръжка на възли
- Съображения за архивиране на приложения
- Архивиране на конфигурация
- Планиране на актуализации
- Управление на промените
- Тестване на актуализации
- Планиране на връщане към предишна версия
- Концепции за възстановяване при бедствия
Финален практически семинар
Участниците изпълняват цялостен оперативен сценарий:
- Изграждане и тагване на контейнерен образ.
- Публикуване на образа в регистър.
- Внедряване на приложението в Kubernetes или OpenShift.
- Конфигуриране на настройки и удостоверения на приложението.
- Експониране на приложението.
- Свързване на персистентно хранилище.
- Конфигуриране на права за достъп.
- Добавяне на проверки за здравето.
- Мащабиране и актуализиране на приложението.
- Диагностициране и отстраняване на въведена неизправност.
Формат на курса
- Интерактивни лекции и технически дискусии.
- Демонстрации от инструктора.
- Обширни практически упражнения.
- Семинари за администриране и отстраняване на проблеми, базирани на сценарии.
- Практическа работа в среди с контейнери, Kubernetes и OpenShift.
Опции за персонализиране на курса
- Курсът може да бъде адаптиран към съществуващата инфраструктура, облачен доставчик и контейнерни инструменти на участниците.
- Балансът между темите за Docker, Kubernetes и OpenShift може да бъде коригиран според опита на екипа.
- Практическите упражнения могат да бъдат съобразени с приложенията, процесите на внедряване и оперативните изисквания на организацията.
Бележка за търговски марки
OpenShift е търговска марка на Red Hat, Inc. Това независимо разработено обучение не е свързано с, одобрено от или упълномощено от Red Hat.
Изисквания
Участниците трябва да имат:
- Опит в използването на командния ред на Linux.
- Основни познания по системно администриране или DevOps.
- Общо разбиране на мрежовите концепции.
- Запознатост с процесите по внедряване на софтуер.
Предишен опит с Docker, Kubernetes или OpenShift е от полза, но не е задължителен.
Отзиви от участници (7)
Реда обясни и значително улесни разбирането
Eric Van Wyk
Курс - Docker, Kubernetes and OpenShift 3 for Administrators
Машинен превод
Лабораториите бяха най-добрите. Толкова практични и предоставят практически опит. Лично мисля, че това е най-ефективното средство за истинско разбиране на курса и приложение на изучените концепции.
Hishaam Johnstone
Курс - Docker, Kubernetes and OpenShift 3 for Administrators
Машинен превод
Обичах желанието да помага и обяснява по-подробно, когато беше несигурно
Letlotlo Miffi
Курс - Docker, Kubernetes and OpenShift 3 for Administrators
Машинен превод
Адриано изучи темата много дълбоко, което е стилът, който най-вече предпочитам: по-малко за командите и повече за механизма зад тях. Обсъjudените сценарии бяха добре обосновани с практически примери, които помагаха много за разбирането на представеното материал.
Mariusz BANASZCZYK - Sopra Steria
Курс - Docker, Kubernetes and OpenShift for Administrators
Машинен превод
Дълбока знания за Адриано. Обяснение на основните концепции
Tomasz Szalankiewicz - LPP SA
Курс - Docker, Kubernetes and OpenShift for Administrators
Машинен превод
Общо взето ми хареса предавачът.
Josif Kovacevic - ANZ
Курс - Docker, Kubernetes and OpenShift for Administrators
Машинен превод
Adrian clearly knows and enjoys this technology.
Tom Edginton - National Oceanography Centre
Курс - Docker, Kubernetes and OpenShift for Administrators
Машинен превод