User Tools

Site Tools


введение_в_devops

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
введение_в_devops [2022/09/28 07:17]
val [Теория]
введение_в_devops [2023/09/11 06:23] (current)
val [Лабораторные работы: Развертывание стенда]
Line 1: Line 1:
 ====== Введение в DevOps ====== ====== Введение в DevOps ======
  
-  * [[https://​www.cisco.com/​c/​dam/​m/​ru_ru/​training-events/​2019/​cisco-connect/​pdf/​netdevops_angrechi_on_site.pdf|Как начать управлять сетью на основе методологии NetDevOpsи перестать бояться изменений в пятницу вечером]]+
  
  
 ===== Программа курса ===== ===== Программа курса =====
  
-  * [[https://​www.specialist.ru/​course/​kuber|Введение в DevOps: инфраструктура как код, ​использование Docker ​и Kubernetes]]+  * [[https://​www.specialist.ru/​course/​kuber|DevOps. Уровень 1. Инфраструктура как код, основные инструменты]] 
 +  * [[https://​www.specialist.ru/​track/​dp-devops|ДП-ДЕВОПС-М]]
  
 ===== Модуль 0. Подготовка стенда в классе ===== ===== Модуль 0. Подготовка стенда в классе =====
Line 18: Line 19:
 ==== Теория ==== ==== Теория ====
  
-  * Разворачиваем стенд курса ​ЛИН2+  * Разворачиваем стенд курса ​[[https://​www.specialist.ru/​course/​yun2-b|Linux. Уровень ​2. Администрирование сервисов и сетей]]
  
 ==== Лабораторные работы:​ Развертывание стенда ==== ==== Лабораторные работы:​ Развертывание стенда ====
Line 35: Line 36:
  
 cd conf/​virtualbox/​ cd conf/​virtualbox/​
 +
 +!!! 8 - это номер курса, вместо X укажите Ваш номер стенда,​ если не знаете его, спросите преподавателя !!!
  
 ./setup.sh X 8 ./setup.sh X 8
Line 40: Line 43:
 === 1.2 Настройка сети VM gate и server === === 1.2 Настройка сети VM gate и server ===
  
 +  * !!! Добавить HDD 20GB к server
   * [[Настройка стендов слушателей#​Настройка виртуальных систем Unix]] с использованием [[Настройка стендов слушателей#​Скрипты автоконфигурации]]   * [[Настройка стендов слушателей#​Настройка виртуальных систем Unix]] с использованием [[Настройка стендов слушателей#​Скрипты автоконфигурации]]
  
Line 60: Line 64:
 === 1.3 настройка сервиса DNS === === 1.3 настройка сервиса DNS ===
  
 +  * [[Управление файловыми системами в Linux#​Использование LVM]]
   * [[Финальная настройка DNS сервера]] ​   * [[Финальная настройка DNS сервера]] ​
 <​code>​ <​code>​
Line 82: Line 87:
   * [[Переменные окружения#​Установка переменных окружения]] http_proxy, https_proxy и no_proxy   * [[Переменные окружения#​Установка переменных окружения]] http_proxy, https_proxy и no_proxy
   * Установку [[Сервис Ansible]]   * Установку [[Сервис Ansible]]
-  * Установку [[Инструмент GitLab]]+  * Установку [[Инструмент GitLab]] !!! запустить до первого перерыва 
 + 
 + 
 +  * !!! Заранее выполняем на host системе 
 +  * Технология Vagrant [[Технология Vagrant#​Установка]]
  
 ==== Теория ==== ==== Теория ====
Line 98: Line 107:
 gate:~# sh conf/​dhcp.sh gate:~# sh conf/​dhcp.sh
 </​code>​ </​code>​
-  * [[Установка ПО из исходных текстов#​Использование утилиты make]] +  ​* [[Сервис DHCP#​Статистика DHCP сервера]] 
-  * [[Модуль AppArmor#​Определение наличия и правка профилей для служб]] !!! проверить,​ закачался ли gitlab+  ​* [[Установка ПО из исходных текстов#​Использование утилиты make]] ​(установить) 
 +  * [[Модуль AppArmor#​Определение наличия и правка профилей для служб]] !!! проверить,​ закачался ли GitLab !!!
 <​code>​ <​code>​
 gate# su - student gate# su - student
Line 110: Line 120:
 !!! Если GitLab к этому времени не установился,​ начать тему Vagrant !!! Если GitLab к этому времени не установился,​ начать тему Vagrant
  
-  * [[Инструмент GitLab#​Управление пользователями]] в GitLab для ​создания ​учетной записи student, ​так же назначить пароль пользователю root+  * http://​server.corpX.un/​ 
 +  * Используем ​[[Инструмент GitLab#​Управление пользователями]] в GitLab для отключения ​авто регистрации, ​назначении пароля пользователю root и создания учетной записи student
   * http://​server.corpX.un:​81/​mail   * http://​server.corpX.un:​81/​mail
   * Подключаемся как student, New Blank Project (Project name: dhcp, без README)   * Подключаемся как student, New Blank Project (Project name: dhcp, без README)
Line 119: Line 130:
  
   * [[Сервис DHCP#​Статистика DHCP сервера]]   * [[Сервис DHCP#​Статистика DHCP сервера]]
-  * [[Сервис Git#​Клонирование и обновление локального репозитория из сетевого]] (root на gate)+  * [[Сервис Git#​Клонирование и обновление локального репозитория из сетевого]] (можно тем же student ​на gate)
   * [[Установка ПО из исходных текстов#​Использование make для сопровождения файлов конфигурации сервиса]]   * [[Установка ПО из исходных текстов#​Использование make для сопровождения файлов конфигурации сервиса]]
  
Line 125: Line 136:
   * Используем [[Пакет sudo]] для разрешений пользователя gitlab-runner   * Используем [[Пакет sudo]] для разрешений пользователя gitlab-runner
   * [[Инструмент GitLab#​GitLab CI/CD]]   * [[Инструмент GitLab#​GitLab CI/CD]]
-  * Экспериментируем)+  * Экспериментируем ​или смотри вебинар :[[https://​youtu.be/​FeD6VBY2Xss|Вход в CI/CD для Linux-админа]]
  
 === 2.4 Работа с ветками в GitLab CI/CD === === 2.4 Работа с ветками в GitLab CI/CD ===
Line 131: Line 142:
 !!! в теме Ansible !!! в теме Ansible
  
- +  ​* Создаем новый репозиторий (Project name: openvpn1, без README) в GitLab ​ 
-  * Включаем [[Сервис Git]] для каталога openvpn1 и загружаем его в  +  * Пользуясь инструкцией к проекту, ​включаем [[Сервис Git]] для каталога openvpn1 (ubuntu20 ветка master) и помещаем его в GitLab (можно сразу добавить GitLab Runner и CI/CD для выкатки в прод
-  ​* Создаем новый репозиторий (Project name: openvpn1, без README) в GitLab ​и пользуясь инструкцией к проекту, ​добавляем его в ветку main+  * Используем ​[[Сервис Git#​Клонирование и обновление локального ​репозитория из сетевого]] проекта ​openvpn1 на локальную систему в [[Cmder]] (!!! появляется скрытое окно, в котором надо нажать Ок) и открываем проект в npp
-  * Загружаем репозиторий openvpn1 на локальную систему в [[Cmder]] (!!! появляется скрытое окно, в котором надо нажать Ок)открываем проект в npp+
   * Используем [[Сервис Git#​Работа с ветками]] в Git для тестовой конфигурации в [[Сервис Ansible#​Роль OpenVPN сервера]] (можно добавить и протестировать настройки push...dhcp...dns)   * Используем [[Сервис Git#​Работа с ветками]] в Git для тестовой конфигурации в [[Сервис Ansible#​Роль OpenVPN сервера]] (можно добавить и протестировать настройки push...dhcp...dns)
-  * Устанавливаем [[Инструмент GitLab#​GitLab Runner]] (shell) на server +  * Устанавливаем и регистрируем [[Инструмент GitLab#​GitLab Runner]] (shell) на server 
-  * Используем GitLab CI/CD [[Инструмент GitLab#​Пример shell ansible]] для сервиса OpenVPN с ручным тестированием ​тестовой ​конфигурации +  * Используем GitLab CI/CD [[Инструмент GitLab#​Пример shell ansible]] для сервиса OpenVPN с ручным тестированием конфигурации 
-  * Дополнительное задание - добавить тестирование конфигурации перед деплоем+  * Используем [[Сервис Git#​Работа с ветками]] в Git для переноса изменений ветки test в master 
 +  * Дополнительное задание - добавить ​[[Пакет OpenVPN#Тестирование конфигурации]] перед деплоем
  
 ==== Вопросы ==== ==== Вопросы ====
Line 144: Line 155:
   - Чем отличается GitLab от Git?   - Чем отличается GitLab от Git?
   - Что делают операции add, commit, push в Git?   - Что делают операции add, commit, push в Git?
-  - Что такое "​ветка"​ в Git и почему переименовали master в main? 
   - Для чего нужен GitLab Runner?   - Для чего нужен GitLab Runner?
   - Как называется файл для CI/CD в GitLab?   - Как называется файл для CI/CD в GitLab?
 +  - Что такое "​ветка"​ в Git и почему переименовали master в main?
 ===== Модуль 3: Инфраструктура как код ===== ===== Модуль 3: Инфраструктура как код =====
  
Line 161: Line 172:
  
   * Добавляем DNS записи nodeN A 192.168.X.200+N в [[Сервис DNS#​Настройка мастер сервера зоны corpX.un]]   * Добавляем DNS записи nodeN A 192.168.X.200+N в [[Сервис DNS#​Настройка мастер сервера зоны corpX.un]]
 +  * Обзор команд [[Технология VirtualBox]]
   * Развертываем с использованием [[Технология Vagrant]] node1,2,3   * Развертываем с использованием [[Технология Vagrant]] node1,2,3
  
Line 168: Line 180:
   * Преподаватель импортирует систему Windows для тестирования OpenVPN   * Преподаватель импортирует систему Windows для тестирования OpenVPN
   * Разворачиваем [[Пакет OpenVPN]] в конфигурации с [[Пакет OpenVPN#​Использование PAM аутентификации]] на node1,​2,​3 ​ с [[Сервис Ansible#​Использование ролей]]   * Разворачиваем [[Пакет OpenVPN]] в конфигурации с [[Пакет OpenVPN#​Использование PAM аутентификации]] на node1,​2,​3 ​ с [[Сервис Ansible#​Использование ролей]]
-  * Для подключения используем [[Сервис Keepalived]] в режиме [[Сервис Keepalived#​Настройка балансировки нагрузки]] и соответствующей ​[[Пакет OpenVPN#​Настройка клиента]] windows +  * Для подключения используем [[Сервис Keepalived]] в режиме [[Сервис Keepalived#​Настройка балансировки нагрузки]] и client.ovpn ([[Пакет OpenVPN#​Настройка клиента]]) в windows 
-  * Лабораторная работа 2.4+  ​* Можно добавить [[Сервис NAT]] для зрелищности 
 + 
 +  * **Лабораторная работа 2.4**
  
 === 3.3 Использование Ansible в Vagrant === === 3.3 Использование Ansible в Vagrant ===
Line 177: Line 191:
  
   - Что общего и в чем отличие между Ansible, Vagrant и Terraform?   - Что общего и в чем отличие между Ansible, Vagrant и Terraform?
 +  - Что означает термин Provision в Vagrant?
   - Что такое module, playbook, role в Ansible?   - Что такое module, playbook, role в Ansible?
   - Назовите каталоги в роли Ansible   - Назовите каталоги в роли Ansible
-  - Что должно быть установлено на целевой системе для управления ​ею через Ansible+  - Что должно быть установлено на целевой системе для управления через Ansible?
   - Каким образом Vagrant управляет VM?   - Каким образом Vagrant управляет VM?
-  - Для чего предназначен Provision в Vagrant? 
   - Как реализован Ansible provision в Vagrant?   - Как реализован Ansible provision в Vagrant?
 ===== Модуль 4: Распространение ПО с использованием контейнеров ===== ===== Модуль 4: Распространение ПО с использованием контейнеров =====
Line 187: Line 201:
 ==== Теория ==== ==== Теория ====
  
-  [[Технология Docker]]+  ​[[Технология Docker]]
 ==== Лабораторные работы:​ Работа с контейнерами Docker ==== ==== Лабораторные работы:​ Работа с контейнерами Docker ====
  
 === 4.1 Разработка и нагрузочное тестирование приложения webd === === 4.1 Разработка и нагрузочное тестирование приложения webd ===
  
-  * Преподаватель импортирует linux систему external-host для нагрузочного тестирования +  * Преподаватель импортирует linux систему external-host для нагрузочного тестирования ​и демонстрирует "​разработку"​ приложения на VM server 
-  * [[Средства программирования shell#Web сервер на shell]]+  * [[Средства программирования shell#Web сервер на shell]] ​(методически,​ для обсуждения кода, можно, для упрощения,​ удалить из него все за комментированные строки)
   * [[Сервис INETD]]   * [[Сервис INETD]]
   * Через [[Сервис Keepalived#​Настройка балансировки нагрузки]] в Keepalived предоставляем доступ снаружи ​   * Через [[Сервис Keepalived#​Настройка балансировки нагрузки]] в Keepalived предоставляем доступ снаружи ​
   * [[https://​lindevs.com/​install-vegeta-on-ubuntu|Install Vegeta on Ubuntu 20.04]]   * [[https://​lindevs.com/​install-vegeta-on-ubuntu|Install Vegeta on Ubuntu 20.04]]
   * [[https://​serverfault.com/​questions/​389645/​ftp-tcp-server-failing-looping|ftp/​tcp server failing (looping)]]   * [[https://​serverfault.com/​questions/​389645/​ftp-tcp-server-failing-looping|ftp/​tcp server failing (looping)]]
 +
 +  * duration=60s rate=400 выдерживают 10 экземпляров приложения
 +  * в качестве external-host можно использовать gate
 <​code>​ <​code>​
 external-host#​ curl http://​172.16.1.X external-host#​ curl http://​172.16.1.X
  
-external-host#​ echo "GET http://​172.16.1.X"​ | vegeta attack -duration=10s -rate=400 | vegeta report+external-host#​ echo "GET http://​172.16.1.X"​ | vegeta attack -duration=60s -rate=400 | vegeta report
  
 server# tail -f /​var/​log/​syslog server# tail -f /​var/​log/​syslog
 </​code>​ </​code>​
  
-=== 4.2 Использование технологии Docker для распространения приложения webd ===+=== 4.2 Использование технологии Docker ​и docker-compose для масштабирования приложения webd на одном узле === 
 + 
 +  * Устанавливаем [[Технология Docker]] на server 
 +  * Используя su - gitlab-runner (пригодится для тестов CI/CD из командной строки,​ для удобства работы выполнить [[Настройка командных интерпретаторов]]),​ знакомимся с технологией и упаковываем приложение (без sftp) в Docker образ 
 +  * Запускаем несколько копий вручную,​ и, через [[Сервис Keepalived#​Настройка балансировки нагрузки]],​ повторяем нагрузочное тестирование 
 +  * Знакомимся с [[Технология Docker#​docker-compose]] для запуска нескольких копий приложения 
 + 
 +=== 4.3 Использование технологии Docker Registry ​для распространения приложения webd === 
 + 
 +Методически,​ достаточно показать на node1
  
-  * Упаковываем ​приложение и знакомимся с [[Технология Docker]] ​(без ​sftpна gitlab-runner@server (удобно для тестов CI/CD из командной строки) не забыв [[Технология Docker#Предоставление прав непривилегированным пользователям]] +  * Создаем (без ​READMEпроект ​webd и размещаем ​каталог webd в [[Сервис Git#​On-Premise gitlab]] ​пользуясь инструкцией к проекту
-  * Создаем проект ​webd в [[Сервис Git#​On-Premise gitlab]]+
   * Включаем [[Инструмент GitLab#​GitLab Docker Registry]]   * Включаем [[Инструмент GitLab#​GitLab Docker Registry]]
-  * Cохраняем образ используя [[Технология Docker#​Локальные репозитории]] +  * Cохраняем образиспользуя [[Технология Docker#​Локальные репозитории]] 
-  * Автоматизируем сборку образа используя ​[[Средства программирования shell#Проверка синтаксиса]] ​и [[Инструмент GitLab#​GitLab CI/CD]], не забыв назначить метки Gitlab Runner +  * [[Сервис NFS]] на server (преподаватель
-  * Добавляем и тестируем [[Технология Docker#docker-compose]] для загрузки и запуска нескольких копий ​приложения+  * [[Сервис NFS#Установка nfs клиента]] на node1,2,3 и монтирование /var/www 
 +  * Проверяем ​наличие, или устанавливаем Docker ​на node1,2,3 
 +  * Используя доступ к [[Технология Docker#Локальные ​репозитории]] на node1,​2,​3 ​запускаем несколько экземпляров приложения ​и, через [[Сервис Keepalived#​Настройка балансировки нагрузки]],​ повторяем нагрузочное тестирование
  
-=== 4.3 Горизонтальное масштабирование приложения webd с использованием docker-compose ​===+=== 4.4 GitLab CI для Docker images ​===
  
-Примечаниеслушатели делают только "Сервис ​NFS на server",​ остальное ​демонстрирует преподаватель+  * Автоматизируем сборку образа используя [[Средства программирования shell#​Проверка ​синтаксиса]] и [[Инструмент GitLab#​GitLab CI/CD]], проверяем "в ручном" ​режиме, а затем, в автоматическом,​ не забыв назначить ​переменные проекта, метки Gitlab Runner и сделав add, commit и push
  
 +=== 4.5 CD приложения webd с использованием docker-compose ===
  
-  * [[Сервис NFS]] на server +  * Модифицируем [[Технология Docker#docker-compose]] для загрузки и запуска нескольких копий приложения и тестируем на server 
-  * [[Сервис NFS#​Установка nfs клиента]] на node1 (достаточно для демонстрации, node2,3 опустим) +  * Используя [[Инструмент GitLab#​Подключение через API]] скачиваем на node1,2,3 файл [[Технология Docker#​docker-compose]] и запускаем
-  * Настраиваем доступ к [[Технология Docker#Локальные ​репозитории]] на node1,​2,​3, ​понадобится в k8s (дополнительное задание ​- создать ansible playbook для настройки подключения docker к локальному репозиторию) +
-  * Используя [[Инструмент GitLab#​Подключение через API]] скачиваем на node1 (node2,3 опустим) ​файл [[Технология Docker#​docker-compose]] и масштабируем+
   * Считаем,​ что пришлось делать "​вручную":​ выбирать узлы, монтировать nfs, загружать файл docker-compose,​ выяснять порты - выход: [[Система Kubernetes]]   * Считаем,​ что пришлось делать "​вручную":​ выбирать узлы, монтировать nfs, загружать файл docker-compose,​ выяснять порты - выход: [[Система Kubernetes]]
  
 ==== Вопросы ==== ==== Вопросы ====
  
 +  - Зачем нужен Docker?
 +  - Чем Docker отличается от LXC?
 +  - Из каких частей состоит имя образа?​
 +  - Чем Docker контейнер отличается от Docker образа?​
 +  - Как ПО в Docker контейнере может взаимодействовать с системой и другими контейнерами?​
 +  - Зачем нужен Dockerfile?
 +  - Зачем "​запихивать"​ сразу много инструкций в команду RUN?
 +  - Зачем нужен docker-compose?​
 ===== Модуль 5: Управление ПО с использованием Kubernetes ​ ===== ===== Модуль 5: Управление ПО с использованием Kubernetes ​ =====
  
 ==== Теория ==== ==== Теория ====
  
 +  * [[Система Kubernetes]]
 ==== Лабораторные работы:​ Тема лабораторных работ ==== ==== Лабораторные работы:​ Тема лабораторных работ ====
  
 === 5.1 Установка и подключение к k8s === === 5.1 Установка и подключение к k8s ===
  
-  * Может понадобиться [[Управление файловыми системами в Linux#​Расширение существующего логического тома]]+  * Может ​закончиться место на диске VM server и понадобиться ​[[Управление ПО в Linux#​Удаление архива установленных пакетов]] плюс отключение [[Инструмент GitLab#​GitLab Prometheus]] или ​[[Управление файловыми системами в Linux#​Расширение существующего логического тома]]
   * Производим [[Система Kubernetes#​Установка minikube]] для gitlab-runner@server (для доступа к репозиторию,​ на нем же, понадобится включить [[Сервисы Gateway и routing]])   * Производим [[Система Kubernetes#​Установка minikube]] для gitlab-runner@server (для доступа к репозиторию,​ на нем же, понадобится включить [[Сервисы Gateway и routing]])
   * [[Система Kubernetes#​Инструмент командной строки kubectl]] для gitlab-runner@server   * [[Система Kubernetes#​Инструмент командной строки kubectl]] для gitlab-runner@server
Line 243: Line 278:
  
   * Изучаем [[Система Kubernetes#​Базовые объекты k8s]]   * Изучаем [[Система Kubernetes#​Базовые объекты k8s]]
-  * Для понимания работы [[Система Kubernetes#​Ingress]],​ изучаем [[Сервис HTTP#NGINX]], используя его параллельно [[Система Kubernetes#​Ingress]] для доступа к приложению webd с хост системы  +  * Для понимания работы [[Система Kubernetes#​Ingress]], ​настраиваем [[Сервис HTTP#​NGINX]] для доступа к приложению webd в minikube ​с хост системы  
-  * и системы снаружи для тестирования livenessProbe (лучше не использовать DNS View из-зи множества внутренних сетей Docker/K8S)+  * Тестируем livenessProbe ​с extern-host
 <​code>​ <​code>​
 extern-host#​ cat /etc/hosts extern-host#​ cat /etc/hosts
Line 256: Line 291:
   * Автоматизируем deploy используя [[Инструмент GitLab#​GitLab CI/CD]], сталкиваемся с необходимостью править версию в манифесте,​ рассмотрев вариант envsubst видим необходимость в Helm   * Автоматизируем deploy используя [[Инструмент GitLab#​GitLab CI/CD]], сталкиваемся с необходимостью править версию в манифесте,​ рассмотрев вариант envsubst видим необходимость в Helm
  
-=== 5.4 Helm в k8s ===+=== 5.4 Helm в k8s (следующий курс :) === 
 + 
 +  * [[https://​www.specialist.ru/​course/​devops2|DevOps. Уровень 2. Использование Kubernetes]]
  
-  * Разворачиваем новый [[Система Kubernetes#​Кластер Kubernetes]] из node1,2,3, тестируем,​ используя [[Система Kubernetes#​Базовые объекты k8s]] из Docker Hup +  * Разворачиваем новый [[Система Kubernetes#​Кластер Kubernetes]] из node1,2,3 
-  * Подключаем ​[[Система Kubernetes#​Инструмент командной строки kubectl]] к новому кластеру +  * Тестируем,​ используя [[Система Kubernetes#​Базовые объекты k8s]] из Docker Hup, в процессе подключив [[Система Kubernetes#​Инструмент командной строки kubectl]] ​gitlab-runner@server ​к новому кластеру 
-  * Тестируем [[Система Kubernetes#​Базовые объекты k8s]] из локального репозитория и deploy [[Инструмент GitLab#​GitLab CI/CD]] в новом кластере (при использовании nfs-volume ​потребуется ​[[Сервис NFS#​Установка nfs клиента]] и [[Система Kubernetes#​Настройка доступа к Insecure Private Registry]] на node1,​2,​3) +  * Тестируем [[Система Kubernetes#​Базовые объекты k8s]] из локального репозитория и deploy [[Инструмент GitLab#​GitLab CI/CD]] в новом кластере (потребуется [[Система Kubernetes#​Настройка доступа к Insecure Private Registry]] и, при использовании nfs-volume[[Сервис NFS#​Установка nfs клиента]] на node1,​2,​3) 
-  * Используем [[Система Kubernetes#​Helm]] для развертывании [[Система Kubernetes#​Ingress]] в новом кластере +  * Используем [[Система Kubernetes#​Helm]] ​Chart для развертывания и тестирования ​[[Система Kubernetes#​Ingress]] в новом кластере 
-  * Изучаем ​тему ​[[Система Kubernetes#​Helm]] ​на примере ​разработки чарта для приложения ​webd  +  * Создаем [[Система Kubernetes#​Helm]] ​Chart для развертывания ​приложения webd (предварительно проводим [[Система Kubernetes#​Удаление объектов]] deployment, service и [[Система Kubernetes#​Ingress]] (можно весь namespace my-ns) ​и добавляем index.html в [[Технология Docker#​Создание контейнера для приложения ​с использованием Dockerfile]] для упрощения примера) 
-  * Возвращаемся к deploy ​используя [[Инструмент GitLab#​GitLab CI/CD]] и чарта [[Система Kubernetes#Helm]] приложения webd+  * Используем [[Система Kubernetes#​Helm]] Chart для deploy приложения webd в [[Инструмент GitLab#​GitLab CI/CD]], демонстрируем history и rollback 
 +  * Через [[Сервис Keepalived#​Настройка балансировки нагрузки]] в Keepalived предоставляем доступ снаружи для тестирования нагрузки и отказоустойчивости 
 +  * [[Система Kubernetes#Работа со своим ​репозиторием]] для Helm Charts
  
 ==== Вопросы ==== ==== Вопросы ====
  
 +  * Почему Kubernetes часто обозначают K8s?
 +  * Чем K8s отличается от Docker-Compose?​
 +  * Что используется для описания состояния объектов в K8s?
 +  * Как связаны понятия Deployment, Replica Sets, Pods?
 +  * Для чего используются Namespace?
 +  * Что общего и в чем различие между Service и Ingress?
 +  * Что используется для подключения Pod к общим файлам?​
 +  * Для чего нужен Helm и что используется для его описания?​
 ===== Дополнительные материалы ===== ===== Дополнительные материалы =====
  
введение_в_devops.1664338654.txt.gz · Last modified: 2022/09/28 07:17 by val