This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
devops1._основные_инструменты_2024 [2024/04/16 18:19] val |
devops1._основные_инструменты_2024 [2025/02/19 06:26] (current) val created |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== DevOps1. Основные инструменты ====== | + | ====== DevOps1. Основные инструменты 2024 ====== |
| ===== Программа курса ===== | ===== Программа курса ===== | ||
| Line 5: | Line 5: | ||
| * [[https://www.specialist.ru/course/kuber|DevOps. Уровень 1. Инфраструктура как код, основные инструменты]] | * [[https://www.specialist.ru/course/kuber|DevOps. Уровень 1. Инфраструктура как код, основные инструменты]] | ||
| * [[https://www.specialist.ru/track/dp-devops|ДП-ДЕВОПС-М]] | * [[https://www.specialist.ru/track/dp-devops|ДП-ДЕВОПС-М]] | ||
| + | |||
| + | * [[https://dzen.ru/a/ZVIBk2kT0ntemhwK|∞ Дорожная карта DevOps-инженера в 2023 году]] | ||
| ===== Модуль 0. Подготовка стенда в классе ===== | ===== Модуль 0. Подготовка стенда в классе ===== | ||
| Line 30: | Line 32: | ||
| cd | cd | ||
| - | test -d conf && rm -r conf | + | test -d conf && rm -rf conf |
| git clone http://val.bmstu.ru/unix/conf.git | git clone http://val.bmstu.ru/unix/conf.git | ||
| Line 42: | Line 44: | ||
| === 1.2 Настройка сети VM gate и server === | === 1.2 Настройка сети VM gate и server === | ||
| - | * !!! Добавить HDD 20GB к server | ||
| * [[Настройка стендов слушателей#Настройка виртуальных систем Unix]] с использованием [[Настройка стендов слушателей#Скрипты автоконфигурации]] | * [[Настройка стендов слушателей#Настройка виртуальных систем Unix]] с использованием [[Настройка стендов слушателей#Скрипты автоконфигурации]] | ||
| Line 63: | Line 64: | ||
| === 1.3 настройка сервиса DNS === | === 1.3 настройка сервиса DNS === | ||
| - | * [[Управление файловыми системами в Linux#Использование LVM]] | ||
| * [[Финальная настройка DNS сервера]] | * [[Финальная настройка DNS сервера]] | ||
| <code> | <code> | ||
| Line 80: | Line 80: | ||
| ==== Вопросы ==== | ==== Вопросы ==== | ||
| - | |||
| - | ===== Модуль 4: Распространение ПО с использованием контейнеров ===== | ||
| - | |||
| - | ==== Теория ==== | ||
| - | |||
| - | * [[Технология Docker]] | ||
| - | |||
| - | ==== Лабораторные работы: Работа с контейнерами Docker ==== | ||
| - | |||
| - | === 4.1 Разработка и нагрузочное тестирование приложения webd === | ||
| - | |||
| - | * Преподаватель использует linux систему external-host для нагрузочного тестирования и демонстрирует "разработку" приложения на VM server | ||
| - | * [[Средства программирования shell#Web сервер на shell]] (методически, для обсуждения кода, можно, для упрощения, удалить из него все за комментированные строки, но не сохранять. Так же, можно вывести в лог [[Сервис HTTP#Пример HTTP диалога]]) | ||
| - | * [[Сервис INETD]] | ||
| - | |||
| - | * Через [[Сервис Keepalived#Настройка балансировки нагрузки]] в Keepalived предоставляем доступ снаружи | ||
| - | |||
| - | * [[https://github.com/wg/wrk|wrk - a HTTP benchmarking tool]] | ||
| - | |||
| - | * [[https://lindevs.com/install-vegeta-on-ubuntu|Install Vegeta on Ubuntu 20.04]] | ||
| - | * [[https://github.com/tsenart/vegeta/releases|github/tsenart/vegeta/releases]] | ||
| - | * [[https://val.bmstu.ru/unix/WWW/vegeta_12.11.0_linux_amd64.tar.gz]] | ||
| - | |||
| - | * [[https://serverfault.com/questions/389645/ftp-tcp-server-failing-looping|ftp/tcp server failing (looping)]] | ||
| - | |||
| - | * duration=60s rate=400 выдерживают 10 экземпляров приложения | ||
| - | * в качестве external-host можно использовать gate | ||
| - | <code> | ||
| - | external-host# curl http://172.16.1.X | ||
| - | |||
| - | external-host# echo "GET http://172.16.1.X" | vegeta attack -duration=20s -rate=100 | vegeta report | ||
| - | |||
| - | server# tail -f /var/log/syslog | ||
| - | </code> | ||
| - | |||
| - | === 4.2 Использование технологии Docker и docker-compose для масштабирования приложения webd на одном узле === | ||
| - | |||
| - | * Устанавливаем [[Технология Docker]] на server, собираем образ приложения "вручную" из под root | ||
| - | * Изучаем [[Технология Docker#Процессы контейнера и системы]] и [[Технология Docker#Анализ параметров запущенного контейнера]] (преподаватель, можно на node1, пока у всех ставится docker) | ||
| - | |||
| - | * Для удобства, выполнить [[Настройка командных интерпретаторов]] | ||
| - | * Используя [[Технология Docker#Предоставление прав непривилегированным пользователям]] для gitlab-runner (пригодится для процесса CD в minikube), знакомимся с [[Технология Docker#Создание контейнера для приложения с использованием Dockerfile]] | ||
| - | |||
| - | * [[Технология Docker#Запуск в режиме демона и подключение к контейнеру]] несколько копий вручную, и, через [[Сервис Keepalived#Настройка балансировки нагрузки]], повторяем нагрузочное тестирование (преподаватель) | ||
| - | * Знакомимся с [[Технология Docker#docker-compose]] для запуска нескольких копий приложения | ||
| - | |||
| - | === 4.3 Использование технологии Docker Registry для распространения приложения webd === | ||
| - | |||
| - | Методически, достаточно показать на node1 | ||
| - | |||
| - | * Создаем (Public, без README) проект webd и размещаем каталог webd в [[Сервис Git#On-Premise gitlab]] пользуясь инструкцией к проекту | ||
| - | * Включаем [[Инструмент GitLab#GitLab Docker Registry]] | ||
| - | * Cохраняем образ, используя [[Технология Docker#Локальные репозитории]] | ||
| - | * [[Сервис NFS]] на server (преподаватель) | ||
| - | * [[Сервис NFS#Установка nfs клиента]] на node1,2,3 и монтирование /var/www | ||
| - | * Проверяем наличие, или устанавливаем Docker на node1,2,3 | ||
| - | * Используя доступ к [[Технология Docker#Локальные репозитории]] на node1,2,3 запускаем приложение | ||
| - | |||
| - | === 4.4 GitLab CI для Docker images === | ||
| - | |||
| - | * Автоматизируем сборку образа используя [[Средства программирования shell#Проверка синтаксиса]] и [[Инструмент GitLab#Пример shell docker]] GitLab CI/CD, не забыв назначить метки Gitlab Runner. Можно обсудить добавление перемнных в проект и вывод их через env | ||
| - | |||
| - | === 4.5 CD приложения webd с использованием docker-compose === | ||
| - | |||
| - | * Модифицируем [[Технология Docker#docker-compose]] для загрузки и запуска нескольких копий приложения и тестируем на server | ||
| - | * Используя [[Инструмент GitLab#Подключение через API]] скачиваем на node1,2,3 файл [[Технология Docker#docker-compose]] запускаем несколько экземпляров приложения и, через [[Сервис Keepalived#Настройка балансировки нагрузки]], повторяем нагрузочное тестирование | ||
| - | * Считаем, что пришлось делать "вручную": выбирать узлы, монтировать nfs, загружать файл docker-compose, выяснять порты - выход: [[Система Kubernetes]] | ||
| - | |||
| - | ==== Вопросы ==== | ||
| - | |||
| - | - Зачем нужен Docker? | ||
| - | - Чем Docker отличается от LXC? | ||
| - | - Из каких частей состоит имя образа? | ||
| - | - Чем Docker контейнер отличается от Docker образа? | ||
| - | - Как ПО в Docker контейнере может взаимодействовать с системой и другими контейнерами? | ||
| - | - Зачем нужен Dockerfile? | ||
| - | - Зачем "запихивать" сразу много инструкций в команду RUN? | ||
| - | - Зачем нужен docker-compose? | ||
| - | ===== Модуль 5: Управление ПО с использованием Kubernetes ===== | ||
| - | |||
| - | ==== Теория ==== | ||
| - | |||
| - | * [[Система Kubernetes]] | ||
| - | ==== Лабораторные работы: Тема лабораторных работ ==== | ||
| - | |||
| - | === 5.1 Установка и подключение к k8s === | ||
| - | |||
| - | * Может закончиться место на диске VM server и понадобиться [[Управление ПО в Linux#Удаление архива установленных пакетов]] плюс отключение [[Инструмент GitLab#GitLab Prometheus]] или [[Управление файловыми системами в Linux#Расширение существующего логического тома]] | ||
| - | * Производим [[Система Kubernetes#Установка minikube]] для gitlab-runner@server (для доступа к репозиторию, на нем же, понадобится включить [[Сервисы Gateway и routing]]) | ||
| - | |||
| - | === 5.2 Базовые объекты k8s === | ||
| - | |||
| - | * Изучаем [[Система Kubernetes#Базовые объекты k8s]] (gitlab-runner@server:~/webd$) | ||
| - | * Для понимания работы [[Система Kubernetes#Ingress]] (понадобится в следующем курсе), настраиваем [[Сервис HTTP#NGINX]] для доступа к приложению webd в minikube с хост системы | ||
| - | * Тестируем livenessProbe с extern-host | ||
| - | <code> | ||
| - | extern-host# cat /etc/hosts | ||
| - | </code><code> | ||
| - | ... | ||
| - | 172.16.1.X webd.corpX.un | ||
| - | </code> | ||
| - | |||
| - | === 5.3 Deploy в k8s === | ||
| - | |||
| - | * Автоматизируем deploy используя [[Инструмент GitLab#Пример shell Kubernetes]] GitLab CD (см. выше), сталкиваемся с необходимостью править версию в манифесте, рассмотрев вариант envsubst видим, необходимость в Helm | ||
| - | * В финале, можно "собрать" новую версию приложения на gate из под учетной записи student | ||
| - | |||
| - | ==== Вопросы ==== | ||
| - | |||
| - | * Почему Kubernetes часто обозначают K8s? | ||
| - | * Чем K8s отличается от Docker-Compose? | ||
| - | * Что используется для описания состояния объектов в K8s? | ||
| - | * Как связаны понятия Deployment, Replica Sets, Pods? | ||
| - | * Для чего используются Namespace? | ||
| ===== Модуль 2: От Git к SCM к CI/CD ===== | ===== Модуль 2: От Git к SCM к CI/CD ===== | ||
| * !!! Заранее выполняем на server | * !!! Заранее выполняем на server | ||
| - | * [[Переменные окружения#Установка переменных окружения]] http_proxy, https_proxy и no_proxy (только для ОО) | ||
| * Установку [[Инструмент Gitea]] | * Установку [[Инструмент Gitea]] | ||
| - | * Установку [[Сервис JRE]] (на gate) | + | * Установку [[Сервис JRE]] (и на gate) |
| * Установку [[Инструмент Jenkins]] !!! и установку плагинов !!! | * Установку [[Инструмент Jenkins]] !!! и установку плагинов !!! | ||
| Line 232: | Line 117: | ||
| </code> | </code> | ||
| * [[Установка ПО из исходных текстов#Использование make для сопровождения файлов конфигурации сервиса]] | * [[Установка ПО из исходных текстов#Использование make для сопровождения файлов конфигурации сервиса]] | ||
| - | * [[Сервис Git]] для каталога ~student/dhcp/ на gate | + | * [[Сервис Git]] для каталога ~student/dhcp/ на gate (лучше в следующей лабораторной) |
| === 2.2 Знакомимся с SCM Gitea === | === 2.2 Знакомимся с SCM Gitea === | ||
| Line 238: | Line 123: | ||
| * [[Инструмент Gitea]] | * [[Инструмент Gitea]] | ||
| * Подключаемся как student, Repository Name: dhcp | * Подключаемся как student, Repository Name: dhcp | ||
| - | * [[Сервис Git#Обновление сетевого репозитория из локального]] (копируем инструкции из посказки, ветка master) | + | * [[Сервис Git#Обновление сетевого репозитория из локального]] (копируем инструкции из подсказки) |
| * Редактируем dhcpd.conf в Gitea (Commit to master branch) | * Редактируем dhcpd.conf в Gitea (Commit to master branch) | ||
| Line 254: | Line 139: | ||
| * [[https://habr.com/ru/articles/716454/|Статья: Самый простой пример CI/CD]] | * [[https://habr.com/ru/articles/716454/|Статья: Самый простой пример CI/CD]] | ||
| + | * Установка [[Инструмент GitLab]] | ||
| * http://server.corpX.un/ | * http://server.corpX.un/ | ||
| - | * Используем [[Инструмент GitLab#Управление пользователями]] в GitLab для отключения авто регистрации, назначении пароля пользователю root и создания учетной записи student | + | * Используем [[Инструмент GitLab#Управление пользователями]] в GitLab для назначении пароля пользователю root и создания учетной записи student (лучше назначить его администратором) |
| - | + | ||
| - | * http://server.corpX.un:81/mail | + | |
| !!! в теме Ansible | !!! в теме Ansible | ||
| Line 265: | Line 149: | ||
| * Устанавливаем и регистрируем [[Инструмент GitLab#GitLab Runner]] (shell) на server | * Устанавливаем и регистрируем [[Инструмент GitLab#GitLab Runner]] (shell) на server | ||
| - | * Используя GitLab Pipeline Editor добавляем в [[Инструмент GitLab#Пример shell ansible]] Pipeline и наблюдаем выкатку в прод после Commit в master | + | * Используя GitLab Pipeline Editor добавляем в проект openvpn1 [[Инструмент GitLab#Пример shell ansible]] Pipeline и наблюдаем выкатку в прод после Commit в master/main |
| * Добавляем параметры dhcp-option,block-outside-dns и Commit в test с созданием Merge requests и наблюдаем выкатку в тестовую среду, проверяем работу сервиса в ней | * Добавляем параметры dhcp-option,block-outside-dns и Commit в test с созданием Merge requests и наблюдаем выкатку в тестовую среду, проверяем работу сервиса в ней | ||
| Line 286: | Line 170: | ||
| * Построение ландшафта инфраструктуры на примере [[Технология Vagrant]] | * Построение ландшафта инфраструктуры на примере [[Технология Vagrant]] | ||
| * Построение ландшафта облачной инфраструктуры с использованием [[https://ru.wikipedia.org/wiki/Terraform|HashiCorp Terraform]] | * Построение ландшафта облачной инфраструктуры с использованием [[https://ru.wikipedia.org/wiki/Terraform|HashiCorp Terraform]] | ||
| + | * Видео урок: [[On-premise Terraform]] | ||
| * Управление инфраструктурой на примере [[Сервис Ansible]] | * Управление инфраструктурой на примере [[Сервис Ansible]] | ||
| Line 301: | Line 186: | ||
| * [[Сервис Ansible]], модуль apt на примере openvpn, playbook docker (только слушатели), можно addusers.yml (для OpenVPN) | * [[Сервис Ansible]], модуль apt на примере openvpn, playbook docker (только слушатели), можно addusers.yml (для OpenVPN) | ||
| * Преподаватель импортирует систему Windows для тестирования OpenVPN | * Преподаватель импортирует систему Windows для тестирования OpenVPN | ||
| - | * Разворачиваем [[Пакет OpenVPN]] в конфигурации с [[Пакет OpenVPN#Использование PAM аутентификации]] на node1,2,3 с [[Сервис Ansible#Использование ролей]] (не забыть про [[Сервисы Gateway и routing#Управление таблицей маршрутизации]] на gate) | + | * C [[Сервис Ansible#Использование ролей]] разворачиваем [[Пакет OpenVPN]] в конфигурации с [[Пакет OpenVPN#Использование PAM аутентификации]] на node1,2,3 (не забыть про [[Сервисы Gateway и routing#Управление таблицей маршрутизации]] на gate) |
| * Для подключения используем [[Сервис Keepalived]] в режиме [[Сервис Keepalived#Настройка балансировки нагрузки]] и corpX.ovpn ([[Пакет OpenVPN#Настройка клиента]]) в windows или linux | * Для подключения используем [[Сервис Keepalived]] в режиме [[Сервис Keepalived#Настройка балансировки нагрузки]] и corpX.ovpn ([[Пакет OpenVPN#Настройка клиента]]) в windows или linux | ||
| * Можно добавить [[Сервис NAT]] для зрелищности | * Можно добавить [[Сервис NAT]] для зрелищности | ||
| Line 319: | Line 204: | ||
| - Каким образом Vagrant управляет VM? | - Каким образом Vagrant управляет VM? | ||
| - Как реализован Ansible provision в Vagrant? | - Как реализован Ansible provision в Vagrant? | ||
| + | ===== Модуль 4: Распространение ПО с использованием контейнеров ===== | ||
| + | ==== Теория ==== | ||
| + | * [[Технология Docker]] | ||
| + | ==== Лабораторные работы: Работа с контейнерами Docker ==== | ||
| + | === 4.1 Разработка и нагрузочное тестирование приложения webd === | ||
| + | * Преподаватель использует linux систему external-host для нагрузочного тестирования и демонстрирует "разработку" приложения на VM server | ||
| + | * [[Средства программирования shell#Web сервер на shell]] (методически, для обсуждения кода, можно, для упрощения, удалить из него все за комментированные строки, но не сохранять. Так же, можно вывести в лог [[Сервис HTTP#Пример HTTP диалога]]) | ||
| + | * [[Сервис INETD]] | ||
| + | |||
| + | * Через [[Сервис Keepalived#Настройка балансировки нагрузки]] в Keepalived предоставляем доступ снаружи | ||
| + | |||
| + | * [[https://github.com/wg/wrk|wrk - a HTTP benchmarking tool]] | ||
| + | |||
| + | * [[https://lindevs.com/install-vegeta-on-ubuntu|Install Vegeta on Ubuntu 20.04]] | ||
| + | * [[https://github.com/tsenart/vegeta/releases|github/tsenart/vegeta/releases]] | ||
| + | * [[https://val.bmstu.ru/unix/WWW/vegeta_12.12.0_linux_amd64.tar.gz]] | ||
| + | |||
| + | * [[https://serverfault.com/questions/389645/ftp-tcp-server-failing-looping|ftp/tcp server failing (looping)]] | ||
| + | |||
| + | * duration=60s rate=400 выдерживают 10 экземпляров приложения | ||
| + | * в качестве external-host можно использовать gate | ||
| + | <code> | ||
| + | cmd> route add 172.16.1.0 mask 255.255.255.0 10.5.N.178 | ||
| + | |||
| + | external-host# curl http://172.16.1.X | ||
| + | |||
| + | external-host# echo "GET http://172.16.1.X" | vegeta attack -duration=20s -rate=100 | vegeta report | ||
| + | |||
| + | server# tail -f /var/log/syslog | ||
| + | </code> | ||
| + | |||
| + | === 4.2 Использование технологии Docker и docker-compose для масштабирования приложения webd на одном узле === | ||
| + | |||
| + | * Устанавливаем [[Технология Docker]] на server, и рассматриваем [[Технология Docker#Создание образа для приложения вручную]] и образа из него (из под root) | ||
| + | * Рассматриваем [[Технология Docker#Запуск в режиме демона и подключение к контейнеру]] | ||
| + | * Изучаем [[Технология Docker#Процессы контейнера и системы]] и [[Технология Docker#Анализ параметров запущенного контейнера]] (преподаватель, можно на node1, пока у всех ставится docker) | ||
| + | |||
| + | * Для удобства, выполнить [[Настройка командных интерпретаторов]] | ||
| + | * Используя [[Технология Docker#Предоставление прав непривилегированным пользователям]] для gitlab-runner (пригодится для процесса CD в minikube), знакомимся с [[Технология Docker#Создание образа для приложения с использованием Dockerfile]] | ||
| + | |||
| + | * [[Технология Docker#Запуск в режиме демона и подключение к контейнеру]] несколько копий вручную, и, через [[Сервис Keepalived#Настройка балансировки нагрузки]], повторяем нагрузочное тестирование (преподаватель) | ||
| + | * Знакомимся с [[Технология Docker#docker-compose]] для запуска нескольких копий приложения (без sftp и vol) | ||
| + | |||
| + | === 4.3 Использование технологии Docker Registry для распространения приложения webd === | ||
| + | |||
| + | Методически, достаточно показать на node1 | ||
| + | |||
| + | * Создаем (Public, без README) проект webd | ||
| + | * Размещаем каталог webd в [[Сервис Git#On-Premise gitlab]] пользуясь инструкцией к проекту (можно в теме 4.4) | ||
| + | * Включаем [[Инструмент GitLab#GitLab Docker Registry]] | ||
| + | * Cохраняем образ, используя [[Технология Docker#Локальные репозитории]] | ||
| + | * [[Сервис NFS]] на server (преподаватель) | ||
| + | * [[Сервис NFS#Установка nfs клиента]] на node1,2,3 и монтирование /var/www | ||
| + | * Проверяем наличие, или [[Технология Docker#Установка|устанавливаем]] Docker на node1,2,3 | ||
| + | * Используя доступ к [[Технология Docker#Локальные репозитории]] на node1,2,3 запускаем приложение | ||
| + | |||
| + | === 4.4 GitLab CI для Docker images === | ||
| + | |||
| + | * Размещаем каталог webd в [[Сервис Git#On-Premise gitlab]] пользуясь инструкцией к проекту | ||
| + | * Автоматизируем сборку образа используя [[Средства программирования shell#Проверка синтаксиса]] и [[Инструмент GitLab#Пример shell docker]] GitLab CI/CD, не забыв назначить метки Gitlab Runner. Можно обсудить добавление переменных в проект и вывод их через env | ||
| + | |||
| + | === 4.5 CD приложения webd с использованием docker-compose === | ||
| + | |||
| + | * Модифицируем [[Технология Docker#docker-compose]] для загрузки и запуска нескольких копий приложения и тестируем на server | ||
| + | * Используя [[Инструмент GitLab#Подключение через API]] скачиваем на node1,2,3 файл [[Технология Docker#docker-compose]] запускаем несколько экземпляров приложения и, через [[Сервис Keepalived#Настройка балансировки нагрузки]], повторяем нагрузочное тестирование | ||
| + | * Считаем, что пришлось делать "вручную": выбирать узлы, монтировать nfs, загружать файл docker-compose, выяснять порты - выход: [[Система Kubernetes]] | ||
| + | |||
| + | ==== Вопросы ==== | ||
| + | |||
| + | - Зачем нужен Docker? | ||
| + | - Чем Docker отличается от LXC? | ||
| + | - Из каких частей состоит имя образа? | ||
| + | - Чем Docker контейнер отличается от Docker образа? | ||
| + | - Как ПО в Docker контейнере может взаимодействовать с системой и другими контейнерами? | ||
| + | - Зачем нужен Dockerfile? | ||
| + | - Зачем "запихивать" сразу много инструкций в команду RUN? | ||
| + | - Зачем нужен docker-compose? | ||
| + | ===== Модуль 5: Управление ПО с использованием Kubernetes ===== | ||
| + | |||
| + | ==== Теория ==== | ||
| + | |||
| + | * [[Система Kubernetes]] | ||
| + | ==== Лабораторные работы: Тема лабораторных работ ==== | ||
| + | |||
| + | === 5.1 Установка и подключение к k8s === | ||
| + | |||
| + | * Производим [[Система Kubernetes#Установка minikube]] для gitlab-runner@server (для доступа к репозиторию, на нем же, понадобится включить [[Сервисы Gateway и routing]]) | ||
| + | |||
| + | === 5.2 Базовые объекты k8s === | ||
| + | |||
| + | * Изучаем [[Система Kubernetes#Базовые объекты k8s]] | ||
| + | * Для понимания работы [[Система Kubernetes#Ingress]] (понадобится в следующем курсе), настраиваем [[Сервис HTTP#Прокси "красивого" URL в приложение (пример 3)|Nginx]] для доступа к приложению webd в minikube с хост системы | ||
| + | * Настраиваем [[Сервис Keepalived#Настройка балансировки нагрузки|Keepalived]] и тестируем [[Утилита curl]] | ||
| + | * Тестируем livenessProbe с extern-host | ||
| + | |||
| + | <code> | ||
| + | ext-host:~# echo "GET http://webd.corpX.un" | vegeta attack -duration=20s -rate=400 -connect-to webd.corpX.un:80:172.16.1.X:80 | vegeta report | ||
| + | </code> | ||
| + | |||
| + | === 5.3 Deploy в k8s === | ||
| + | |||
| + | * Автоматизируем deploy используя [[Инструмент GitLab#Пример shell Kubernetes]] GitLab CD (см. выше) | ||
| + | * Тестируем "выкатку" новой версии приложения через запрос несуществующего файла и [[Система Kubernetes#Версии deployment]] | ||
| + | * Столкнувшись с необходимостью править версию в манифесте, рассмотрев вариант с envsubst в [[Инструмент GitLab#Пример shell Kubernetes]], видим необходимость в Helm | ||
| + | * В финале, можно "закоммитить" новую версию приложения прямо в GitLab | ||
| + | |||
| + | |||
| + | ==== Вопросы ==== | ||
| + | |||
| + | * Почему Kubernetes часто обозначают K8s? | ||
| + | * Чем K8s отличается от Docker-Compose? | ||
| + | * Что используется для описания состояния объектов в K8s? | ||
| + | * Как связаны понятия Deployment, Replica Sets, Pods? | ||
| + | * Для чего используются Namespace? | ||
| ===== Дополнительные материалы ===== | ===== Дополнительные материалы ===== | ||
| + | |||
| + | * [[https://rutube.ru/video/010673aafbfa7669938d1c3fec3a2ed8|Зачем нужен Kubernetes?]] | ||
| + | * [[https://rutube.ru/video/299b61b457e95203906d9e60878993e3|Вход в Jenkins для администратора Linux]] | ||
| + | * [[https://rutube.ru/video/5ba29eaa5f03107ea8d4b686ae7551a6|Развертывание инфраструктуры в On-premise облаке с использованием Terraform]] | ||
| + | |||
| + | |||
| + | |||
| + | |||