This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
devops2._использование_kubernetes [2025/03/20 07:02] val [4.3 Работа с хранилищами в Kubernetes и восстановление после аварии] |
devops2._использование_kubernetes [2025/06/02 14:45] (current) val [3.3 Развертывание нужной версии приложения в kubernetes] |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== DevOps2. Использование Kubernetes ====== | ====== DevOps2. Использование Kubernetes ====== | ||
- | ===== При вводе в эксплуатацию учесть ===== | ||
- | * 4GB на узел для лонгхорн и кейклоак | + | |
- | * 12-й дебиан | + | |
- | * Нужен работающий k8s для демонстрации, в ожидании Kubespray | + | ===== Программа курса ===== |
+ | |||
+ | * [[https://www.specialist.ru/course/devops2|DevOps. Уровень 2. Использование Kubernetes]] | ||
===== Модуль 0. Подготовка к занятию ===== | ===== Модуль 0. Подготовка к занятию ===== | ||
Line 155: | Line 156: | ||
* Используем на kube1 [[Система Kubernetes#Инструмент командной строки kubectl]] | * Используем на kube1 [[Система Kubernetes#Инструмент командной строки kubectl]] | ||
+ | ===== Практикум ===== | ||
+ | |||
+ | * [[https://val.bmstu.ru/~val/pract/dev2/dev2_mod1_pract.mp4|Запись практикума]] (длительность: 53 минуты) | ||
===== Модуль 2. Объекты kubernetes, helm ===== | ===== Модуль 2. Объекты kubernetes, helm ===== | ||
Line 195: | Line 199: | ||
* [[Система Kubernetes#hostPath и nodeSelector]] (lifecycle и initContainers снова пригодятся на следующем шаге) | * [[Система Kubernetes#hostPath и nodeSelector]] (lifecycle и initContainers снова пригодятся на следующем шаге) | ||
* [[Система Kubernetes#Установка Helm]] на kube1 (**делаем все**) | * [[Система Kubernetes#Установка Helm]] на kube1 (**делаем все**) | ||
- | * [[Система Kubernetes#PersistentVolume и PersistentVolumeVolumeClaim]] (убрать nodeSelector) | + | * [[Система Kubernetes#PersistentVolume и PersistentVolumeClaim]] (убрать nodeSelector) |
+ | |||
+ | * Можно показать [[Система Kubernetes#rancher local-path-provisioner]] | ||
Line 254: | Line 260: | ||
* Удаляем [[Система Kubernetes#LoadBalancer]] | * Удаляем [[Система Kubernetes#LoadBalancer]] | ||
+ | ===== Практикум ===== | ||
+ | * [[https://val.bmstu.ru/~val/pract/dev2/dev2_mod2_pract.mp4|Запись практикума]] (длительность: 12 минут) | ||
===== Модуль 3. Создание CI/CD в kubernetes ===== | ===== Модуль 3. Создание CI/CD в kubernetes ===== | ||
Line 260: | Line 268: | ||
==== 3.1 Запуск gitlab-runner в kubernetes ==== | ==== 3.1 Запуск gitlab-runner в kubernetes ==== | ||
+ | * [[Система Kubernetes#Установка Helm]] | ||
* Сделать общий [[Система Kubernetes#gitlab-runner kubernetes]] с тегом "build" | * Сделать общий [[Система Kubernetes#gitlab-runner kubernetes]] с тегом "build" | ||
Line 270: | Line 279: | ||
* В GitLab добавляем тег ver1.1 и проверяем наличие образов | * В GitLab добавляем тег ver1.1 и проверяем наличие образов | ||
- | ==== 3.3 Разворачивание нужной версии приложения в kubernetes ==== | + | ==== 3.3 Развертывание нужной версии приложения в kubernetes ==== |
<code> | <code> | ||
- | kube1:~# mkdir gowebd-k8s;cd $_ | + | kube1:~# mkdir -p gowebd-k8s;cd $_ |
</code> | </code> | ||
* [[Система Kubernetes#Deployment]] ver1.1 | * [[Система Kubernetes#Deployment]] ver1.1 | ||
Line 299: | Line 308: | ||
* Настраиваем [[Система Kubernetes#Подключение к кластеру]] для пользователя gitlab-runner на server | * Настраиваем [[Система Kubernetes#Подключение к кластеру]] для пользователя gitlab-runner на server | ||
+ | * Преподаватель демонстрирует | ||
* Настраиваем stage deploy через envsubst используя [[Инструмент GitLab#Пример shell Kubernetes]] | * Настраиваем stage deploy через envsubst используя [[Инструмент GitLab#Пример shell Kubernetes]] | ||
- | * Создаем проект gowebd-k8s (Public, без Readme) | + | * Создаем проект gowebd-k8s (без Readme) |
* Деплоим нужную версию в ручную (New Pipeeline MY_WEBD_VER=ver1.1) | * Деплоим нужную версию в ручную (New Pipeeline MY_WEBD_VER=ver1.1) | ||
- | + | * Преподаватель удаляет проект gowebd-k8s | |
- | * Через WebIDE | + | |
- | * Настраиваем зависимость между проектами gowebd и gowebd-k8s через stage deploy в [[Инструмент GitLab#Пример CI с использованием контейнеров]] | + | |
- | * Увеличиваем версию, добавляем соответствующий тег, проверяем версию приложения в k8s | + | |
- | + | ||
- | * Обсуждаем [[Система Kubernetes#Версии deployment]], недостатки Gitlab CD и варианты, например Argo CD | + | |
* [[Система Kubernetes#Удаление объектов]] (весь namespace) | * [[Система Kubernetes#Удаление объектов]] (весь namespace) | ||
- | * [[Система Kubernetes#Установка Helm]] (если еще не установлен) на kube1 | ||
* [[Система Kubernetes#Развертывание своего приложения]] (webd-chart с образом gowebd) | * [[Система Kubernetes#Развертывание своего приложения]] (webd-chart с образом gowebd) | ||
Line 329: | Line 333: | ||
gitlab-runner@server:~$ helm list -n my-ns | gitlab-runner@server:~$ helm list -n my-ns | ||
</code> | </code> | ||
- | * Исправляем [[Инструмент GitLab#Пример shell Kubernetes]] с использованим helm и push-им все в репозиторий gowebd-k8s | + | |
- | * В проекте gowebd увеличиваем версию, добавляем соответствующий тег, проверяем версию приложения в k8s | + | * Настраиваем stage deploy с helm используя [[Инструмент GitLab#Пример shell Kubernetes]] |
+ | * Создаем проект gowebd-k8s (Public, без Readme) | ||
+ | |||
+ | * Через WebIDE | ||
+ | * Настраиваем зависимость между проектами gowebd и gowebd-k8s через stage deploy в [[Инструмент GitLab#Пример CI с использованием контейнеров]] | ||
+ | * Увеличиваем версию, добавляем соответствующий тег, проверяем версию приложения в k8s | ||
+ | |||
+ | * Ожидая процесс сборки, обсуждаем [[Система Kubernetes#Версии deployment]], недостатки Gitlab CD и варианты, например Argo CD | ||
* [[Система Kubernetes#Работа со своим репозиторием]] для размещения helm пакета (будет использоваться в дополнительном материале) | * [[Система Kubernetes#Работа со своим репозиторием]] для размещения helm пакета (будет использоваться в дополнительном материале) | ||
+ | |||
+ | ===== Практикум ===== | ||
+ | |||
+ | * [[https://val.bmstu.ru/~val/pract/dev2/dev2_mod3_pract.mp4|Запись практикума]] (длительность: 52 минуты) | ||
===== Модуль 4. Дополнительные материалы ===== | ===== Модуль 4. Дополнительные материалы ===== | ||
Line 358: | Line 373: | ||
==== 4.3 Работа с хранилищами в Kubernetes и восстановление после аварии ==== | ==== 4.3 Работа с хранилищами в Kubernetes и восстановление после аварии ==== | ||
- | * “Хором” в классе можно выполнить шаги 4, 2, 3 | + | * “Хором” в классе можно выполнить [[Система Kubernetes#Добавление узла через Kubespray]] и, параллельно, шаги 4, 5, 3, можно, добавить мониторинг (VictoriaMetrics Cluster), перед аварией узла |
* Видео [[Работа с хранилищами в Kubernetes]] (выполняем работы с 00:04:00 до конца) | * Видео [[Работа с хранилищами в Kubernetes]] (выполняем работы с 00:04:00 до конца) | ||
==== 4.4 Продолжение восстановления после аварии и Обновление кластера Kubernetes ==== | ==== 4.4 Продолжение восстановления после аварии и Обновление кластера Kubernetes ==== | ||
+ | |||
+ | “Хором” в классе можно выполнить шаг 4 | ||
* Видео [[Обновление кластера Kubernetes]] | * Видео [[Обновление кластера Kubernetes]] | ||
Line 372: | Line 389: | ||
* с 00:54:50 до 01:03:33 (обновляем кластер) | * с 00:54:50 до 01:03:33 (обновляем кластер) | ||
+ | ==== 4.5 Мониторинг кластера Kubernetes ==== | ||
+ | |||
+ | * Видео [[Мониторинг кластера Kubernetes]] (выполняем работы с 00:04:50 до конца) | ||
+ | |||
+ | ==== 4.6 Бюджетная безотказная сеть для кластера ==== | ||
+ | |||
+ | * Видео [[Бюджетная безотказная сеть для кластера]] | ||
+ | |||
+ | ==== 4.7 Все что должен знать DevOps про PostgreSQL ==== | ||
+ | * Видео [[Все что должен знать DevOps про PostgreSQL]] |