User Tools

Site Tools


devops2._использование_kubernetes_2023

Differences

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

Link to this comparison view

devops2._использование_kubernetes_2023 [2025/03/19 07:50]
val created
devops2._использование_kubernetes_2023 [2025/03/19 08:10] (current)
val
Line 1: Line 1:
-====== ​DevOps1Основные инструменты ​======+====== ​DevOps2Использование ​Kubernetes ​======
  
 ===== Программа курса ===== ===== Программа курса =====
  
-  * [[https://​www.specialist.ru/​course/​kuber|DevOps. Уровень ​1. Инфраструктура как код, основные инструменты]]+  * [[https://​www.specialist.ru/​course/​devops2|DevOps. Уровень ​2. Использование ​Kubernetes]]
   * [[https://​www.specialist.ru/​track/​dp-devops|ДП-ДЕВОПС-М]]   * [[https://​www.specialist.ru/​track/​dp-devops|ДП-ДЕВОПС-М]]
  
-===== Модуль 0. Подготовка к занятию ​=====+===== Модуль 0. Подготовка ​стенда в классе ​=====
  
-  ​Узнать и записать свой номер стенда: X= +  ​Узнать свой номер стенда 
-  ​- Сообщить его в чат преподавателю+  ​* Проверить ​наличие дистрибутивов и образов (будет сделано) 
 +  * Использовать кэширующий прокси для ускорения загрузки
  
-===== Модуль 1: Введение и развертывание стенда =====+===== Модуль 1: Развертывание стенда =====
  
 ==== Теория ==== ==== Теория ====
  
-  * [[https://dzen.ru/a/ZVIBk2kT0ntemhwK|∞ Дорожная карта DevOps-инженера в 2023 году]] +  * Разворачиваем стенд курса ​[[https://www.specialist.ru/course/yun2-b|Linux. Уровень 2. Администрирование сервисов и сетей]]
-  * Ссылки в разделе [[Сервис ​Git]]+
  
-==== Лабораторные работы:​ Развертывание стенда ​и инициализация репозитория Git ==== +==== Лабораторные работы:​ Развертывание стенда ====
- +
-  * Разворачиваем стенд курса [[https://​www.specialist.ru/​course/​yun2-b|Linux. Уровень 2. Администрирование сервисов и сетей]] или [[https://​rutube.ru/​video/​18b52d9721f7464b4485fec7d894e8ca/​|Развертывание стенда дома (смотреть с 13-й минуты)]]+
  
 === 1.1 Схема стенда,​ импорт,​ настройка и запуск VM gate и server === === 1.1 Схема стенда,​ импорт,​ настройка и запуск VM gate и server ===
Line 38: Line 36:
 cd conf/​virtualbox/​ cd conf/​virtualbox/​
  
-!!! - это номер курса, вместо X укажите Ваш номер стенда,​ если не знаете его, спросите преподавателя !!!+!!! - это номер курса, вместо X укажите Ваш номер стенда,​ если не знаете его, спросите преподавателя !!!
  
-./setup.sh X 8+./setup.sh X 9
 </​code>​ </​code>​
 === 1.2 Настройка сети VM gate и server === === 1.2 Настройка сети VM gate и server ===
Line 62: Line 60:
   * Создать в Putty профили gate, server и подключиться   * Создать в Putty профили gate, server и подключиться
  
-=== 1.3 Инициализация ​репозитория Git ===+=== 1.3 настройка сервисов DNS и DHCP ===
  
-  ​* [[Сервис Git]], команды init, add, commit для каталога /etc на server +  * [[Финальная настройка DNS сервера]] ​на server
- +
-  ​* [[Финальная настройка DNS сервера]] ​+
 <​code>​ <​code>​
-server:~# git -C conf/ pull 
- 
 server:~# sh conf/dns.sh server:~# sh conf/dns.sh
 </​code>​ </​code>​
Line 83: Line 77:
 </​code>​ </​code>​
  
-=== 1.4 Работа с репозиторием Git === +  * Настройка сервера ​DHCP на gate
- +
-!!! Методическая рекомендация,​ запустить установку Docker (только на server) из лабораторной работы 2.1 +
 <​code>​ <​code>​
-servercat /etc/​bind/​corpX.un +gate:~sh conf/dhcp.sh
-</​code><​code>​ +
-... +
-webd            A       ​192.168.X.10+
 </​code>​ </​code>​
- 
-  * [[Сервис Git]], команды git -C /etc/ ..., log, show, diff, reset 
 ==== Вопросы ==== ==== Вопросы ====
  
-  - Перечислите и объясните команды git 
  
-===== Модуль 2: Docker ​=====+===== Модуль 2: Развертывание кластера через kubeadm ​=====
  
 ==== Теория ==== ==== Теория ====
  
-  * Ссылки в разделах [[Технология cgroup]], [[Технология namespaces]] и [[Технология Docker]] +==== Лабораторные работы: Развертывание ​учебного кластера ​====
-  * [[https://​ru.wikipedia.org/​wiki/​Микросервисная_архитектура|Микросервисная архитектура]]+
  
-==== Лабораторные работы:​ Установка docker и работа с контейнерами ====+  * !!! Параллельно в паузах !!! 
  
-=== 2.1 Собираем docker контейнер ​===+  * [[Переменные ​окружения#​Установка переменных окружения]] http_proxy, https_proxy и no_proxy 
 +  * Hа server запускаем ​установку [[Технология Docker]], [[Сервис Ansible]], [[Инструмент GitLab]] (через ​docker-compose) и [[Инструмент GitLab#​GitLab Runner]] (из dpkg) 
 +  * Hа gate запускаем установку [[Технология Docker]] и gitlab-runner из [[Инструмент GitLab#​Установка в виде ​контейнера]] 
 +  * Разворачиваем систему client1 для разработчика ([[Настройка сети в Linux]], [[Технология Docker]])
  
-  * [[Технология Docker#​Установка]] Docker из базового ​репозитория ​на **server** ​и из репозитория вендора на **gate**+=== 2.1 Развертывание ​кластера ​===
  
-!!! Методическая рекомендациязапустить ​установку Golang из этой лабораторной работы+  * Развертываем с использованием [[Технология Vagrant]] узлы node1,2,3 (!!! в provision_once.sh раскомментировать docker) для кластера 
 +  * Добавляем DNS записи nodeN A 192.168.X.200+N в [[Сервис DNS#Настройка мастер сервера зоны corpX.un]] 
 +  * [[Система Kubernetes#​Развертывание через kubeadm]]
  
-  * Обсудить [[Технология Docker#​Создание ​образа для приложения ​вручную]] было в ЛИН3+=== 2.2 Знакомство с k8s ===
  
-!!! Методическая рекомендация, запустить установку docker-compose ​из лабораторной ​работы 2.2+  * [[Система Kubernetes#​Настройка автодополнения]] 
 +  * [[Система Kubernetes#​Базовые объекты k8s]] (c node1#) 
 +  * [[Система Kubernetes#​Volumes]] [[Команда dd#Создание пустого файла]] (внутри пода) 
 +  * [[Система Kubernetes#​ConfigMap]] + Service
  
-  * Обсудить [[Технология Docker#​Создание образа для ​приложения ​с использованием Dockerfile]] будет в доп. практикуме+==== Вопросы ====
  
-== 2.1.2 Приложение на Python == 
  
-  * [[Язык программирования Python#​Виртуальная среда Python]] (учетная запись root на server) 
-  * Создаем [[Язык программирования Python#Web приложение]] на Python 
  
-!!! Методическая ​рекомендация,​ запустить установку Vagrant из лабораторной работы 3.1+===== Модуль 3: Развертывание кластера через Kubespray =====
  
-  * Собираем образ [[Технология Docker#​Приложение python pywebd]] +==== Теория ​====
-  * Вопросы оптимизации Dockerfile и безопасности+
  
-  * [[Технология Docker#​Анализ параметров запущенного контейнера]] 
  
-== 2.1.3 Приложение на Go == +==== Лабораторные работы: Развертывание ​кластера ​предприятия ====
- +
-!!! Методическая рекомендация,​ запустить установку GitLab из лабораторной работы ​4.1 +
- +
-  * [[Язык программирования Golang]] (учетная запись root на gate) +
-  * Создаем [[Язык программирования Golang#​Web ​приложение]] на Golang +
- +
-<​code>​ +
-~/gowebd# apt purge golang-go; apt autoremove -y +
-</​code>​+
  
-  * Собираем образ [[Технология Docker#​Приложение golang gowebd]] +=== 3.1 Подготовка узлов ===
-  * Вопросы оптимизации размера ​образа+
  
-  * Расширение [[Технология Docker#​docker buildx]] +  * Добавляем DNS записи kubeN A 192.168.X.220+N в [[Сервис DNS#​Настройка мастер сервера зоны corpX.un]] 
-  * Вопросы оптимизации времени сборки образа+  * Настройка IP на kube1-4 ( через ​[[Сервис DHCP]]) 
 +  * Настройка файлов конфигурации ​сети через Ansible([[Сервис Ansible#​Настройка групп управляемых систем]], [[Сервис Ansible#​Настройка транспорта ssh]] и [[Сервис Ansible#​Использование ролей]] 
 +  * [[Сервис Ansible#​Использование модулей]] для отключения swap на kube1-4
  
-  * [[Технология Docker#​Обзор и удаление]] ненужных ​ресурсов Docker+=== 3.2 Развертывание ​кластера ===
  
-=== 2.2 Связываем и деплоим контейнеры с помощью docker-compose ===+  * [[Система Kubernetes#​Развертывание через Kubespray]]
  
-  * [[Технология Docker#Использование готовых образов приложений]] +=== 3.3 Управление кластером ===
-  * Использование [[Технология Docker#​docker-compose]]+
  
-  * Можно показать "​кубернетес"​ - [[Сервис HTTP#Прокси "красивого"​ URL в приложение ​(пример 3)|Использование прокси Nginx]] для доступа к приложению (если установился GitLab)+  * [[Система Kubernetes#Добавление ​узла через Kubespray]] 
 +  * [[Система Kubernetes#​Добавление ​insecure_registries через Kubespray]]
  
 ==== Вопросы ==== ==== Вопросы ====
  
-  - Зачем нужен Docker? +===== Модуль 4: Разработка и CI приложения =====
-  - Чем Docker отличается от LXC? +
-  - Чем Docker контейнер отличается от Docker образа? +
-  - Как ПО в Docker контейнере может взаимодействовать с системой и другими ​контейнерами+
-  - Зачем нужен Dockerfile?​ +
-  - Зачем "запихивать"​ сразу много ​инструкций в команду RUN? +
-  - Зачем нужен ​docker-compose?​ +
-===== Модуль 3. Инфраструктура как код ​=====+
  
 ==== Теория ==== ==== Теория ====
  
-  * Построение ландшафта инфраструктуры на примере [[Технология Vagrant]] +==== Лабораторные работы: Разработка и CI приложения ====
-  * Построение ландшафта облачной инфраструктуры с использованием [[https://​ru.wikipedia.org/​wiki/​Terraform|HashiCorp Terraform]] +
-  * Видео урок: [[On-premise Terraform]] +
-  * Управление инфраструктурой с использованием [[Сервис Ansible]]+
  
-==== Лабораторные работы: Управление инфраструктурой ====+  * Разворачиваем систему client1 для разработчика ([[Настройка сети в Linux]]) 
 +  * [[Настройка командных интерпретаторов]]
  
-=== 3.1 Управление инфраструктурой с использованием Vagrant ​===+=== 4.1 Разработка приложения и упаковка его в Docker образ ​===
  
-!!! Методическая рекомендация, запустить установку Ansible ​из лабораторной работы 3.2+  * Как student@client1 
 +  * [[Язык программирования Golang]] 
 +  * [[Технология Docker]], [[Технология Docker#​Предоставление прав непривилегированным пользователям]], [[Технология Docker#​Dockerfile Multistage Building]] на client1
  
-  * Добавляем DNS записи nodeN A 192.168.X.200+N в [[Сервис DNS#​Настройка ​мастер сервера зоны corpX.un]] +=== 4.2 Размещение кода и образа приложения ​в GitLab ===
-  * Обзор ​команд [[Технология VirtualBox]] +
-  * Обзор [[Технология Vagrant]] +
-  * Развертываем с использованием [[Технология Vagrant#​Multi-Machine Vagrant Environments]] узлы кластера node1,2,3+
  
-=== 3.2 Управление инфраструктурой с использованием Ansible ===+  * [[Инструмент GitLab#​Установка через docker-compose]] GitLab 
 +  * Создаем и подключаемся учетной записью student ([[Инструмент GitLab#Управление ​пользователями]] GitLab) 
 +  * Можно использовать ключи ssh ([[Сервис SSH#Настройка ssh клиента]]) 
 +  * Создаем новый публичный проект gowebd без Readme ​и копируем инструкции из подсказки 
 +  * Перед git push... отключаем Auto DevOps и !!! проверить еще раз после push 
 +  * [[Сервис Git#​Обновление ​сетевого репозитория из локального]]
  
-  * Общие принципы и модели управления (Push and Pull) +  * [[Инструмент ​GitLab#GitLab Docker Registry]] 
-  * Ansible - [[Сервис Ansible#​Установка на управляющей системе]] +  * Docker ​[[Технология Docker#Insecure Private Registry]] на client1 для проверки, можно ​использовать подсказки из раздела ​container_registry ​а затем удалить образ из GitLab
-  * [[Сервис Ansible#​Настройка групп управляемых систем]] +
-  * [[Сервис Ansible#​Настройка транспорта ssh]] с [[Сервис SSH#Парольная аутентификация]] +
-  * [[Сервис Ansible#​Использование модулей]] для тестирования связи с управляемыми системами +
-  * Установка ​Docker ​с помощью [[Сервис Ansible#Использование playbook|Ansible playbook]] на node1,2,3 (лучше во время перерыва) +
-  * [[Сервис Ansible#Использование шаблонов]] Jinja в playbook ​для установки Nginx (на gate, по окончании демонстрации удалить!!) +
-  * Обсудить варианты [[Сервис Ansible#​Использование handlers]] +
-  * Развертывание кластера приложения с [[Сервис Ansible#​Использование ролей]] Ansible+
  
-==== Вопросы ====+  * [[Инструмент GitLab#​Установка в виде контейнера]] gitlab-runner на gate 
 +  * Включаем [[Технология Docker#​Insecure Private Registry]] (можно [[Сервис SSH#SCP]] c client1), копируем "​Registration token" для gitlab-runner в режиме [[Инструмент GitLab#​Регистрация DooD]]
  
-  ​- Что ​общего и в чем отличие ​между Ansible, Vagrant и Terraform?​ +  ​* Добавляем в проект [[Инструмент ​GitLab#​Пример CI с использованием контейнеров]] и используем Git тэги ([[Сервис Git#Обновление сетевого ​репозитория из локального]]) для сборки Docker образов
-  - Что означает ​термин Provision в Vagrant? +
-  - Что такое module, playbook, role в Ansible? +
-  - Назовите каталоги в роли Ansible +
-  - Что должно быть установлено на целевой системе для управления через ​Ansible? +
-  - Каким образом Vagrant управляет VM? +
-  - Как реализован Ansible provision в Vagrant?+
  
-===== Модуль ​4. Continuous Integration =====+  * Останавливаем, ​очищаем конфигурацию [[Инструмент GitLab#​Установка в виде контейнера]] gitlab-runner на gate 
 +  * Удаляем Runner в GitLab 
 +  * [[Технология Docker#​Обзор и удаление]] образов gowebd c gate (может понадобиться -f) 
 +  * Отключаем [[Технология Docker#​Insecure Private Registry]]
  
-==== Теория ​====+  * Повторяем [[Инструмент GitLab#​Установка в виде контейнера]] gitlab-runner на gate 
 +  * Копируем "​Registration token" для gitlab-runner в режиме [[Инструмент GitLab#​Регистрация DinD]] 
 +  * Добавляем необходимые для DinD элементы конфигурации в [[Инструмент GitLab#​Пример CI с использованием контейнеров]]
  
-  * [[https://​ru.wikipedia.org/​wiki/​Непрерывная_интеграция]] 
-  * [[https://​simpleone.ru/​glossary/​ci-cd-cd-continuous-integration-continuous-delivery-continuous-deployment|CI/​CD/​CD. Continuous Integration / Continuous Delivery / Continuous Deployment]] 
  
-  * [[https://​youtu.be/​FeD6VBY2Xss|Вебинар: Вход в CI/CD для Linux-админа]] +=== 4.3 Сборка образа в k8s ===
-  * [[https://​habr.com/​ru/​articles/​716454/​|Статья:​ Самый простой пример CI/CD]]+
  
-==== Лабораторные работы:​ От Git к CI/CD ====+8 DEVOPS2
  
-=== 4.1 Обзор GitLab === +  * После того, как пройдем ​helm 
- +  * Останавливаем ​gitlab-runner ​на gate и удаляем его из проекта ​gowebd 
-  * [[Инструмент GitLab#​Установка из репозитория]] +  * [[Система Kubernetes#​Работа с публичными репозиториями]] на примере gitlab-runner 
- +  * [[Инструмент GitLab#Пример CI с использованием контейнеров]] в k8s
-!!! Методическая рекомендация,​ скачать gitlab-runner из лабораторной работы 4.2 +
- +
-  * [[Инструмент GitLab#​Управление пользователями]] (назначить УЗ student администратором) +
-  * Создаем ​новый репозиторий (Project name: openvpn1, Private, без README) в GitLab  +
-  * Пользуясь инструкцией к проекту, включаем [[Сервис Git]] для каталога openvpn1 и помещаем его в GitLab +
- +
-=== 4.2 Запуск пайплайнов из .gitlab-ci в gitlab-runners === +
- +
-  * [[Инструмент GitLab#​Установка ​из пакета]] GitLab Runner ​на server ​и его [[Инструмент GitLab#Регистрация]] с меткой **ansible** и исполнителем **shell** +
- +
-  * Используя GitLab Pipeline Editor добавляем в проект openvpn1 [[Инструмент GitLab#​Пример shell ansible]] Pipeline и наблюдаем "выкатку"​ в "​прод"​ после Commit в ветку main+
  
 ==== Вопросы ==== ==== Вопросы ====
  
-  - Чем отличается GitLab от Git? +===== Модуль 5: CD приложения ​=====
-  - Для чего нужен GitLab Runner? +
-  - Как называется файл для CI/CD в GitLab? +
- +
-===== Модуль 5. Обзор задач QA =====+
  
 ==== Теория ==== ==== Теория ====
  
-  * [[https://​testengineer.ru/​dorogostoyashchie-bagi/​|7 эпичнейших багов в истории человечества]]+==== Лабораторные работы: CD приложения ====
  
-  * [[https://​ru.wikipedia.org/​wiki/​Тестирование_программного_обеспечения]] 
-  * [[https://​www.atlassian.com/​ru/​continuous-delivery/​software-testing/​types-of-software-testing|Различные виды тестирования ПО]] 
  
-  * [[https://​ru.wikipedia.org/​wiki/​Ручное_тестирование]] 
-  * [[https://​ru.wikipedia.org/​wiki/​Автоматизированное_тестирование]] 
-  * [[https://​ru.wikipedia.org/​wiki/​Lint]] 
-  * [[https://​ru.wikipedia.org/​wiki/​Smoke_test]] 
-  * [[https://​eurobyte.ru/​articles/​v-chem-otlichiya-nagruzochnogo-ot-stress-testirovaniya/​|В чем отличия нагрузочного от стресс-тестирования]] 
-==== Лабораторные работы:​ Задачи тестирования ==== 
  
-=== 5.1 Ручное тестирование функциональности и работа с ветками проекта ​===+=== 5.1 Вручную ===
  
-  * Понадобится win client2 (ip/m: 172.16.1.100+X/​24,​ dns: 172.16.1.254)+5 DEVOPS2
  
-  * Для подключения ​используем [[Сервис Keepalived]] ​в режиме ​[[Сервис Keepalived#​Настройка ​балансировки ​нагрузки]] и corpX.ovpn ([[Пакет OpenVPN#​Настройка ​клиента]]) в windows или linux +  * С node1 разворачиваем gowebd ​используя [[Система Kubernetes#​namespace для своего приложения]] (меняем имя образа, не меняем имена файлов манифестов и метки), потребуется выполнить следующий шаг 
-  * Добавить [[Сервисы Gateway и routing#Управление таблицей маршрутизации]] ​на gate (можно отключить маршрут в LAN и настроить [[Сервис NAT]] для ​зрелищности,​ !!! вернуть обратно для доп. работ)+  * [[Система Kubernetes#​Настройка ​доступа к Insecure Private Registry]] для kubeadm кластера 
 +  * Демонстрация использования Deployment для управления версиями 
 +  * [[Система Kubernetes#​Добавление insecure_registries через Kubespray]] 
 +  * Использование [[Система Kubernetes#​Ingress]] вариант ​[[Система Kubernetes#​Baremetal ingress-nginx-controller]] на [[Система Kubernetes#​ingress example]] ​в kubeadm кластере 
 +  * Использование ​[[Система Kubernetes#​Управление дополнениями через Kubespray]] для включения Ingress 
 +  * [[Пакет OpenSSL#Создание самоподписанного сертификата]] (gowebd без altdns) 
 +  * [[Система Kubernetes#​secrets tls]]
  
-  * Добавляем параметры dhcp-option,​block-outside-dns и Commit в test с созданием Merge requests и наблюдаем "​выкатку"​ в "​тестовую"​ среду, проверяем работу сервиса в ней +=== 5.2 GitOps ===
-  * Одобряем Merge requests и наблюдаем "​выкатку"​ в "​прод" ​+
  
-=== 5.2 Тестирование в этапах развертывания образа приложения в Docker среде ===+6 DEVOPS2
  
-!!! Методическая рекомендация, включить GitLab ​Docker Registry ​из этой ​лабораторной работы +  * Воспроизводим и качественно продолжаем то, на чем остановились на 1-м курсе 
 +  * Устанавливаем [[Инструмент GitLab#​GitLab Runner]] на server (из dpkg) 
 +  * Устанавливаем [[Система Kubernetes#​Инструмент ​командной строки kubectl]] на server 
 +  * Настраиваем [[Система Kubernetes#​Подключение к кластеру]] для пользователя gitlab-runner на server 
 +  * Создаем каталог gowebd-k8s пользователем gitlab-runner,​ [[Инструмент ​GitLab#​Пример shell Kubernetes]],​ service и ingress можно оставить ​из лаборатороной работы 5.1 
 +  * Настраиваем stage deploy через envsubst ([[Инструмент GitLab#​Пример shell Kubernetes]],​ см. выше) 
 +  * Создаем проект gowebd-k8s, что-бы не "​возиться"​ с ключами ssh, указать:​  
 +<​code>​ 
 +gitlab-runner@server:​~/​gowebd-k8s$ git remote add origin http://​server.corpX.un/​student/​gowebd-k8s.git 
 +</​code>​ 
 +  * Проводим [[Инструмент GitLab#​Регистрация]] gitlab runner в этом проекте (вариант из командной ​строки) 
 +  * Настраиваем зависимость между проектами через stage deploy в [[Инструмент GitLab#​Пример CI с использованием контейнеров]] 
 +  * Увеличиваем версию,​ добавляем соответствующий тег, проверяем 
 +<​code>​ 
 +$ curl https://​gowebd.corpX.un -k 
 +</​code>​
  
-  * [[Язык программирования Golang#​golangci-lint]] кода приложения +=== 5.3 Helm ===
-  * Сборка образа [[Технология Docker#​Приложение golang gowebd]] +
-  * [[Технология Docker#​Smoke test]] работоспособности приложения+
  
-  * Размещение образа приложения в Registry +8 DEVOPS2
-  * Включаем [[Инструмент GitLab#​GitLab Docker Registry]] +
-  * Включаем [[Технология Docker#​Insecure Private Registry]] и [[Технология Docker#​Аутентификация в Registry]] +
-  * Создаем (Public, без README) проект gowebd +
-  * Cохраняем образ, [[Технология Docker#​Использование Private Registry]]+
  
-!!! Методическая рекомендациязапустить установку minikube из лабораторной работы 6.1+  * [[Система Kubernetes#​Удаление объектов]] (весь namespace) 
 +  * [[Система Kubernetes#​Установка Helm]] 
 +  * Использование [[Система Kubernetes#​Управление дополнениями через Kubespray]] для включения Helm 
 +  * [[Система Kubernetes#​Развертывание своего приложения]] (webd-chart с образом gowebd) 
 +  * Настраиваем stage deploy через helm ([[Инструмент GitLab#​Пример shell Kubernetes]],​ см. выше) 
 +  * [[Система Kubernetes#​Работа со своим репозиторием]] для развертывания ​приложения на kube кластере (используем проект gowebd) 
 +  * Настраиваем DNS на кластер kube 
 +<​code>​ 
 +server# cat /​etc/​bind/​corpX.un 
 +... 
 +webd            A       ​192.168.X.222 
 +                A       ​192.168.X.223 
 +gowebd ​         CNAME   ​webd 
 +... 
 +</​code>​ 
 +  * Возвращаем DNS на кластер node 
 +  * Лабораторная работа 4.3
  
-  * Можно продемонстрировать развертывание приложения на nodeN+=== 5.4 ArgoCD ===
  
-=== 5.3 Тестирование ​в процессе ​CI и управление версиями ===+!!! ВНИМАНИЕ !!! Вместо ​9-го фрагмента записи (его лучше просто просмотреть) рекомендую выполнить лабораторные работы из вебинара [[https://​rutube.ru/​video/​356186164509624a323079127c4bd690/​|Доступ к приложениям в Bare-Metal Kubernetes]],​ там ​есть ​все что нужно, плюс, много дополнительного ​материала !!!
  
-  * Проводим ​[[Инструмент GitLab#Установка в виде контейнера]] gitlab-runner ​на gate +  * [[Система Kubernetes#Работа со своим репозиторием]] для удаления приложения с kube кластера 
-  * Используем [[Инструмент GitLab#​Регистрация DooD]] ​для добавления runner в проект gowebd ​+  * Настраиваем DNS на кластер kube 
 +  * Используем [[Контроллер ArgoCD]] ​на kube кластере для деплоя приложения
  
-  * Отключаем gowebd->​CI/​CD Settings->​Auto DevOps +=== 5.5 Работа с хранилищами в Kubernetes ===
-  * Добавляем в папку gowebd [[Инструмент GitLab#​Пример CI с использованием контейнеров]] +
-  * Используя ​инструкции из GitLab добавляем папку в проект ​и наблюдаем сборку образа с тэгом commit hash +
-  * Можно продемонстрирорвать Smoke test, заменив порт в коде ​+
  
-  * Останавливаем, очищаем конфигурацию [[Инструмент GitLab#​Установка в виде контейнера]] gitlab-runner на gate +!!! Если есть "настрой", ​можно выполнить лабораторные работы из этого вебинара:
-  * Удаляем Runner в GitLab +
-  * [[Технология Docker#Обзор и удаление]] (преподавателю можно всех) образов c gate +
-  * Отключаем [[Технология Docker#​Insecure Private Registry]]+
  
-  * Повторяем ​[[Инструмент GitLab#​Установка в виде контейнера]] gitlab-runner на gate +  * [[https://​rutube.ru/​video/​9c55de0f39d761d569761d2f553e0f61/​|Работа с хранилищами в Kubernetes]]
-  * Используем [[Инструмент GitLab#​Регистрация DinD]] для добавления runner в проект gowebd +
-  * Добавляем необходимые для DinD элементы конфигурации в [[Инструмент GitLab#Пример CI с использованием контейнеров]] +
-  * Увеличиваем версию и наблюдаем сборку образа с тэгом commit hash +
-  * Можно продемонстрирорвать Lint test, добавив лишнюю переменную в коде+
  
-  * Используем Git тэги ([[Сервис Git#Обновление ​сетевого репозитория из локального]] или Code->​Tags) для указания версии Docker образов+=== 5.6 Обновление кластера ​Kubernetes ===
  
-==== Вопросы ====+!!! Если ​Вы "​еще здесь"​)),​ есть можно выполнить лабораторные работы из этого вебинара:​
  
-  ​- Что такое "ветка"​ в Git и почему переименовали master в main? +  ​* [[https://​rutube.ru/​video/​1b0cde4db02403e1e2a8a79cafda4131/​|Обновление кластера ​Kubernetes]]
-  - Из каких частей состоит имя образа? +
-  - Как работает DooD и DinD? +
-  - Что такое Linter? +
-  - Что такое Smoke test?+
  
-===== Модуль 6. Kubernetes ===== 
- 
-==== Теория ==== 
- 
-  * [[https://​timeweb.cloud/​blog/​sistemy-orkestracii-kontejnerov|Системы оркестрации контейнеров:​ что такое и лучше для вашего проекта]] 
-  * [[https://​habr.com/​ru/​articles/​589415/​|K8S для начинающих. Первая часть]] 
-  * [[https://​habr.com/​ru/​amp/​publications/​651653/​|K8S для начинающих. Часть вторая]] 
-==== Лабораторные работы:​ Работа с minikube, cоздание deployment и service ==== 
- 
-=== 6.1 Установка minikube === 
- 
-  * Для доступа к репозиторию,​ понадобится включить [[Сервисы Gateway и routing]] 
-  * [[Система Kubernetes#​Установка minikube]] для gitlab-runner@server (можно,​ если будет время, показать CD) 
- 
-=== 6.2 Создание deployment и service === 
- 
-  * Изучаем [[Система Kubernetes#​Базовые объекты k8s]] - [[Система Kubernetes#​Deployment]] и [[Система Kubernetes#​Service]] 
-  * Для понимания работы [[Система Kubernetes#​Ingress]] (будет в следующем курсе),​ можно продемонстрировать использование [[Сервис HTTP#​Прокси "​красивого"​ URL в приложение (пример 3)|Nginx]] для доступа к приложению webd в minikube с хост системы ​ 
- 
-  * Если есть 30 минут, можно показать CD через envsubst "**3.3 Разворачивание нужной версии приложения в kubernetes**"​ из Девопс2 ​ 
-  * Понадобится назначить метку k8s-deploy ранеру и 
-<​code>​ 
-server# cp -v /​home/​gitlab-runner/​.minikube/​cache/​linux/​amd64/​v*/​kubectl /​usr/​local/​bin/​ 
-</​code>​ 
-  * Можно показать все, используя Web IDE 
 ==== Вопросы ==== ==== Вопросы ====
- 
-  * Почему Kubernetes часто обозначают K8s? 
-  * Чем K8s отличается от Docker-Compose?​ 
-  * Что используется для описания состояния объектов в K8s? 
-  * Как связаны понятия Deployment, Replica Sets, Pods? 
-  * Для чего используются Namespace? 
- 
-===== Модуль 7. Дополнительные материалы ===== 
- 
-  * [[Вход в Jenkins]] и процесс непрерывной интеграции для администратора Linux (выполняем работы с 00:05:30 до конца) 
- 
-  * [[Зачем нужен Kubernetes]] (выполняем работы с 00:02:45 до 00:53:00 и с 01:08:33 до конца),​ понадобятся [[Средства программирования shell#​Ресурсы Web сервера на shell]] 
- 
-  * [[On-premise Terraform|Развертывание инфраструктуры в On-premise облаке с использованием Terraform]] (выполняем работы с 00:10:15 до 00:35:30 и с 00:40:45 до конца) 
-  * Понадобится освободить ресурсы и исключить кофликт по IP адресам,​ остановив узлы кластера ​ 
-<​code>​ 
-Administrator@RAZLIV_48 ~/​conf/​vagrant/​nodes (master) 
- 
-λ vagrant halt 
-</​code>​ 
-  * Понадобится развернуть VM home-computer ([[Технология VirtualBox#​Вложенная виртуализация]]) подключить к сети класса (WAN), увеличить RAM до 8192, запустить,​ назначить hostname, выяснить IP адрес и подключиться PuTTY 
-  * Понадобится установить VNC [[https://​www.tightvnc.com/​download.php]],​ все по умолчанию 
-  * Перед "​Шаг 3": перенести home-computer в LAN, назанчить IP .200 из сети 192.168.X.0/​24 и считать ее "​домашней сетью"​ 
-  * Шаг 4 - в режиме просмотра 
devops2._использование_kubernetes_2023.1742359819.txt.gz · Last modified: 2025/03/19 07:50 by val