User Tools

Site Tools


devops1._основные_инструменты_2024

Differences

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

Link to this comparison view

Both sides previous revision Previous revision
devops1._основные_инструменты_2024 [2024/11/11 17:08]
val removed
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 -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]]
 +
 +
 +
 +
  
devops1._основные_инструменты_2024.1731334110.txt.gz · Last modified: 2024/11/11 17:08 by val