From d32ca54f7b2be4b255aa8b07fc561797cb5407df Mon Sep 17 00:00:00 2001 From: Sergey Antropoff Date: Wed, 22 Oct 2025 13:23:01 +0300 Subject: [PATCH] =?UTF-8?q?feat:=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D1=8B=20=D1=80=D0=B0=D1=81=D1=88=D0=B8=D1=80=D0=B5?= =?UTF-8?q?=D0=BD=D0=BD=D1=8B=D0=B5=20=D0=BF=D1=80=D0=B5=D1=81=D0=B5=D1=82?= =?UTF-8?q?=D1=8B=20=D0=B4=D0=BB=D1=8F=20Kubernetes,=20DinD=20=D0=B8=20DOo?= =?UTF-8?q?D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Создано 11 новых пресетов для различных конфигураций - Kubernetes пресеты: single, multi-cluster, istio-full - DinD пресеты: simple, swarm, compose - DOoD пресеты: simple, mixed - Смешанные пресеты: k8s+dind, k8s+dood, full-stack Kubernetes пресеты: - k8s-single.yml - одиночный Kind кластер - k8s-multi.yml - мульти-кластерная конфигурация (dev/staging/prod) - k8s-istio-full.yml - полный стек Istio с мониторингом DinD пресеты: - dind-simple.yml - 3 изолированных Docker среды - dind-swarm.yml - Docker Swarm кластер (1 manager + 4 workers) - dind-compose.yml - 4 DinD контейнера для Compose стека DOoD пресеты: - dood-simple.yml - 3 DOoD контейнера с доступом к Docker daemon - dood-mixed.yml - смешанная конфигурация DOoD + systemd Смешанные пресеты: - mixed-k8s-dind.yml - Kubernetes + DinD - mixed-k8s-dood.yml - Kubernetes + DOoD - mixed-full.yml - полная гибридная конфигурация Обновлена документация: - README с описанием всех 21 пресета - Категоризация по типам (классические, k8s, dind, dood, смешанные) - Примеры использования для каждого пресета - Рекомендации по выбору подходящего пресета Автор: Сергей Антропов Сайт: https://devops.org.ru --- .cursor/commands/docs.md | 0 README-UNIVERSAL-LAB.md | 46 +++++++++++++ molecule/presets/README.md | 78 ++++++++++++++++++++- molecule/presets/dind-compose.yml | 58 ++++++++++++++++ molecule/presets/dind-simple.yml | 51 ++++++++++++++ molecule/presets/dind-swarm.yml | 65 ++++++++++++++++++ molecule/presets/dood-mixed.yml | 89 ++++++++++++++++++++++++ molecule/presets/dood-simple.yml | 57 ++++++++++++++++ molecule/presets/k8s-istio-full.yml | 55 +++++++++++++++ molecule/presets/k8s-multi.yml | 81 ++++++++++++++++++++++ molecule/presets/k8s-single.yml | 46 +++++++++++++ molecule/presets/mixed-full.yml | 102 ++++++++++++++++++++++++++++ molecule/presets/mixed-k8s-dind.yml | 69 +++++++++++++++++++ molecule/presets/mixed-k8s-dood.yml | 75 ++++++++++++++++++++ 14 files changed, 871 insertions(+), 1 deletion(-) create mode 100644 .cursor/commands/docs.md create mode 100644 molecule/presets/dind-compose.yml create mode 100644 molecule/presets/dind-simple.yml create mode 100644 molecule/presets/dind-swarm.yml create mode 100644 molecule/presets/dood-mixed.yml create mode 100644 molecule/presets/dood-simple.yml create mode 100644 molecule/presets/k8s-istio-full.yml create mode 100644 molecule/presets/k8s-multi.yml create mode 100644 molecule/presets/k8s-single.yml create mode 100644 molecule/presets/mixed-full.yml create mode 100644 molecule/presets/mixed-k8s-dind.yml create mode 100644 molecule/presets/mixed-k8s-dood.yml diff --git a/.cursor/commands/docs.md b/.cursor/commands/docs.md new file mode 100644 index 0000000..e69de29 diff --git a/README-UNIVERSAL-LAB.md b/README-UNIVERSAL-LAB.md index 52eee0d..8d4267b 100644 --- a/README-UNIVERSAL-LAB.md +++ b/README-UNIVERSAL-LAB.md @@ -96,6 +96,7 @@ make lab-reset ### 4. Пресеты для разных сценариев +#### 🏗️ Классические пресеты (systemd контейнеры) ```bash # Минимальная лаборатория (1-3 машины) make lab-test LAB_SPEC=molecule/presets/minimal.yml @@ -128,6 +129,51 @@ make lab-test LAB_SPEC=molecule/presets/enterprise.yml make lab-test LAB_SPEC=molecule/presets/maximum.yml ``` +#### ☸️ Kubernetes пресеты +```bash +# Kubernetes Single Node (1 кластер) +make lab-test LAB_SPEC=molecule/presets/k8s-single.yml + +# Kubernetes Multi-Cluster (3 кластера) +make lab-test LAB_SPEC=molecule/presets/k8s-multi.yml + +# Kubernetes + Istio Full Stack (1 кластер с полным стеком) +make lab-test LAB_SPEC=molecule/presets/k8s-istio-full.yml +``` + +#### 🐳 Docker-in-Docker (DinD) пресеты +```bash +# DinD Simple (3 DinD контейнера) +make lab-test LAB_SPEC=molecule/presets/dind-simple.yml + +# DinD Swarm (5 DinD контейнеров) +make lab-test LAB_SPEC=molecule/presets/dind-swarm.yml + +# DinD Compose (4 DinD контейнера) +make lab-test LAB_SPEC=molecule/presets/dind-compose.yml +``` + +#### 🔗 Docker-outside-of-Docker (DOoD) пресеты +```bash +# DOoD Simple (3 DOoD контейнера) +make lab-test LAB_SPEC=molecule/presets/dood-simple.yml + +# DOoD Mixed (5 DOoD + 2 systemd) +make lab-test LAB_SPEC=molecule/presets/dood-mixed.yml +``` + +#### 🔀 Смешанные пресеты +```bash +# Mixed Kubernetes + DinD (1 K8s + 3 DinD) +make lab-test LAB_SPEC=molecule/presets/mixed-k8s-dind.yml + +# Mixed Kubernetes + DOoD (1 K8s + 3 DOoD) +make lab-test LAB_SPEC=molecule/presets/mixed-k8s-dood.yml + +# Mixed Full Stack (1 K8s + 2 DinD + 2 DOoD + 2 systemd) +make lab-test LAB_SPEC=molecule/presets/mixed-full.yml +``` + ### 3. Работа с Kubernetes ```bash diff --git a/molecule/presets/README.md b/molecule/presets/README.md index 647fe0e..b8355e5 100644 --- a/molecule/presets/README.md +++ b/molecule/presets/README.md @@ -10,7 +10,9 @@ ## Доступные пресеты -### 1. Минимальная лаборатория (1-3 машины) +### 🏗️ Классические пресеты (systemd контейнеры) + +#### 1. Минимальная лаборатория (1-3 машины) **Файл:** `minimal.yml` **Описание:** Базовая конфигурация для простых тестов Ansible ролей **Компоненты:** 1 контроллер, 1 веб-сервер, 1 база данных @@ -70,6 +72,80 @@ **Компоненты:** Все компоненты enterprise + трассировка + визуализация **Использование:** `make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/maximum.yml` +### ☸️ Kubernetes пресеты + +#### 11. Kubernetes Single Node (1 кластер) +**Файл:** `k8s-single.yml` +**Описание:** Одиночный Kind кластер для простого тестирования K8s ролей +**Компоненты:** 1 Kind кластер с 1 worker, базовые аддоны +**Использование:** `make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/k8s-single.yml` + +#### 12. Kubernetes Multi-Cluster (3 кластера) +**Файл:** `k8s-multi.yml` +**Описание:** Несколько Kind кластеров для тестирования мульти-кластерных сценариев +**Компоненты:** 3 кластера (dev, staging, prod) с различными конфигурациями +**Использование:** `make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/k8s-multi.yml` + +#### 13. Kubernetes + Istio Full Stack (1 кластер с полным стеком) +**Файл:** `k8s-istio-full.yml` +**Описание:** Полноценный Kubernetes кластер с полным стеком Istio +**Компоненты:** 1 Kind кластер с 3 workers, Istio, Kiali, Prometheus, Grafana, Jaeger +**Использование:** `make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/k8s-istio-full.yml` + +### 🐳 Docker-in-Docker (DinD) пресеты + +#### 14. DinD Simple (3 DinD контейнера) +**Файл:** `dind-simple.yml` +**Описание:** Простая конфигурация DinD для тестирования Docker ролей +**Компоненты:** 3 DinD контейнера с изолированными Docker средами +**Использование:** `make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/dind-simple.yml` + +#### 15. DinD Swarm (5 DinD контейнеров) +**Файл:** `dind-swarm.yml` +**Описание:** Docker Swarm кластер для тестирования оркестрации +**Компоненты:** 1 Manager + 4 Worker узла в Docker Swarm режиме +**Использование:** `make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/dind-swarm.yml` + +#### 16. DinD Compose (4 DinD контейнера) +**Файл:** `dind-compose.yml` +**Описание:** DinD контейнеры для тестирования Docker Compose стека +**Компоненты:** 4 DinD контейнера с различными стеками +**Использование:** `make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/dind-compose.yml` + +### 🔗 Docker-outside-of-Docker (DOoD) пресеты + +#### 17. DOoD Simple (3 DOoD контейнера) +**Файл:** `dood-simple.yml` +**Описание:** Простая конфигурация DOoD для тестирования Docker ролей +**Компоненты:** 3 DOoD контейнера с доступом к Docker daemon хоста +**Использование:** `make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/dood-simple.yml` + +#### 18. DOoD Mixed (5 DOoD + 2 systemd) +**Файл:** `dood-mixed.yml` +**Описание:** Смешанная конфигурация DOoD и systemd контейнеров +**Компоненты:** 5 DOoD контейнеров для Docker операций + 2 systemd для системных ролей +**Использование:** `make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/dood-mixed.yml` + +### 🔀 Смешанные пресеты + +#### 19. Mixed Kubernetes + DinD (1 K8s + 3 DinD) +**Файл:** `mixed-k8s-dind.yml` +**Описание:** Смешанная конфигурация Kubernetes и Docker-in-Docker +**Компоненты:** 1 Kind кластер + 3 DinD контейнера +**Использование:** `make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/mixed-k8s-dind.yml` + +#### 20. Mixed Kubernetes + DOoD (1 K8s + 3 DOoD) +**Файл:** `mixed-k8s-dood.yml` +**Описание:** Смешанная конфигурация Kubernetes и Docker-outside-of-Docker +**Компоненты:** 1 Kind кластер + 3 DOoD контейнера +**Использование:** `make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/mixed-k8s-dood.yml` + +#### 21. Mixed Full Stack (1 K8s + 2 DinD + 2 DOoD + 2 systemd) +**Файл:** `mixed-full.yml` +**Описание:** Полная смешанная конфигурация для комплексного тестирования +**Компоненты:** 1 Kind кластер + 2 DinD + 2 DOoD + 2 systemd контейнера +**Использование:** `make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/mixed-full.yml` + ## Использование ### Быстрый старт diff --git a/molecule/presets/dind-compose.yml b/molecule/presets/dind-compose.yml new file mode 100644 index 0000000..a5d8568 --- /dev/null +++ b/molecule/presets/dind-compose.yml @@ -0,0 +1,58 @@ +--- +# ПРЕСЕТ: Docker-in-Docker Compose (4 DinD контейнера) +# +# Описание: DinD контейнеры для тестирования Docker Compose стека +# - 4 DinD контейнера с различными стеками +# - Тестирование multi-container приложений +# - Различные версии Docker Compose +# +# Использование: make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/dind-compose.yml +# +# Автор: Сергей Антропов +# Сайт: https://devops.org.ru + +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: compose-web + type: dind + group: compose + publish: + - "2375:2375" # Docker API + - "8080:80" # Web port + + - name: compose-api + type: dind + group: compose + publish: + - "2376:2375" # Docker API + - "8081:3000" # API port + + - name: compose-db + type: dind + group: compose + publish: + - "2377:2375" # Docker API + - "8082:5432" # DB port + + - name: compose-cache + type: dind + group: compose + publish: + - "2378:2375" # Docker API + - "8083:6379" # Cache port diff --git a/molecule/presets/dind-simple.yml b/molecule/presets/dind-simple.yml new file mode 100644 index 0000000..5f51dbc --- /dev/null +++ b/molecule/presets/dind-simple.yml @@ -0,0 +1,51 @@ +--- +# ПРЕСЕТ: Docker-in-Docker Simple (3 DinD контейнера) +# +# Описание: Простая конфигурация DinD для тестирования Docker ролей +# - 3 DinD контейнера с различными конфигурациями +# - Изолированные Docker среды +# - Тестирование Docker Compose, Docker Swarm +# +# Использование: make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/dind-simple.yml +# +# Автор: Сергей Антропов +# Сайт: https://devops.org.ru + +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: dind1 + type: dind + group: dind + publish: + - "2375:2375" # Docker API + - "8080:8080" # App port + + - name: dind2 + type: dind + group: dind + publish: + - "2376:2375" # Docker API + - "8081:8080" # App port + + - name: dind3 + type: dind + group: dind + publish: + - "2377:2375" # Docker API + - "8082:8080" # App port diff --git a/molecule/presets/dind-swarm.yml b/molecule/presets/dind-swarm.yml new file mode 100644 index 0000000..907452e --- /dev/null +++ b/molecule/presets/dind-swarm.yml @@ -0,0 +1,65 @@ +--- +# ПРЕСЕТ: Docker-in-Docker Swarm (5 DinD контейнеров) +# +# Описание: Docker Swarm кластер для тестирования оркестрации +# - 1 Manager + 4 Worker узла +# - Docker Swarm режим +# - Тестирование сервисов, стеков, секретов +# +# Использование: make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/dind-swarm.yml +# +# Автор: Сергей Антропов +# Сайт: https://devops.org.ru + +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: swarm-manager + type: dind + group: swarm + publish: + - "2375:2375" # Docker API + - "8080:8080" # App port + + - name: swarm-worker1 + type: dind + group: swarm + publish: + - "2376:2375" # Docker API + - "8081:8080" # App port + + - name: swarm-worker2 + type: dind + group: swarm + publish: + - "2377:2375" # Docker API + - "8082:8080" # App port + + - name: swarm-worker3 + type: dind + group: swarm + publish: + - "2378:2375" # Docker API + - "8083:8080" # App port + + - name: swarm-worker4 + type: dind + group: swarm + publish: + - "2379:2375" # Docker API + - "8084:8080" # App port diff --git a/molecule/presets/dood-mixed.yml b/molecule/presets/dood-mixed.yml new file mode 100644 index 0000000..b0ccd24 --- /dev/null +++ b/molecule/presets/dood-mixed.yml @@ -0,0 +1,89 @@ +--- +# ПРЕСЕТ: Docker-outside-of-Docker Mixed (5 DOoD + 2 systemd) +# +# Описание: Смешанная конфигурация DOoD и systemd контейнеров +# - 5 DOoD контейнеров для Docker операций +# - 2 systemd контейнера для системных ролей +# - Тестирование гибридных сценариев +# +# Использование: make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/dood-mixed.yml +# +# Автор: Сергей Антропов +# Сайт: https://devops.org.ru + +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: + # DOoD контейнеры + - name: dood-web + type: dood + family: debian + group: dood + publish: + - "8080:80" + env: + DOCKER_HOST: "unix:///var/run/docker.sock" + + - name: dood-api + type: dood + family: rhel + group: dood + publish: + - "8081:3000" + env: + DOCKER_HOST: "unix:///var/run/docker.sock" + + - name: dood-db + type: dood + family: debian + group: dood + publish: + - "8082:5432" + env: + DOCKER_HOST: "unix:///var/run/docker.sock" + + - name: dood-cache + type: dood + family: rhel + group: dood + publish: + - "8083:6379" + env: + DOCKER_HOST: "unix:///var/run/docker.sock" + + - name: dood-queue + type: dood + family: debian + group: dood + publish: + - "8084:5672" + env: + DOCKER_HOST: "unix:///var/run/docker.sock" + + # Systemd контейнеры + - name: systemd-monitor + family: rhel + group: monitoring + publish: + - "9090:9090" + + - name: systemd-logs + family: debian + group: logging + publish: + - "5601:5601" diff --git a/molecule/presets/dood-simple.yml b/molecule/presets/dood-simple.yml new file mode 100644 index 0000000..522e476 --- /dev/null +++ b/molecule/presets/dood-simple.yml @@ -0,0 +1,57 @@ +--- +# ПРЕСЕТ: Docker-outside-of-Docker Simple (3 DOoD контейнера) +# +# Описание: Простая конфигурация DOoD для тестирования Docker ролей +# - 3 DOoD контейнера с доступом к Docker daemon хоста +# - Тестирование Docker ролей без изоляции +# - Различные семейства ОС +# +# Использование: make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/dood-simple.yml +# +# Автор: Сергей Антропов +# Сайт: https://devops.org.ru + +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: dood1 + type: dood + family: debian + group: dood + publish: + - "8080:8080" # App port + env: + DOCKER_HOST: "unix:///var/run/docker.sock" + + - name: dood2 + type: dood + family: rhel + group: dood + publish: + - "8081:8080" # App port + env: + DOCKER_HOST: "unix:///var/run/docker.sock" + + - name: dood3 + type: dood + family: debian + group: dood + publish: + - "8082:8080" # App port + env: + DOCKER_HOST: "unix:///var/run/docker.sock" diff --git a/molecule/presets/k8s-istio-full.yml b/molecule/presets/k8s-istio-full.yml new file mode 100644 index 0000000..f310a27 --- /dev/null +++ b/molecule/presets/k8s-istio-full.yml @@ -0,0 +1,55 @@ +--- +# ПРЕСЕТ: Kubernetes + Istio Full Stack (1 кластер с полным стеком) +# +# Описание: Полноценный Kubernetes кластер с полным стеком Istio +# - 1 Kind кластер с 3 workers +# - Полный Istio service mesh с Kiali +# - Prometheus + Grafana для мониторинга +# - Jaeger для трассировки +# - Все аддоны включены +# +# Использование: make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/k8s-istio-full.yml +# +# Автор: Сергей Антропов +# Сайт: https://devops.org.ru + +docker_network: labnet + +kind_clusters: + - name: istio-full + workers: 3 + api_port: 6443 + addons: + ingress_nginx: true + metrics_server: true + istio: true + kiali: true + prometheus_stack: true + ingress_host_http_port: 8081 + ingress_host_https_port: 8443 + +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: k8s-controller + group: controllers + family: debian + publish: + - "6443:6443" + - "9090:9090" # Prometheus + - "3000:3000" # Grafana + - "16686:16686" # Jaeger + - "20001:20001" # Kiali diff --git a/molecule/presets/k8s-multi.yml b/molecule/presets/k8s-multi.yml new file mode 100644 index 0000000..5a3d098 --- /dev/null +++ b/molecule/presets/k8s-multi.yml @@ -0,0 +1,81 @@ +--- +# ПРЕСЕТ: Kubernetes Multi-Cluster (3 кластера) +# +# Описание: Несколько Kind кластеров для тестирования мульти-кластерных сценариев +# - 3 Kind кластера: dev, staging, prod +# - Различные конфигурации для каждого окружения +# - Полный стек мониторинга и service mesh +# +# Использование: make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/k8s-multi.yml +# +# Автор: Сергей Антропов +# Сайт: https://devops.org.ru + +docker_network: labnet + +kind_clusters: + - name: dev + workers: 1 + api_port: 6443 + addons: + ingress_nginx: true + metrics_server: true + ingress_host_http_port: 8081 + ingress_host_https_port: 8443 + + - name: staging + workers: 2 + api_port: 6444 + addons: + ingress_nginx: true + metrics_server: true + istio: true + kiali: true + ingress_host_http_port: 8082 + ingress_host_https_port: 8444 + + - name: prod + workers: 3 + api_port: 6445 + addons: + ingress_nginx: true + metrics_server: true + istio: true + kiali: true + prometheus_stack: true + ingress_host_http_port: 8083 + ingress_host_https_port: 8445 + +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: k8s-dev-controller + group: controllers + family: debian + publish: + - "6443:6443" + + - name: k8s-staging-controller + group: controllers + family: rhel + publish: + - "6444:6444" + + - name: k8s-prod-controller + group: controllers + family: debian + publish: + - "6445:6445" diff --git a/molecule/presets/k8s-single.yml b/molecule/presets/k8s-single.yml new file mode 100644 index 0000000..68f921c --- /dev/null +++ b/molecule/presets/k8s-single.yml @@ -0,0 +1,46 @@ +--- +# ПРЕСЕТ: Kubernetes Single Node (1 кластер) +# +# Описание: Одиночный Kind кластер для простого тестирования K8s ролей +# - 1 Kind кластер с 1 worker +# - Базовые аддоны: Ingress NGINX, Metrics Server +# - Простая конфигурация для быстрого старта +# +# Использование: make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/k8s-single.yml +# +# Автор: Сергей Антропов +# Сайт: https://devops.org.ru + +docker_network: labnet + +kind_clusters: + - name: single + workers: 1 + api_port: 6443 + addons: + ingress_nginx: true + metrics_server: true + ingress_host_http_port: 8081 + ingress_host_https_port: 8443 + +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: k8s-controller + group: controllers + family: debian + publish: + - "6443:6443" diff --git a/molecule/presets/mixed-full.yml b/molecule/presets/mixed-full.yml new file mode 100644 index 0000000..2a76379 --- /dev/null +++ b/molecule/presets/mixed-full.yml @@ -0,0 +1,102 @@ +--- +# ПРЕСЕТ: Mixed Full Stack (1 K8s + 2 DinD + 2 DOoD + 2 systemd) +# +# Описание: Полная смешанная конфигурация для комплексного тестирования +# - 1 Kind кластер с полным стеком +# - 2 DinD контейнера для изолированных сред +# - 2 DOoD контейнера для Docker операций +# - 2 systemd контейнера для системных ролей +# +# Использование: make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/mixed-full.yml +# +# Автор: Сергей Антропов +# Сайт: https://devops.org.ru + +docker_network: labnet + +kind_clusters: + - name: full-stack + workers: 3 + api_port: 6443 + addons: + ingress_nginx: true + metrics_server: true + istio: true + kiali: true + prometheus_stack: true + ingress_host_http_port: 8081 + ingress_host_https_port: 8443 + +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: + # Kubernetes контроллер + - name: k8s-controller + group: controllers + family: debian + publish: + - "6443:6443" + - "9090:9090" # Prometheus + - "3000:3000" # Grafana + - "16686:16686" # Jaeger + - "20001:20001" # Kiali + + # DinD контейнеры + - name: dind-dev + type: dind + group: dind + publish: + - "2375:2375" + - "8080:8080" + + - name: dind-prod + type: dind + group: dind + publish: + - "2376:2375" + - "8081:8080" + + # DOoD контейнеры + - name: dood-web + type: dood + family: debian + group: dood + publish: + - "8082:80" + env: + DOCKER_HOST: "unix:///var/run/docker.sock" + + - name: dood-api + type: dood + family: rhel + group: dood + publish: + - "8083:3000" + env: + DOCKER_HOST: "unix:///var/run/docker.sock" + + # Systemd контейнеры + - name: systemd-monitor + family: rhel + group: monitoring + publish: + - "9091:9090" + + - name: systemd-logs + family: debian + group: logging + publish: + - "5601:5601" diff --git a/molecule/presets/mixed-k8s-dind.yml b/molecule/presets/mixed-k8s-dind.yml new file mode 100644 index 0000000..f58b840 --- /dev/null +++ b/molecule/presets/mixed-k8s-dind.yml @@ -0,0 +1,69 @@ +--- +# ПРЕСЕТ: Mixed Kubernetes + DinD (1 K8s + 3 DinD) +# +# Описание: Смешанная конфигурация Kubernetes и Docker-in-Docker +# - 1 Kind кластер для оркестрации +# - 3 DinD контейнера для изолированных Docker сред +# - Тестирование гибридных сценариев +# +# Использование: make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/mixed-k8s-dind.yml +# +# Автор: Сергей Антропов +# Сайт: https://devops.org.ru + +docker_network: labnet + +kind_clusters: + - name: hybrid + workers: 2 + api_port: 6443 + addons: + ingress_nginx: true + metrics_server: true + ingress_host_http_port: 8081 + ingress_host_https_port: 8443 + +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: + # Kubernetes контроллер + - name: k8s-controller + group: controllers + family: debian + publish: + - "6443:6443" + + # DinD контейнеры + - name: dind-dev + type: dind + group: dind + publish: + - "2375:2375" + - "8080:8080" + + - name: dind-staging + type: dind + group: dind + publish: + - "2376:2375" + - "8081:8080" + + - name: dind-prod + type: dind + group: dind + publish: + - "2377:2375" + - "8082:8080" diff --git a/molecule/presets/mixed-k8s-dood.yml b/molecule/presets/mixed-k8s-dood.yml new file mode 100644 index 0000000..f98366b --- /dev/null +++ b/molecule/presets/mixed-k8s-dood.yml @@ -0,0 +1,75 @@ +--- +# ПРЕСЕТ: Mixed Kubernetes + DOoD (1 K8s + 3 DOoD) +# +# Описание: Смешанная конфигурация Kubernetes и Docker-outside-of-Docker +# - 1 Kind кластер для оркестрации +# - 3 DOoD контейнера для Docker операций +# - Тестирование гибридных сценариев +# +# Использование: make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/mixed-k8s-dood.yml +# +# Автор: Сергей Антропов +# Сайт: https://devops.org.ru + +docker_network: labnet + +kind_clusters: + - name: hybrid + workers: 2 + api_port: 6443 + addons: + ingress_nginx: true + metrics_server: true + ingress_host_http_port: 8081 + ingress_host_https_port: 8443 + +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: + # Kubernetes контроллер + - name: k8s-controller + group: controllers + family: debian + publish: + - "6443:6443" + + # DOoD контейнеры + - name: dood-web + type: dood + family: debian + group: dood + publish: + - "8080:80" + env: + DOCKER_HOST: "unix:///var/run/docker.sock" + + - name: dood-api + type: dood + family: rhel + group: dood + publish: + - "8081:3000" + env: + DOCKER_HOST: "unix:///var/run/docker.sock" + + - name: dood-db + type: dood + family: debian + group: dood + publish: + - "8082:5432" + env: + DOCKER_HOST: "unix:///var/run/docker.sock"