iac/docs/architecture/contour-profile.example.json

87 lines
7.4 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"_комментарий": "Профиль контура: всё, что зависит от конкретной инсталляции. Значения здесь — ПРИМЕР. Для реального контура скопируйте файл, подставьте настоящие имена и держите копию вне репозитория.",
"model": {
"name": "СДЕ Sarex — типовой контур (пример)",
"purpose": "Технологический слой типового контура. Имена кластера, узлов, доменов и реестра заменены на примеры. Прикладной слой присутствует только как потребители технологических сервисов — межсервисные связи приложений моделируются отдельно."
},
"cluster": {
"name": "Кластер k8s-prod",
"doc": "clusters/<contour>/kustomization.yaml. Развёртывание через FluxCD v2 (GitOps)."
},
"software": [
{ "id": "ss-istio-gw", "name": "Istio Ingress Gateway", "doc": "Ingress-контроллер, публикует контур наружу через NodePort." },
{ "id": "ss-istio-mesh", "name": "Istio Service Mesh", "doc": "chart istio-config-contour. Gateway, VirtualService, RequestAuthentication." },
{ "id": "ss-certmanager", "name": "cert-manager", "doc": "Выпуск сертификатов. В примере — самоподписанный ClusterIssuer, wildcard на домен контура." },
{ "id": "ss-zitadel", "name": "Zitadel", "doc": "chart idp-contour, ns zitadel. Основной поставщик идентичности." },
{ "id": "ss-vault", "name": "Vault + Agent Injector", "doc": "chart vault-contour, ns vault. Единственный механизм доставки секретов, путь secrets/data/apps/<app>/postgres." },
{ "id": "ss-postgres", "name": "PostgreSQL", "doc": "chart postgresql-contour, ns postgresql. PVC на сетевом хранилище." },
{ "id": "ss-redis", "name": "Redis", "doc": "Разворачивается не во всех контурах и не для всех приложений." },
{ "id": "ss-kafka", "name": "Kafka", "doc": "chart kafka-contour, ns kafka." },
{ "id": "ss-rabbit", "name": "RabbitMQ", "doc": "chart rabbitmq-contour, ns rabbitmq." },
{ "id": "ss-camunda", "name": "Camunda Platform", "doc": "chart camunda-contour, ns camunda. Воркеры прикладных сервисов подключаются к Zeebe-gateway как job-workers, HTTP-часть ходит в Operate. Переменные ZEEBE_*/CAMUNDA_* приходят из k8s-секрета, поэтому в манифестах не видны." }
],
"camunda_sub": ["Zeebe", "Zeebe Gateway", "Operate", "Tasklist", "Optimize", "Identity", "Connectors"],
"external": [
{ "id": "nd-s3", "name": "s3.example.com — объектное хранилище", "doc": "Внешнее по отношению к кластеру.", "realizes": "ts-object" },
{ "id": "nd-nfs", "name": "Сетевое хранилище (StorageClass)", "doc": "Класс хранения для PVC.", "serves": "ss-postgres" },
{ "id": "nd-gitea", "name": "Git-сервер контура", "doc": "Источник манифестов для Flux.", "serves": "cluster" },
{ "id": "nd-cr", "name": "registry.example.com", "doc": "Реестр Helm-чартов (OCI) и образов контейнеров.", "serves": "cluster",
"artifacts": [
{ "id": "ar-charts", "name": "Helm-чарты (OCI)" },
{ "id": "ar-images", "name": "Образы контейнеров" }
] }
],
"frontend_node": {
"id": "nd-frontend",
"name": "frontend-node-01",
"doc": "Выделенный узел, к которому ingress-gateway прибит через nodeSelector.",
"assigned_to": "ss-istio-gw"
},
"_узлы": "Группы узлов из инвентаря серверов. runs_software — id из software/external, runs_apps — имена приложений; группа с \"runs_apps\": \"*\" забирает все приложения, не заявленные другими группами. Необязательный hosts позволяет раскрыть группу до отдельных хостов, если такой список появится.",
"node_groups": [
{ "id": "ng-processing", "name": "Группа узлов processing (Сервера приложений)",
"runs_apps": ["processing"] },
{ "id": "ng-app", "name": "Группа узлов generic (Сервера приложений)",
"runs_apps": "*" },
{ "id": "ng-storage", "name": "Объектное хранилище",
"runs_software": ["nd-s3"] },
{ "id": "ng-db", "name": "Группа узлов DB (Базы данных)",
"runs_software": ["ss-postgres"] },
{ "id": "ng-k8s", "name": "Группа узлов K8s (Поддерживающая инфраструктура)",
"runs_software": ["ss-istio-gw", "ss-istio-mesh", "ss-certmanager", "ss-zitadel",
"ss-vault", "ss-redis", "ss-kafka", "ss-rabbit", "ss-camunda"] },
{ "id": "ng-repo", "name": "Репозиторий компонентов",
"doc": "Реестр Helm-чартов и образов + Git-сервер контура, из которого Flux читает манифесты. Состав требует подтверждения.",
"runs_software": ["nd-cr", "nd-gitea"] },
{ "id": "ng-cad", "name": "CAD ферма",
"doc": "Состав не выведен из репозитория — заполнить вручную: какие сервисы и ПО работают на этой группе узлов." }
],
"services": [
{ "id": "ts-ingress", "name": "Маршрутизация HTTPS-трафика", "realizers": ["ss-istio-gw", "ss-istio-mesh"], "key": "istio" },
{ "id": "ts-tls", "name": "Выпуск TLS-сертификатов", "realizers": ["ss-certmanager"], "key": null, "serves_software": "ss-istio-gw" },
{ "id": "ts-oidc", "name": "Аутентификация OIDC", "realizers": ["ss-zitadel"], "key": "oidc" },
{ "id": "ts-secrets", "name": "Управление секретами", "realizers": ["ss-vault"], "key": "vault" },
{ "id": "ts-rdbms", "name": "Реляционное хранилище", "realizers": ["ss-postgres"], "key": "postgres" },
{ "id": "ts-cache", "name": "Кэш", "realizers": ["ss-redis"], "key": "redis" },
{ "id": "ts-events", "name": "Событийная шина", "realizers": ["ss-kafka"], "key": "kafka" },
{ "id": "ts-amqp", "name": "Очередь сообщений AMQP", "realizers": ["ss-rabbit"], "key": "rabbitmq" },
{ "id": "ts-bpmn", "name": "Оркестрация процессов BPMN", "realizers": ["ss-camunda"], "key": "camunda" },
{ "id": "ts-object", "name": "Объектное хранилище", "realizers": ["nd-s3"], "key": "s3" }
]
}