DoskaДокументация
Документация / Работа в Doska

Схемы из инфраструктуры

Постройте схему из Terraform, манифестов Kubernetes или docker-compose, найдите расхождения доски с реальностью и проверьте сеть.

Doska рисует инфраструктуру по файлам, которые её описывают: state Terraform, манифестам Kubernetes и docker-compose. Потом она подсказывает, когда доска перестала совпадать с этими файлами, и находит рискованные сетевые настройки. Страница для инженеров, которым нужна схема архитектуры, построенная из кода, а не нарисованная один раз и забытая.

Схема AWS, построенная из Terraform: регион, VPC, подсети и сервисы

Поддерживаемые источники

ИсточникЧто передать Doska
TerraformВывод terraform show -json (state или сохранённый план) или сырой terraform.tfstate
KubernetesYAML-манифесты: несколько файлов, несколько документов через ---, вывод helm template, kind: List
Docker Composedocker-compose.yml или compose.yaml

Тип файла определяется автоматически, размер одного файла — до 25 МБ. Doska не подключается к кластеру или облачному аккаунту и не хранит kubeconfig и ключи: файлы готовите вы или CI.

Как подготовить файлы

bash
# Terraform: текущее состояние
terraform show -json > state.json

# Terraform: план, ещё до применения
terraform plan -out plan.out
terraform show -json plan.out > plan.json

# Kubernetes: развернуть Helm-чарт в обычные манифесты
helm template ./chart > manifests.yaml

Для Docker Compose подойдёт ваш docker-compose.yml как есть. Если инфраструктура разбита на стеки (сеть, кластер, базы), выгрузите каждый: каждый файл станет своей схемой на той же доске.

Как построить схему

  1. Откройте доску и выберите «Схема из инфраструктуры…» в меню доски.
  2. Перетащите файлы, выберите их или вставьте текст.
  3. Выберите «Детализацию»: «Обзор» или «Подробно».
  4. В блоке «Что сделать» выберите «Построить схему» (или «Обновить схему», если этот источник уже импортировали) и подтвердите.

Схема создаётся как код D2. Его можно открыть в панели кода, поправить и двигать фигуры, как в любой диаграмме из кода.

Обзор и подробный вид

РежимЧто видно
ОбзорТолько основные ресурсы. Маршруты становятся стрелками (подсеть → NAT gateway, Internet gateway, роутер), listener'ы и target group'ы — прямыми стрелками (балансировщик → инстанс).
ПодробноПлюс security group'ы, таблицы маршрутов, prefix list'ы, роли и похожие ресурсы. Они собраны в рамке «Вспомогательные ресурсы» внутри своего VPC или региона.

Обвязка — маршруты, associations, attachments, правила, listener'ы — никогда не рисуется прямоугольниками: из неё получаются стрелки.

Что получается

  • Terraform: рамки AWS Cloud, региона, VPC, зон доступности (если подсети лежат в двух зонах и больше), публичных и приватных подсетей. Ресурс попадает в свою подсеть по subnet_id, vpc_config и похожим ссылкам, базы и кэши — через subnet group. Иконки AWS есть для EC2, Lambda, RDS и Aurora, DynamoDB, S3, SQS и SNS, балансировщиков, API Gateway, CloudFront, ECS и EKS, ElastiCache и других. Экземпляры count в одной подсети сворачиваются в один узел, например «web ×2». Трафик через балансировщики, очереди и топики показан прямыми стрелками.
  • Kubernetes: namespace становится рамкой; Deployment, StatefulSet, DaemonSet, Job и CronJob — узлами с числом реплик («×3»). Стрелки: Service → workload, Ingress и HTTPRoute → Service с хостом и путём, workload → ConfigMap, Secret или PVC, HPA → цель. ConfigMap, Secret, RBAC, NetworkPolicy и PDB в обзоре скрыты.
  • Docker Compose: сервисы — узлы с образом и портами, стрелки из depends_on и links, рамка для сети сервиса, именованные тома в подробном виде.

Что сохраняется

