8.5 KiB
Дополнительные вопросы к Opus 4.8
Контекст: ты уже проанализировал проект (3006_0.md). Ниже — уточняющие вопросы на основе новых данных, полученных после твоего анализа. Всё в режиме Plan — только чтение файлов, никаких правок.
Вопрос 1: Расхождение версий — откуда 5.0.55?
Ты отметил что кодовая база содержит версии 5.0.51 (universal_rebuild/main.go) и 5.0.52 (main.go Legacy). Но регистр terra.k8c.ru отдаёт 93 версии до 5.0.55.
Задача: прочитай devops/profiles/prod/profile.env, devops/profiles/test/profile.env, devops/03_build_and_upload_provider.sh. Проверь — откуда брались версии 5.0.53, 5.0.54, 5.0.55? Это ручные билды? Или автоматические из CI? Где в коде хранится текущая версия universal-провайдера (кроме main.go)?
Связанный вопрос: HISTORY/OPUS/3006_0.md — твой анализ — какая версия в нём указана? Соответствует ли она версии на регистре?
Вопрос 2: Полный аудит фильтрации isDeleted
Ты верно заметил что FindInstanceByDisplayName починен в 5.0.50, но все ли функции, обращающиеся к /instances, фильтруют deleted?
Задача: прочитай universal_rebuild/internal/core/refsvc_resolve.go и universal_rebuild/internal/core/client.go. Составь полный список ВСЕХ функций, которые делают GET-запросы к /instances (любым способом). Для каждой проверь:
- Есть ли
isDeleted=falseв URL - Есть ли проверка
isDeletedв коде после ответа - Если нет ни того ни другого — это потенциальный баг класса #21/22/23
Особое внимание функции findInstanceUidByDisplayNameRefSvc — ты её упомянул в анализе. Проверь её сигнатуру и тело.
Вопрос 3: Gitea 413 — проблема с пушем
Мы сегодня обнаружили что git push на gitea-naeel.giteak8s.services.ngcloud.ru падает с HTTP 413 (nginx client_max_body_size = 1 MB). Даже пакет в 2 MB режется.
Задача: проверь в репозитории:
charts/— есть ли там Helm-чарт для Gitea? Где конфигурируется nginx?k8s/— есть ли манифесты Gitea с ingress/nginx аннотациями?.github/— есть ли CI-пайплайны, которые деплоят Gitea?devops/ci/— конфигурация CI
Можно ли увеличить client_max_body_size через существующие манифесты/чарты в репо? Или это внешняя конфигурация?
Вопрос 4: Suspend-способные сервисы — полный список
Твой анализ упоминает что hasSuspend определяет suspendOnDestroyDefault. Но какие именно сервисы поддерживают suspend?
Задача: прочитай universal_rebuild/resources_yaml/embed.go и все YAML-файлы в universal_rebuild/resources_yaml/ (или в devops/profiles/prod/generated/resources_yaml/ если есть). Составь:
- Полный список сервисов, у которых есть операция
kind: instance, action: suspend - Полный список сервисов, у которых есть операция
kind: instance, action: resume - Есть ли сервисы, где suspend есть, а resume нет (или наоборот)? Это баг?
- Для каждого suspend-способного сервиса проверь: совпадает ли
suspend_on_destroy_defaultв YAML с тем что вычисляется вservice_spec_gen(hasSuspend → true)?
Вопрос 5: Terraform Operator — состояние и health
Мы сегодня проверили кластер iot-naeel (через ВМ 5.172.178.213). В namespace terra три deployment'а:
registry-server— Running 81dterraform-operator— Running 2d (перезапускался!)cloud-dashboard— Running 74d
Задача: прочитай в репозитории:
k8s/— манифесты для registry-server и operator'аcharts/— Helm-чарты если естьoperator/— код оператораregistry-server-build/— код registry-сервера
Ответь:
- Почему
terraform-operatorперезапустился 2 дня назад (30 июня), а остальные 81 день? Он крашился? - Достаточно ли трёх deployment'ов для полноценного registry? Не хватает ли docs-server'а (судя по
devops/04_build_and_publish_docs.sh)? - Где хранятся GPG-ключи для подписи в кластере? Как operator получает доступ к S3?
- Есть ли в репо конфигурация S3-бакета для хранения артефактов?
Вопрос 6: Тестовые стенды — что реально используется?
В репозитории есть:
TEST_STAND/— LUCEE, MARIA_DB, POSTGRES, S3_EVENT_FUNCTION_POCPROD_STAND/— PG1, POSTGRES, RABBITRABBIT/— отдельный тест RabbitMQ
Задача: прочитай *.tf файлы в этих директориях и определи:
- Какие стенды реально используются (судя по датам файлов и содержимому)?
- Какой провайдер используется — Legacy (
registry.terraform.io/nubes/nubes) или Universal (terra.k8c.ru/nubes/nubes)? - Есть ли расхождения между стендами (разные версии провайдера, разные подходы)?
TEST_STAND/POSTGRES/— не дублирует ли онPROD_STAND/POSTGRES/?
Вопрос 7: auth.k8s.ngcloud.ru — как работает аутентификация?
Для доступа к кластеру мы используем токен от auth.k8s.ngcloud.ru (Keycloak realm shturval).
Задача: найди в репозитории любые упоминания auth.k8s.ngcloud.ru, keycloak, shturval. Есть ли:
- Конфигурация OIDC для кластера?
- Скрипты обновления токена?
- Инструкции по получению kubeconfig?
- Связанные HAR-файлы (
HAR/keycloak.nubes.ru.har)?
Вопрос 8: Неиспользуемые PVC и orphan-ресурсы в кластере
Мы нашли в кластере iot-naeel:
default/storage-check-local(100Mi) — тестовый PVC без подаdefault/storage-check-vcd(10Gi) — тестовый PVC без пода509145c3-.../postgresqlk8s— statefulset 0/0 уже 28 дней, но сервисы и PVC висятdc5db45d-.../postgresqlk8s— statefulset 0/0 уже 28 дней, но сервисы и PVC висят
Задача: проверь в репозитории:
- Есть ли Terraform-конфиги, создававшие эти PVC (
storage-check-*)? - Есть ли в
docs/илиHISTORY/упоминания о проблемах с PostgreSQL в этих тенантах? - Может ли
terraform-operatorбыть причиной появленияstorage-check-*PVC (тестовые ресурсы оператора)?
Формат ответа
На каждый вопрос: находка → файлы (конкретные строки) → вывод → рекомендация. Если вопрос нельзя решить только чтением файлов репозитория — так и напиши, что нужно посмотреть за пределами репо (на кластере, в API).