This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
devops1._основные_инструменты [2025/07/31 05:42] val |
devops1._основные_инструменты [2026/02/10 11:40] (current) val [Теория] |
||
|---|---|---|---|
| Line 19: | Line 19: | ||
| * [[https://landscape.cncf.io/]] | * [[https://landscape.cncf.io/]] | ||
| - | * [[https://dzen.ru/a/ZVIBk2kT0ntemhwK|∞ Дорожная карта DevOps-инженера в 2023 году]] | + | * [[https://habr.com/ru/companies/nixys/articles/514098/|С чего начать DevOps?]] |
| + | * [[https://dzen.ru/a/ZVIBk2kT0ntemhwK|Дорожная карта DevOps-инженера в 2023 году]] | ||
| * Ссылки в разделе [[Сервис Git]] | * Ссылки в разделе [[Сервис Git]] | ||
| - | |||
| ==== Лабораторные работы: Развертывание стенда и инициализация репозитория Git ==== | ==== Лабораторные работы: Развертывание стенда и инициализация репозитория Git ==== | ||
| Line 101: | Line 101: | ||
| * [[Сервис Git]], команды git -C /etc/ ..., log, show, diff, reset | * [[Сервис Git]], команды git -C /etc/ ..., log, show, diff, reset | ||
| + | |||
| + | ===== Практикум ===== | ||
| + | |||
| + | * [[https://val.bmstu.ru/~val/pract/dev1/dev1_mod1_pract.mp4|Запись практикума]] (длительность: 16 минут) | ||
| ==== Вопросы ==== | ==== Вопросы ==== | ||
| Line 117: | Line 121: | ||
| === 2.1 Собираем docker контейнер === | === 2.1 Собираем docker контейнер === | ||
| - | * [[Технология Docker#Установка]] Docker из базового репозитория на **server** и из репозитория вендора на **gate** | + | * [[Технология Docker#Установка]] Docker из базового репозитория на **server** и из репозитория вендора на **gate** (!!! Обратитесь к преподавателю по поводу версии !!!) |
| !!! Методическая рекомендация, запустить установку Golang на gate из этой лабораторной работы 2.1.3 | !!! Методическая рекомендация, запустить установку Golang на gate из этой лабораторной работы 2.1.3 | ||
| Line 164: | Line 168: | ||
| * Можно показать "кубернетес" - [[Сервис HTTP#Прокси "красивого" URL в приложение (пример 3)|Использование прокси Nginx]] для доступа к приложению (если установился GitLab) | * Можно показать "кубернетес" - [[Сервис HTTP#Прокси "красивого" URL в приложение (пример 3)|Использование прокси Nginx]] для доступа к приложению (если установился GitLab) | ||
| + | |||
| + | ===== Практикум ===== | ||
| + | |||
| + | * [[https://val.bmstu.ru/~val/pract/dev1/dev1_mod2_pract.mp4|Запись практикума]] (длительность: 11 минут) | ||
| ==== Вопросы ==== | ==== Вопросы ==== | ||
| Line 206: | Line 214: | ||
| * Обсудить варианты [[Сервис Ansible#Использование handlers]] | * Обсудить варианты [[Сервис Ansible#Использование handlers]] | ||
| * Развертывание кластера приложения с [[Сервис Ansible#Использование ролей]] Ansible (практикум, в конце запустить установку GitLab) | * Развертывание кластера приложения с [[Сервис Ansible#Использование ролей]] Ansible (практикум, в конце запустить установку GitLab) | ||
| + | |||
| + | ===== Практикум ===== | ||
| + | |||
| + | * [[https://val.bmstu.ru/~val/pract/dev1/dev1_mod3_pract.mp4|Запись практикума]] (длительность: 19 минут) | ||
| ==== Вопросы ==== | ==== Вопросы ==== | ||
| Line 244: | Line 256: | ||
| * Используя GitLab Pipeline Editor добавляем в проект openvpn1 [[Инструмент GitLab#Пример shell ansible]] Pipeline и наблюдаем "выкатку" в "прод" после Commit в ветку main | * Используя GitLab Pipeline Editor добавляем в проект openvpn1 [[Инструмент GitLab#Пример shell ansible]] Pipeline и наблюдаем "выкатку" в "прод" после Commit в ветку main | ||
| + | |||
| + | ===== Практикум ===== | ||
| + | |||
| + | * [[https://val.bmstu.ru/~val/pract/dev1/dev1_mod4_pract.mp4|Запись практикума]] (длительность: 13 минут) | ||
| ==== Вопросы ==== | ==== Вопросы ==== | ||
| Line 309: | Line 325: | ||
| * [[Технология Docker#Обзор и удаление]] (преподавателю можно всех) образов c gate | * [[Технология Docker#Обзор и удаление]] (преподавателю можно всех) образов c gate | ||
| * Отключаем [[Технология Docker#Insecure Private Registry]] | * Отключаем [[Технология Docker#Insecure Private Registry]] | ||
| + | * Для загрузки docker:dind может понадобиться [[Технология Docker#Настройка registry-mirrors]] хоста на котором работает gitlab-runner | ||
| * Повторяем [[Инструмент GitLab#Установка в виде контейнера]] gitlab-runner на gate | * Повторяем [[Инструмент GitLab#Установка в виде контейнера]] gitlab-runner на gate | ||
| * Используем [[Инструмент GitLab#Регистрация DinD]] для добавления runner в проект gowebd | * Используем [[Инструмент GitLab#Регистрация DinD]] для добавления runner в проект gowebd | ||
| * Добавляем необходимые для DinD элементы конфигурации в [[Инструмент GitLab#Пример CI с использованием контейнеров]] | * Добавляем необходимые для DinD элементы конфигурации в [[Инструмент GitLab#Пример CI с использованием контейнеров]] | ||
| + | |||
| + | ===== Практикум ===== | ||
| + | |||
| + | * [[https://val.bmstu.ru/~val/pract/dev1/dev1_mod5_pract.mp4|Запись практикума]] (длительность: 23 минуты) | ||
| + | |||
| + | <code> | ||
| + | gate# | ||
| + | |||
| + | docker stop gitlab-runner | ||
| + | |||
| + | apt purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin | ||
| + | |||
| + | apt autoremove | ||
| + | |||
| + | rm /etc/apt/sources.list.d/docker.sources | ||
| + | |||
| + | apt update | ||
| + | |||
| + | apt install docker.io | ||
| + | |||
| + | docker run -d --name gitlab-runner --restart always \ | ||
| + | -v /srv/gitlab-runner/config:/etc/gitlab-runner \ | ||
| + | -v /var/run/docker.sock:/var/run/docker.sock \ | ||
| + | gitlab/gitlab-runner:latest | ||
| + | </code> | ||
| + | |||
| + | * Файл из папки \\share\student\val | ||
| + | <code> | ||
| + | stages: | ||
| + | - build | ||
| + | - test | ||
| + | - push | ||
| + | # - deploy | ||
| + | |||
| + | before_script: | ||
| + | - env | ||
| + | - echo -n $CI_REGISTRY_PASSWORD | docker login -u $CI_REGISTRY_USER --password-stdin $CI_REGISTRY | ||
| + | |||
| + | Build: | ||
| + | stage: build | ||
| + | script: | ||
| + | - docker pull $CI_REGISTRY_IMAGE:latest || true | ||
| + | - > | ||
| + | docker build | ||
| + | --pull | ||
| + | --cache-from $CI_REGISTRY_IMAGE:latest | ||
| + | --tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA | ||
| + | . | ||
| + | - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA | ||
| + | |||
| + | except: | ||
| + | - tags | ||
| + | |||
| + | Smoke test: | ||
| + | stage: test | ||
| + | script: | ||
| + | - MY_ID=$(docker run -d --rm $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA) | ||
| + | - MY_IP=$(docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $MY_ID) | ||
| + | - docker run --rm alpine/curl -sS $MY_IP | ||
| + | - docker stop $MY_ID | ||
| + | except: | ||
| + | - tags | ||
| + | |||
| + | Push latest: | ||
| + | variables: | ||
| + | GIT_STRATEGY: none | ||
| + | stage: push | ||
| + | only: | ||
| + | - main | ||
| + | script: | ||
| + | - docker pull $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA | ||
| + | - docker tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA $CI_REGISTRY_IMAGE:latest | ||
| + | - docker push $CI_REGISTRY_IMAGE:latest | ||
| + | |||
| + | Push tag: | ||
| + | variables: | ||
| + | GIT_STRATEGY: none | ||
| + | stage: push | ||
| + | only: | ||
| + | - tags | ||
| + | script: | ||
| + | - docker pull $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA | ||
| + | - docker tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME | ||
| + | - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME | ||
| + | |||
| + | |||
| + | #Deploy: | ||
| + | # variables: | ||
| + | # VER: "$CI_COMMIT_REF_NAME" | ||
| + | # stage: deploy | ||
| + | # only: | ||
| + | # - tags | ||
| + | # trigger: | ||
| + | # project: student/gowebd-k8s | ||
| + | </code> | ||
| * Увеличиваем версию и наблюдаем сборку образа с тэгом commit hash | * Увеличиваем версию и наблюдаем сборку образа с тэгом commit hash | ||
| * Можно продемонстрировать Lint test, добавив лишнюю переменную в коде | * Можно продемонстрировать Lint test, добавив лишнюю переменную в коде | ||
| * Используем Git тэги ([[Сервис Git#Обновление сетевого репозитория из локального]] или Code->Tags) для указания версии Docker образов (практикум, в конце запустить установку MiniKube) | * Используем Git тэги ([[Сервис Git#Обновление сетевого репозитория из локального]] или Code->Tags) для указания версии Docker образов (практикум, в конце запустить установку MiniKube) | ||
| + | |||
| ==== Вопросы ==== | ==== Вопросы ==== | ||
| Line 351: | Line 464: | ||
| </code> | </code> | ||
| * Можно показать все, используя Web IDE | * Можно показать все, используя Web IDE | ||
| + | |||
| + | ===== Практикум ===== | ||
| + | |||
| + | * [[https://val.bmstu.ru/~val/pract/dev1/dev1_mod6_pract.mp4|Запись практикума]] (длительность: 13 минут) | ||
| + | |||
| ==== Вопросы ==== | ==== Вопросы ==== | ||
| Line 386: | Line 504: | ||
| * Перед "Шаг 3": перенести home-computer в LAN, назанчить IP .200 из сети 192.168.X.0/24 и считать ее "домашней сетью" | * Перед "Шаг 3": перенести home-computer в LAN, назанчить IP .200 из сети 192.168.X.0/24 и считать ее "домашней сетью" | ||
| * Шаг 4 - в режиме просмотра | * Шаг 4 - в режиме просмотра | ||
| + | |||
| + | ==== 7.5 Ansible Vault ==== | ||
| + | |||
| + | * [[Сервис Ansible#ansible-vault]] и GitLab [[Инструмент GitLab#Пример shell ansible]] | ||