feat: Создана полная документация проекта с централизованным хранением

- Создан новый README.md с полной документацией проекта
- Перемещены все MD файлы в папку /docs
- Создана структура документации:
  - docs/universal-lab.md - руководство по лаборатории
  - docs/presets.md - описание всех 21 пресета
  - docs/roles.md - структура и создание Ansible ролей
  - docs/examples.md - практические примеры использования
  - docs/troubleshooting.md - решение проблем
  - docs/api.md - справочник по API

Основные возможности документации:
- Полное описание всех возможностей лаборатории
- 21 готовый пресет для различных сценариев
- Подробные инструкции по использованию
- Примеры создания собственных пресетов
- Руководство по созданию Ansible ролей
- Troubleshooting для решения проблем
- API Reference для всех команд и параметров

Структура проекта:
- README.md - основная документация с ссылками
- docs/ - централизованное хранение документации
- molecule/presets/ - 21 готовый пресет
- files/ - файлы для ролей и playbooks
- scripts/ - скрипты для управления лабораторией

Автор: Сергей Антропов
Сайт: https://devops.org.ru
This commit is contained in:
2025-10-22 13:29:47 +03:00
parent d32ca54f7b
commit 8071fba25f
8 changed files with 2511 additions and 52 deletions

462
docs/examples.md Normal file
View File

