User Tools

Site Tools


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

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
devops2._использование_kubernetes [2024/07/10 16:14]
val [Вопросы]
devops2._использование_kubernetes [2025/03/29 06:06] (current)
val [При вводе в эксплуатацию учесть]
Line 1: Line 1:
 ====== DevOps2. Использование Kubernetes ====== ====== DevOps2. Использование Kubernetes ======
 +
 +
 +
  
 ===== Программа курса ===== ===== Программа курса =====
  
   * [[https://​www.specialist.ru/​course/​devops2|DevOps. Уровень 2. Использование Kubernetes]]   * [[https://​www.specialist.ru/​course/​devops2|DevOps. Уровень 2. Использование Kubernetes]]
-  * [[https://​www.specialist.ru/​track/​dp-devops|ДП-ДЕВОПС-М]] 
  
-===== Модуль 0. Подготовка ​стенда в классе ​=====+===== Модуль 0. Подготовка к занятию ​=====
  
-  ​Узнать свой номер стенда +  ​Узнать и записать свой номер стенда: X= 
-  ​* Проверить ​наличие дистрибутивов и образов (будет сделано) +  ​- Сообщить его в чат преподавателю
-  * Использовать кэширующий прокси для ускорения загрузки+
  
-===== Модуль 1Развертывание стенда =====+===== Модуль 1Развертывание стенда и kubernetes кластера =====
  
 ==== Теория ==== ==== Теория ====
  
-  * Разворачиваем стенд курса [[https://​www.specialist.ru/​course/​yun2-b|Linux. Уровень 2. Администрирование сервисов и сетей]]+==== Лабораторные работыРазвертывание стенда ​и kubernetes кластера ====
  
-==== Лабораторные работы: Развертывание стенда ​====+  * Разворачиваем стенд курса [[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 ​====
 <​code>​ <​code>​
 Запустите с правами Administrator Запустите с правами Administrator
Line 30: Line 31:
 cd cd
  
-test -d conf && rm -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 40: Line 41:
 ./setup.sh X 9 ./setup.sh X 9
 </​code>​ </​code>​
-=== 1.2 Настройка сети VM gate и server ===+==== 1.2 Настройка сети VM gate и server ​====
  
   * [[Настройка стендов слушателей#​Настройка виртуальных систем Unix]] с использованием [[Настройка стендов слушателей#​Скрипты автоконфигурации]]   * [[Настройка стендов слушателей#​Настройка виртуальных систем Unix]] с использованием [[Настройка стендов слушателей#​Скрипты автоконфигурации]]
Line 60: Line 61:
   * Создать в Putty профили gate, server и подключиться   * Создать в Putty профили gate, server и подключиться
  
-=== 1.3 настройка сервисов DNS и DHCP ===+==== 1.3 Подготовка инфраструктуры для kubespray ====
  
   * [[Финальная настройка DNS сервера]] на server   * [[Финальная настройка DNS сервера]] на server
 <​code>​ <​code>​
 +server:~# git -C conf/ pull
 +
 server:~# sh conf/dns.sh server:~# sh conf/dns.sh
 </​code>​ </​code>​
  
 +  * Добавляем DNS записи kubeN A 192.168.X.220+N в [[Сервис DNS#​Настройка мастер сервера зоны corpX.un]]
   * Настройка клиента DNS на gate и server   * Настройка клиента DNS на gate и server
 <​code>​ <​code>​
Line 74: Line 78:
 nameserver 192.168.X.10 nameserver 192.168.X.10
 </​code><​code>​ </​code><​code>​
-# nslookup ​ns+# nslookup ​kubeN
 </​code>​ </​code>​
  
-  * Настройка ​клиента DHCP на gate+  * Настройка ​сервера DHCP на gate
 <​code>​ <​code>​
 +gate:~# git -C conf/ pull
 +
 gate:~# sh conf/​dhcp.sh gate:~# sh conf/​dhcp.sh
 </​code>​ </​code>​
-==== Вопросы ====+  * Настройка MAC адресов 08:​00:​27:​12:​34:​5N (для получения назначенного IP через [[Сервис DHCP]]) и запуск kube1-4 ​
  
  
-===== Модуль 2: Развертывание кластера через ​kubeadm =====+==== 1.4 Разворачивание кластера ​Kubernetes ​через ​Kubespray ​====
  
-==== Теория ====+  * [[Система Kubernetes#​Развертывание через Kubespray]]
  
-==== Лабораторные работы:​ Развертывание учебного кластера ==== 
  
-  * !!! Параллельно в паузах !!! +==== 1.5 Развертывание GitLab (для 3-го модуля) ====
  
-  * [[Переменные окружения#Установка переменных окружения]] http_proxy, https_proxy и no_proxy +  * [[Пакет OpenSSL#​Создание самоподписанного сертификата]] (wild) 
-  * Hа server запускаем установку [[Технология Docker]], [[Сервис Ansible]], ​[[Инструмент GitLab]] (через docker-compose) и [[Инструмент GitLab#GitLab Runner]] (из dpkg) +  * [[Пакет OpenSSL#​Импорт сертификата центра сертификации]] на server ​(что бы не пере ​запускать docker) 
-  * Hа gate запускаем установку [[Технология Docker]] и gitlab-runner из [[Инструмент GitLab#Установка ​в виде контейнера]] +  * Установка [[Технология Docker#​docker-compose]] 
-  * Разворачиваем систему client1 ​для разработчика ([[Настройка сети в Linux]], [[Технология Docker]])+  * Подготовка к [[Инструмент GitLab#Включение TLS]] в GitLab 
 +  * [[Инструмент GitLab#Установка через docker-compose|Установка ​GitLab через docker-compose]] 
 +  * Подключаемся с хост ​системы по FQDN (для ​правильного Project URL) и создаем УЗ student с правами администратора (можно в следующую паузу)
  
-=== 2.1 Развертывание ​кластера ===+===1.6 Развертывание ​рабочей ​станции пользователя (для 4-го модуля) ====
  
-  * Развертываем с использованием [[Технология Vagrant]] узлы node1,​2,​3 ​(!!! в provision_once.sh раскомментировать docker) для кластера +  * Разворачиваем ​win client2 ​(ip/m: 172.16.1.100+X/​24,​ dns: 192.168.X.10) 
-  * Добавляем DNS записи nodeN A 192.168.X.200+N в [[Сервис DNS#​Настройка мастер сервера зоны corpX.un]] +  * Копируем ca.crt 
-  * [[Система Kubernetes#Развертывание через kubeadm]]+<​code>​ 
 +serverapt install apache2
  
-=== 2.2 Знакомство с k8s ===+server# rm /​var/​www/​html/​index.html
  
-  * [[Система Kubernetes#Настройка автодополнения]] +servercp wild.crt /​var/​www/​html/​ca.crt 
-  * [[Система Kubernetes#​Базовые объекты k8s]] (c node1#) +</​code>​
-  * [[Система Kubernetes#​Volumes]] [[Команда dd#​Создание пустого файла]] (внутри пода) +
-  * [[Система Kubernetes#​ConfigMap]] + Service+
  
-==== Вопросы ====+  * Проверяем в [[Chrome]] доступность GitLab по https
  
-  - Должен ли быть установлен ​docker на узлы кластера, разворачиваемого через kubadm? +==== 1.7 Разработка образов приложений (для 2-го модуля) ==== 
-  ​- Может ли использоваться swap на узлах kubernetes? + 
-  ​- Какой объект ​kubernetes ​используется для запуска приложение? +  * [[Язык программирования Golang]] на server, берем только код программы для следующего пункта 
-  ​- Какой объект kubernetes управляет количеством копий приложения +  ​* Создаем Docker **файл** для [[Технология Docker#Приложение golang gowebd]] (multistage для уменьшения размера) 
-  - Какой объект kubernetes ​управляет версией приложения +  * Проводим [[Технология Docker#​Аутентификация в Registry]] по **https** 
-  - Какой объект kubernetes управляет доступом к приложению на уровне портов транспортного ​уровня ​сети +  * Создаем проект **gowebd** (Public, без README) 
-  - Какой объект kubernetes управляет доступом к приложению на URL +  ​* Отключаем Auto DevOps для проекта 
-===== Модуль ​3: Развертывание кластера через Kubespray ​=====+  * Собираем и загружаем образ (latest), ​используя ​[[Технология Docker#Инструмент kaniko]], тестируем результат 
 + 
 +  ​* Только преподаватель 
 +  * [[Язык программирования Python]] (в venv2, без ssl (добавим в теме ingress), с конфигурацией и с /var/www, для демонстрации работы) 
 +  * Создаем и тестируем Docker образ для [[Технология Docker#Приложение python pywebd]] (безопасный ​вариант,​ для демонстрации всех нюансов в k8s) 
 +  * Создаем проект **pywebd** (Public (Private ​на следующей итерации),​ без README) и [[Технология Docker#​Использование Private Registry]] для хранения образа (метки latest и ver1.1) 
 + 
 +==== 1.8 Работа с кластером Kubernetes ==== 
 + 
 +  * Добавляем корпоративный сертификат в кластер kubernetes 
 +<​code>​ 
 +bash -c ' 
 +scp /​var/​www/​html/​ca.crt kube1:/​usr/​local/​share/​ca-certificates/​ 
 +ssh kube1 update-ca-certificates 
 +ssh kube1 systemctl restart containerd 
 +scp /​var/​www/​html/​ca.crt kube2:/​usr/​local/​share/​ca-certificates/​ 
 +ssh kube2 update-ca-certificates 
 +ssh kube2 systemctl restart containerd 
 +scp /​var/​www/​html/​ca.crt kube3:/​usr/​local/​share/​ca-certificates/​ 
 +ssh kube3 update-ca-certificates 
 +ssh kube3 systemctl restart containerd 
 +
 + 
 +kubeN# 
 +crictl pull server.corpX.un:​5000/​student/​gowebd 
 +crictl images 
 +crictl rmi server.corpX.un:​5000/​student/​gowebd 
 +</​code>​ 
 + 
 +  * Используем на kube1 [[Система Kubernetes#​Инструмент командной строки kubectl]]  
 + 
 +===== Модуль ​2. Объекты kubernetes, helm =====
  
 ==== Теория ==== ==== Теория ====
  
-==== Лабораторные работы: ​Развертывание кластера предприятия ​====+  * [[https://​habr.com/​ru/​companies/​slurm/​articles/​783708/​|Что происходит,​ когда вы создаёте Pod в Kubernetes?​]] 
 +==== Теория через лабораторные работы: ​Управление объектами Kubernetes ​====
  
-=== 3.1 Подготовка узлов === 
  
-  * Добавляем DNS записи kubeN A 192.168.X.220+N в [[Сервис DNS#​Настройка мастер сервера зоны corpX.un]] +==== 2.1 deployment, service, проверка статуса поданастройка лимитов ​====
-  * Настройка IP на kube1-4 ( через [[Сервис DHCP]]) +
-  * Настройка файлов конфигурации сети через Ansible([[Сервис Ansible#Настройка ​групп управляемых систем]], [[Сервис Ansible#​Настройка транспорта ssh]] и [[Сервис Ansible#​Использование ролей]] +
-  * [[Сервис Ansible#​Использование модулей]] для отключения swap на kube1-4+
  
-=== 3.2 Развертывание кластера ===+  * Запуск и доступ к приложениям в k8s 
  
-  * [[Система Kubernetes#​Развертывание через Kubespray]]+  * [[https://​kubernetes.io/​docs/​tasks/​inject-data-application/​define-environment-variable-container/​|Define Environment Variables for a Container]] 
 +  * [[https://​kubernetes.io/​docs/​concepts/​workloads/​pods/​sidecar-containers/​|Sidecar Containers]] 
 +  * [[https://​www.kryukov.biz/​kubernetes/​lokalnye-volumes/​emptydir/​|emptyDir]] 
 +  * [[https://​kubernetes.io/​docs/​tasks/​configure-pod-container/​configure-liveness-readiness-startup-probes/​|Configure Liveness, Readiness and Startup Probes]]
  
-=== 3.3 Управление кластером === 
  
-  ​[[Система Kubernetes#​Добавление ​узла через Kubespray]] +<​code>​ 
-  * [[Система Kubernetes#Добавление ​insecure_registries через Kubespray]]+kube1:~# mkdir pywebd-k8s;​cd $_ 
 +</​code>​ 
 +  ​!!! Можно начать с использования ​образа gowebd, а потом усложнить 
 +  * [[Система Kubernetes#​Deployment]]  
 +  * [[Система Kubernetes#Service]], [[Система Kubernetes#​ClusterIP]] 
 +  * Предоставляем доступ к приложниям в k8s по [[Система Kubernetes#​NodePort]]
  
-==== Вопросы ====+<​code>​ 
 +kube1:​~/​pywebd-k8s#​ kubectl -n my-ns exec -ti pods/​my-webd-<​TAB>​ -- sh
  
-===== Модуль 4: Разработка и CI приложения =====+~ $ kill -STOP 16
  
-==== Теория ====+kube1:​~/​pywebd-k8s#​ kubectl get pods -n my-ns --watch 
 +</​code>​
  
-==== Лабораторные работы:​ Разработка и CI приложения ​====+==== 2.2 volumes, nodeAffinity,​ helm ====
  
-  * Разворачиваем систему client1 ​для разработчика ([[Настройка сети в Linux]]) +  * Хранение данных приложений ​в k8s
-  * [[Настройка командных ​интерпретаторов]]+
  
-=== 4.1 Разработка приложения и упаковка его в Docker образ ===+  * [[Система Kubernetes#​hostPath и nodeSelector]] (lifecycle и initContainers снова пригодятся на следующем шаге) 
 +  * [[Система Kubernetes#​Установка ​Helm]] на kube1 (**делаем ​все**) 
 +  * [[Система Kubernetes#​PersistentVolume и PersistentVolumeClaim]] (убрать nodeSelector)
  
-  * Как student@client1 +  * Можно ​показать [[Система ​Kubernetes#rancher local-path-provisioner]]
-  * [[Язык ​программирования Golang]] +
-  * [[Технология Docker]], [[Технология Docker#​Предоставление прав непривилегированным пользователям]],​ [[Технология Docker#Dockerfile Multistage Building]] на client1+
  
-=== 4.2 Размещение кода и образа приложения в GitLab === 
  
-  * [[Инструмент GitLab#​Установка через docker-compose]] GitLab 
-  * Создаем и подключаемся учетной записью student ([[Инструмент GitLab#​Управление пользователями]] GitLab) 
-  * Можно использовать ключи ssh ([[Сервис SSH#​Настройка ssh клиента]]) 
-  * Создаем новый публичный проект gowebd без Readme и копируем инструкции из подсказки 
-  * Перед git push... отключаем Auto DevOps и !!! проверить еще раз после push 
-  * [[Сервис Git#​Обновление сетевого репозитория из локального]] 
  
-  * [[Инструмент GitLab#​GitLab Docker Registry]] +==== 2.3 ingress ====
-  * Docker [[Технология Docker#​Insecure Private Registry]] на client1 для проверки,​ можно использовать подсказки из раздела container_registry а затем удалить образ из GitLab+
  
-  * [[Инструмент GitLab#Установка в виде контейнера]] gitlab-runner на gate +  * Предоставляем доступ ​к приложниям в k8s по URL
-  * Включаем [[Технология Docker#​Insecure Private Registry]] (можно [[Сервис SSH#SCP]] c client1), ​копируем "​Registration token" для gitlab-runner в режиме [[Инструмент GitLab#​Регистрация DooD]]+
  
-  * Добавляем в проект [[Инструмент GitLab#Пример CI с использованием контейнеров]] и используем Git тэги ([[Сервис Git#​Обновление сетевого репозитория из локального]]для сборки Docker образов+  * Вариант [[Система Kubernetes#​Ingress baremetal DaemonSet]] (**делаем все**)
  
-  * Останавливаем, очищаем конфигурацию [[Инструмент GitLab#Установка в виде контейнера]] gitlab-runner на gate +  * [[Система ​Kubernetes#Deployment]] ​с emptyDir для ​демонстрации балансировки
-  * Удаляем Runner в GitLab +
-  * [[Технология Docker#Обзор и удаление]] образов gowebd c gate (может понадобиться -f) +
-  * Отключаем [[Технология Docker#​Insecure Private Registry]]+
  
-  * Повторяем [[Инструмент GitLab#Установка в виде контейнера]] gitlab-runner на gate +<​code>​ 
-  * Копируем "​Registration token" для gitlab-runner в режиме ​[[Инструмент GitLab#​Регистрация DinD]] +server.corpX.un:​~cat /​etc/​bind/​corpX.un 
-  * Добавляем необходимые для DinD элементы конфигурации в [[Инструмент GitLab#Пример CI с использованием контейнеров]]+</​code><​code>​ 
 +... 
 +pywebd ​ A       ​192.168.X.221 
 +        A       ​192.168.X.222 
 +        A       ​192.168.X.223 
 +... 
 +</​code>​ 
 +  * [[Система ​Kubernetes#ingress example]]
  
 +<​code>​
 +$ curl http://​pywebd.corpX.un
 +</​code>​
  
-=== 4.3 Сборка образа в k8s === 
  
-8 DEVOPS2+==== 2.4 configmap, secret ====
  
-  * После того, как ​пройдем helm +  * Управление ​конфигурацией и доступ ​к приложеням в k8s по https
-  * Останавливаем gitlab-runner ​на gate и удаляем его из проекта gowebd +
-  * [[Система Kubernetes#​Работа с публичными репозиториями]] на примере gitlab-runner +
-  * [[Инструмент GitLab#​Пример CI с использованием контейнеров]] ​в k8s+
  
-==== Вопросы ​====+  * Добавляем ssl в приложение на [[Язык программирования Python]] (в venv2, ​с конфигурацией (скопируем в k8s) и проверки работоспособности) 
 +<​code>​ 
 +$ curl --connect-to "":"":​server.corpX.un:​4443 https://​pywebd.corpX.un 
 +</​code>​ 
 +  * Создаем Docker образ ver1.2 для [[Технология Docker#​Приложение python pywebd]] 
 +  * Push-им в Gitlab и делаем проект приватным
  
-===== Модуль 5: CD приложения =====+  * [[Система Kubernetes#​ConfigMap,​ Secret]]
  
-==== Теория ====+  * [[Система Kubernetes#​LoadBalancer]]
  
-==== Лабораторные работыCD приложения ====+  * [[Система Kubernetes#​Service]] LoadBalancer,​ port443, targetPort: 4443
  
 +<​code>​
 +$ curl --connect-to "":"":​192.168.X.64:​443 https://​pywebd.corp24.un
  
 +server# cat /​etc/​bind/​corpX.un
 +</​code><​code>​
 +...
 +pywebd ​         A       ​192.168.X.64
 +...
 +</​code>​
  
-=== 5.1 Вручную ===+  * Тестируем с win client https://​pywebd.corpX.un/​ 
 +  * Удаляем my-ns 
 +  * Удаляем [[Система Kubernetes#​LoadBalancer]]
  
-5 DEVOPS2 
  
-  * С node1 разворачиваем gowebd используя [[Система Kubernetes#​namespace ​для своего приложения]] (меняем имя образа,​ не меняем имена файлов манифестов и метки),​ потребуется выполнить следующий шаг +===== Модуль ​3. Создание ​CI/CD в kubernetes =====
-  * [[Система 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]]+
  
-=== 5.2 GitOps === 
  
-6 DEVOPS2+==== 3.1 Запуск gitlab-runner в kubernetes ==== 
 + 
 +  * Сделать общий [[Система Kubernetes#​gitlab-runner kubernetes]] с тегом "​build"​ 
 + 
 + 
 +==== 3.2 Сборка докер контейнера в kubernetes ==== 
 + 
 +  * Добавляем [[Инструмент GitLab#​Пример CI с использованием контейнеров]] в каталог gowebd на server 
 +  * Используя "​подсказки"​ размещаем проект в GitLab 
 +  * В GitLab наблюдаем сборку образа  
 +  * В GitLab добавляем тег ver1.1 и проверяем наличие образов 
 + 
 +==== 3.3 Разворачивание нужной версии приложения в kubernetes ====
  
-  * Воспроизводим и качественно продолжаем то, на чем остановились на 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>​ <​code>​
-gitlab-runner@server:~/gowebd-k8s$ ​git remote add origin http://​server.corpX.un/​student/​gowebd-k8s.git+kube1:~# mkdir gowebd-k8s;cd $_
 </​code>​ </​code>​
-  * Проводим ​[[Инструмент GitLab#Регистрация]] gitlab runner в этом проекте (вариант из командной строки) +  * [[Система Kubernetes#Deployment]] ver1.1 
-  * Настраиваем зависимость между проектами через stage deploy в [[Инструмент GitLab#​Пример CI с использованием контейнеров]] +  * [[Система ​Kubernetes#​Service]], ​[[Система ​Kubernetes#​ClusterIP]] 
-  * Увеличиваем версию, добавляем соответствующий тег, проверяем+ 
 +  * В GitLab создаем версию ​ver1.2 и назначаем тэг
 <​code>​ <​code>​
-$ curl https://​gowebd.corpX.un -k+kube1:~/gowebd-k8s# cp my-webd-deployment.yaml my-webd-deployment-env.yaml 
 + 
 +kube1:~/gowebd-k8s# cat my-webd-deployment-env.yaml 
 +</​code><​code>​ 
 +... 
 +        image: server.corpX.un:​5000/​student/​gowebd:​$VER 
 +... 
 +</​code><​code>​ 
 +kube1:​~/​gowebd-k8s# export VER=ver1.2 
 + 
 +kube1:​~/​gowebd-k8s#​ envsubst < my-webd-deployment-env.yaml | kubectl apply -f - -n my-ns 
 + 
 +kubeN# curl my-webd.my-ns.svc.cluster.local
 </​code>​ </​code>​
  
-=== 5.3 Helm ===+  * Устанавливаем из dpkg [[Инструмент GitLab#​GitLab Runner]] на server и регистрируем как общий с тегом "​k8s-deploy"​ и shell executor 
 +  * Устанавливаем [[Система Kubernetes#​Инструмент командной строки kubectl]] на server 
 +  * Настраиваем [[Система Kubernetes#​Подключение к кластеру]] для пользователя gitlab-runner на server
  
-8 DEVOPS2+  * Преподаватель демонстрирует 
 +  * Настраиваем stage deploy через envsubst используя [[Инструмент GitLab#​Пример shell Kubernetes]] 
 +  * Создаем проект gowebd-k8s (без Readme) 
 +  * Деплоим нужную версию в ручную (New Pipeeline MY_WEBD_VER=ver1.1) 
 +  * Преподаватель удаляет проект gowebd-k8s
  
   * [[Система Kubernetes#​Удаление объектов]] (весь namespace)   * [[Система Kubernetes#​Удаление объектов]] (весь namespace)
-  * [[Система Kubernetes#​Установка Helm]] 
-  * Использование [[Система Kubernetes#​Управление дополнениями через Kubespray]] для включения Helm 
   * [[Система Kubernetes#​Развертывание своего приложения]] (webd-chart с образом gowebd)   * [[Система Kubernetes#​Развертывание своего приложения]] (webd-chart с образом gowebd)
-  * Настраиваем stage deploy через helm ([[Инструмент GitLab#​Пример shell Kubernetes]],​ см. выше) +
-  * [[Система Kubernetes#​Работа со своим репозиторием]] для развертывания приложения на kube кластере +
-  * Настраиваем DNS на кластер kube+
 <​code>​ <​code>​
-server# cat /​etc/​bind/​corpX.un+server.corpX.un:~# cat /​etc/​bind/​corpX.un 
 +</​code><​code>​
 ... ...
-webd            ​A       ​192.168.X.222 +gowebd ​ A       ​192.168.X.221 
-                A       ​192.168.X.223 +        ​A       ​192.168.X.222 
-gowebd ​         CNAME   webd+        A       ​192.168.X.223
 ... ...
 +</​code><​code>​
 +$ curl http://​gowebd.corpX.un
 </​code>​ </​code>​
-  * Возвращаем DNS на кластер node 
-  * Лабораторная работа 4.3 
  
-=== 5.4 ArgoCD ​===+  * [[Система Kubernetes#​Установка Helm]] на server  
 +<​code>​ 
 +gitlab-runner@server:​~$ helm list -n my-ns 
 +</​code>​ 
 + 
 +  * Настраиваем 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 пакета (будет использоваться в дополнительном материале) 
 +===== Модуль 4Дополнительные материалы ===== 
 + 
 +==== 4.1 Доступ к приложениям в Bare-Metal Kubernetes ==== 
 + 
 +  * Удаляем NS my-ns 
 + 
 +  * "​Хором"​ в классе можно выполнить шаги 10, 12, 13 
 + 
 +  * В формате "​Открытого/​Персонального обучения":​ 
 + 
 +  * Удаляем [[Система Kubernetes#​Ingress baremetal DaemonSet]] в вебинаре будет повтор через helm) 
 + 
 +<​code>​ 
 +server:~# ssh-copy-id gate 
 +</​code>​ 
 + 
 +  * Видео [[Доступ к приложениям в Bare-Metal Kubernetes]] с 00:28:30 до 01:39:00 
 + 
 + 
 +==== 4.2 Стратегии деплоя в Kubernetes ==== 
 + 
 +  * Видео [[Стратегии деплоя в Kubernetes]] (выполняем работы с 00:05:30 до конца) 
 + 
 +==== 4.3 Работа с хранилищами в Kubernetes и восстановление после аварии ====
  
-!!! ВНИМАНИЕ !!! Вместо 9-го фрагмента записи (его лучше просто просмотреть) рекомендую ​выполнить ​лабораторные работы из вебинара [[https://​youtu.be/​oIczkkD-hOU|Доступ к приложениям в Bare-Metal Kubernetes]], там есть все что нужно, плюс, много дополнительного материала ​!!!+  * “Хором” в классе можно выполнить ​[[Система Kubernetes#​Добавление узла через Kubespray]] ипараллельно, ​шаги 4, 5, 3, можнодобавить ​мониторинг (VictoriaMetrics Cluster), перед аварией узла
  
-  * [[Система Kubernetes#Работа со своим ​репозиторием]] для удаления приложения с kube кластера +  * Видео ​[[Работа с хранилищами в Kubernetes]] (выполняем работы с 00:​04:​00 ​до конца)
-  * Настраиваем DNS на кластер kube +
-  * Используем [[Контроллер ArgoCD]] на kube кластере ​для деплоя приложения+
  
-=== 5.5 Работа с хранилищами в Kubernetes ===+==== 4.4 Продолжение восстановления после ​аварии и Обновление кластера ​Kubernetes ​====
  
-!!! Если есть "настрой", ​можно выполнить ​лабораторные работы из этого вебинара:​+  “Хором” в классе можно выполнить ​шаг 4
  
-  * [[https://​www.youtube.com/​watch?​v=-5_XB4EcU9s|Работа с хранилищами в Kubernetes]] +  * Видео ​[[Обновление кластера Kubernetes]] ​
-==== Вопросы ====+
  
 +выполняем работы: ​
  
 +  * с 00:09:10 до 00:34:25 (восстанавливаем etcd)
 +  * с 00:48:55 до 00:51:25 (добавляем kube3 как worker)
 +  * с 00:54:50 до 01:03:33 (обновляем кластер)
  
 +==== 4.5 Мониторинг кластера Kubernetes ====
  
 +  * Видео [[Мониторинг кластера Kubernetes]] (выполняем работы с 00:04:50 до конца)
devops2._использование_kubernetes.1720617278.txt.gz · Last modified: 2024/07/10 16:14 by val