На доску попадают только имена, типы и связи. Значения атрибутов — пароли, переменные окружения, содержимое Secret — не сохраняются нигде. При импорте в браузере файлы читаются на вашем компьютере, через API они разбираются в памяти сервера.

Для проверки сети Doska также хранит диапазоны CIDR, порты и протоколы из Terraform: это описание сети, а не секреты.

Повторный импорт сохраняет раскладку

У каждого узла сгенерированной схемы стабильный ключ, например aws_instance_web или deployment_api. Повторный импорт того же источника обновляет ту же схему на месте: сдвинутые фигуры остаются там, где вы их поставили, изменённые цвета сохраняются. Окно импорта само предлагает схему, с которой у файла больше всего общих ресурсов, или создать новую.

Расхождения с реальностью

Каждый элемент сгенерированной схемы привязан к своему ресурсу, например tf:aws_instance.web. Значок инфраструктуры в верхней панели показывает число расхождений и открывает панель «Инфраструктура»:

  • «Нет на доске» — реальные ресурсы, которых нет на схеме.
  • «Больше не существуют» — элементы, привязанные к ресурсам, которых уже нет. На холсте они обведены красным.
  • «Связи, которых нет на доске» и «Связи, которых нет в инфраструктуре».
  • «Перестроить схему» обновляет сгенерированную схему по последнему импорту.

Проверить можно и нарисованную вручную схему. Импортируйте файлы в режиме «Только проверить доску»: доска не изменится, а файлы станут эталоном. Затем нажмите «Подобрать привязки», чтобы сопоставить фигуры и ресурсы по именам и иконкам, или привяжите отдельную фигуру через «⋯» → «Привязать к ресурсу…».

Проверка из CI

Запускайте проверку после каждого apply или деплоя с токеном доступа уровня «Редактирование». С notify: true на доске появится комментарий, когда схема устареет; одинаковый комментарий подряд не повторяется.

bash
helm template ./chart > manifests.yaml
curl -fsS -X POST "https://getdoska.top/api/v1/boards/$BOARD_ID/infra/check" \
  -H "Authorization: Bearer $DOSKA_TOKEN" -H "Content-Type: application/json" \
  --data "$(jq -Rs '{content: ., notify: true}' manifests.yaml)" | jq -e '.drift.inSync'

Чтобы перестраивать схему после каждого terraform apply, отправляйте файл в /infra/import. Оба эндпоинта описаны в справочнике API.

Проверка сети

После импорта Terraform в панели «Инфраструктура» появляется раздел «Сеть». Он показывает, сколько найдено VPC, подсетей и security groups, и отмечает проблемы:

  • VPC с пересекающимися диапазонами адресов (их не соединить пирингом);
  • подсеть вне диапазона своей VPC;
  • пересекающиеся подсети;
  • security group, которая открывает SSH (22), RDP (3389) или порт базы данных (PostgreSQL, MySQL, SQL Server, Redis, MongoDB, Elasticsearch, etcd) для 0.0.0.0/0, или все порты всему интернету.

Может ли достучаться?

Выберите «Откуда» (интернет или ресурс), «Куда», протокол и порт. Doska проверяет по шагам:

  1. Маршрут: та же VPC, а для трафика из интернета — публичная подсеть и публичный адрес.
  2. Исходящие правила security groups источника.
  3. Входящие правила security groups цели.

Ответ — «Доступ есть», «Доступа нет» или «По этому импорту не понять» с указанием шага, на котором трафик проходит или режется. Если выделить на доске два ресурса, они подставятся сами. Network ACL, пиринг VPC и transit gateway пока не учитываются.

Ограничения

  • Связи берутся из ссылок между ресурсами. Трафик, который не описан в коде (например, сервис ходит в базу по DNS-имени из переменной), Doska не видит.
  • План Terraform без state знает только ссылки из конфигурации, но не ID ресурсов.
  • Конфигурации больше 1500 ресурсов лучше импортировать по модулям или в обзорном режиме.

Всё это Claude умеет делать через MCP: импортировать файлы из папки, проверять расхождения и отвечать, может ли A достучаться до B. Подробнее — в разделе Claude и MCP.