@@ -0,0 +1,462 @@
# Примеры использования
## Автор
Сергей Антропов
Сайт: https://devops.org.ru
## Описание
Этот документ содержит практические примеры использования универсальной лаборатории для различных сценариев тестирования Ansible ролей.
## Содержание
- [Базовые примеры](#базовые-примеры)
- [Kubernetes примеры](#kubernetes-примеры)
- [Docker примеры](#docker-примеры)
- [Смешанные примеры](#смешанные-примеры)
- [Мониторинг и отчеты](#мониторинг-и-отчеты)
- [Troubleshooting](#troubleshooting)
## Базовые примеры
### Пример 1: Тестирование веб-сервера
```bash
# Запустить веб-приложение пресет
make lab-test LAB_SPEC=molecule/presets/webapp.yml
# Проверить статус
make lab-verify
# Посмотреть отчет
make lab-report
```
### Пример 2: Тестирование базы данных
```bash
# Запустить пресет с базой данных
make lab-test LAB_SPEC=molecule/presets/ha.yml
# Проверить подключение к БД
make kube-cmd CLUSTER=lab CMD="exec -it postgres-0 -- psql -U postgres -c 'SELECT 1;'"
```
### Пример 3: Тестирование микросервисов
```bash
# Запустить микросервисный пресет
make lab-test LAB_SPEC=molecule/presets/microservices.yml
# Проверить API Gateway
curl http://localhost:8000/health
```
## Kubernetes примеры
### Пример 1: Простой Kubernetes кластер
```bash
# Запустить одиночный Kind кластер
make lab-test LAB_SPEC=molecule/presets/k8s-single.yml
# Войти в кластер
make kube-sh
# Проверить ноды
kubectl get nodes
# Проверить поды
kubectl get pods -A
```
### Пример 2: Мульти-кластерная конфигурация
```bash
# Запустить мульти-кластер
make lab-test LAB_SPEC=molecule/presets/k8s-multi.yml
# Переключиться между кластерами
kubectl config use-context kind-dev
kubectl get nodes
kubectl config use-context kind-staging
kubectl get nodes
kubectl config use-context kind-prod
kubectl get nodes
```
### Пример 3: Istio Service Mesh
```bash
# Запустить полный Istio стек
make lab-test LAB_SPEC=molecule/presets/k8s-istio-full.yml
# Port-forward Kiali
make kiali-port-forward CLUSTER=istio-full
# Port-forward Istio Gateway
make istio-gw-port-forward CLUSTER=istio-full
# Открыть Kiali
open http://localhost:20001
# Открыть Bookinfo
open http://localhost:8082/productpage
```
### Пример 4: Мониторинг Kubernetes
```bash
# Port-forward Grafana
make grafana-port-forward CLUSTER=istio-full
# Port-forward Prometheus
make prom-port-forward CLUSTER=istio-full
# Открыть Grafana
open http://localhost:3000
# Открыть Prometheus
open http://localhost:9090
```
## Docker примеры
### Пример 1: Docker-in-Docker
```bash
# Запустить DinD пресет
make lab-test LAB_SPEC=molecule/presets/dind-simple.yml
# Войти в DinD контейнер
docker exec -it dind1 sh
# Внутри контейнера проверить Docker
docker ps
docker images
```
### Пример 2: Docker Swarm
```bash
# Запустить Docker Swarm пресет
make lab-test LAB_SPEC=molecule/presets/dind-swarm.yml
# Войти в manager
docker exec -it swarm-manager sh
# Инициализировать Swarm
docker swarm init
# Присоединить workers
docker node ls
```
### Пример 3: Docker Compose
```bash
# Запустить Compose пресет
make lab-test LAB_SPEC=molecule/presets/dind-compose.yml
# Войти в compose контейнер
docker exec -it compose-web sh
# Создать docker-compose.yml
cat > docker-compose.yml << EOF
version: '3.8'
services:
web:
image: nginx:alpine
ports:
- "80:80"
api:
image: node:alpine
ports:
- "3000:3000"
EOF
# Запустить стек
docker-compose up -d
```
### Пример 4: Docker-outside-of-Docker
```bash
# Запустить DOoD пресет
make lab-test LAB_SPEC=molecule/presets/dood-simple.yml
# Войти в DOoD контейнер
docker exec -it dood1 sh
# Проверить доступ к Docker daemon хоста
docker ps
docker images
```
## Смешанные примеры
### Пример 1: Kubernetes + DinD
```bash
# Запустить смешанный пресет
make lab-test LAB_SPEC=molecule/presets/mixed-k8s-dind.yml
# Проверить Kubernetes
make kube-cmd CLUSTER=hybrid CMD="get nodes"
# Проверить DinD
docker exec -it dind-dev sh
docker ps
```
### Пример 2: Kubernetes + DOoD
```bash
# Запустить смешанный пресет
make lab-test LAB_SPEC=molecule/presets/mixed-k8s-dood.yml
# Проверить Kubernetes
make kube-cmd CLUSTER=hybrid CMD="get pods -A"
# Проверить DOoD
docker exec -it dood-web sh
docker ps
```
### Пример 3: Полная гибридная конфигурация
```bash
# Запустить полный смешанный пресет
make lab-test LAB_SPEC=molecule/presets/mixed-full.yml
# Проверить все компоненты
make kube-cmd CLUSTER=full-stack CMD="get nodes"
docker exec -it dind-dev sh
docker exec -it dood-web sh
```
## Мониторинг и отчеты
### Пример 1: Генерация HTML отчета
```bash
# Запустить тест
make lab-test LAB_SPEC=molecule/presets/enterprise.yml
# Сгенерировать отчет
make lab-report
# Открыть отчет
open reports/lab-report.html
```
### Пример 2: Снапшоты
```bash
# Создать снапшот
make lab-snapshot
# Восстановить из снапшота
make lab-restore
# Очистить лабораторию
make lab-cleanup
```
### Пример 3: Мониторинг в реальном времени
```bash
# Port-forward всех сервисов мониторинга
make grafana-port-forward CLUSTER=lab
make prom-port-forward CLUSTER=lab
make kiali-port-forward CLUSTER=lab
# Открыть все дашборды
open http://localhost:3000 # Grafana
open http://localhost:9090 # Prometheus
open http://localhost:20001 # Kiali
```
## Troubleshooting
### Пример 1: Проблемы с портами
```bash
# Проверить занятые порты
netstat -tulpn | grep :8080
# Остановить все port-forward
make kube-pf-stop
# Перезапустить лабораторию
make lab-reset
```
### Пример 2: Проблемы с Docker
```bash
# Проверить Docker daemon
docker ps
# Перезапустить Docker
sudo systemctl restart docker
# Очистить Docker
docker system prune -a
```
### Пример 3: Проблемы с Kubernetes
```bash
# Проверить Kind кластеры
kind get clusters
# Удалить проблемный кластер
kind delete cluster --name lab
# Пересоздать кластер
make lab-create
```
### Пример 4: Проблемы с ресурсами
```bash
# Проверить использование ресурсов
docker stats
# Ограничить ресурсы
docker run --memory=512m --cpus=1.0 your-image
# Очистить неиспользуемые ресурсы
make lab-cleanup
```
## Продвинутые примеры
### Пример 1: Создание собственного пресета
```bash
# Создать новый пресет
cat > molecule/presets/my-custom.yml << EOF
---
# ПРЕСЕТ: Мой кастомный пресет
#
# Описание: Кастомная конфигурация для моих нужд
#
# Использование: make lab-test LAB_SPEC=molecule/presets/my-custom.yml
docker_network: labnet
images:
debian: "ghcr.io/ansible-community/molecule-ubuntu-systemd:jammy"
rhel: "quay.io/centos/centos:stream9-systemd"
systemd_defaults:
privileged: true
command: "/sbin/init"
volumes:
- "/sys/fs/cgroup:/sys/fs/cgroup:ro"
tmpfs:
- "/run"
- "/run/lock"
capabilities:
- "SYS_ADMIN"
hosts:
- name: my-web
family: debian
group: webservers
publish:
- "8080:80"
- name: my-db
family: rhel
group: databases
publish:
- "5432:5432"
EOF
# Протестировать пресет
make lab-test LAB_SPEC=molecule/presets/my-custom.yml
```
### Пример 2: Создание собственной роли
```bash
# Создать структуру роли
mkdir -p roles/my-role/{tasks,handlers,templates,files,vars,defaults,meta}
# Создать основной task
cat > roles/my-role/tasks/main.yml << EOF
---
- name: Install nginx
package:
name: nginx
state: present
- name: Start nginx
service:
name: nginx
state: started
enabled: true
EOF
# Создать playbook
cat > files/playbooks/my-playbook.yml << EOF
---
- name: Deploy my role
hosts: webservers
become: true
roles:
- my-role
EOF
# Протестировать роль
make lab-test LAB_SPEC=molecule/presets/webapp.yml
```
### Пример 3: Интеграция с CI/CD
```bash
# Создать GitHub Actions workflow
cat > .github/workflows/test.yml << EOF
name: Test Ansible Roles
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup Docker
run: |
docker-compose up -d
- name: Run tests
run: |
make lab-test LAB_SPEC=molecule/presets/minimal.yml
- name: Generate report
run: |
make lab-report
- name: Upload report
uses: actions/upload-artifact@v3
with:
name: lab-report
path: reports/lab-report.html
EOF
```
## Заключение
Эти примеры демонстрируют основные возможности универсальной лаборатории. Для получения дополнительной информации обратитесь к [основной документации](universal-lab.md) и [описанию пресетов](presets.md).