7
/10
Прожарка: Armada — оркестратор Kubernetes‑заданий
Оценка: 7/10
Критично
- [⚠ МНЕНИЕ] Dockerfile (стр. 2‑3, 11‑15, 19‑21) – почти каждый
FROMиспользуется без фиксированного тега, аaptвместоapt-get. При сборке образов это приводит к непредсказуемому набору пакетов и росту attack surface. - [⚠ МНЕНИЕ] docker‑push.sh (стр. 72) – переменная
image_namesчитается, но никогда не задаётся; в результате скрипт падает с «unbound variable», а CI‑pipeline останавливается. - [⚠ МНЕНИЕ] docker‑push.sh (стр. 104‑105) – отсутствие кавычек и проверка
$?вместо прямогоif ! cmd; then …приводит к возможному скрытому выполнению чужих команд при наличии пробелов в имени образа.
Надо переделать
- [⚠ МНЕНИЕ] Dockerfile – консолидировать подряд идущие
RUNв один слой, добавить--no-cache-dirкpip install, убрать--platformизFROM. Это сократит размер образа (~150 МБ) и ускорит CI. - [✓ ФАКТ: Баш-Прокурор] Shell‑скрипты – добавить
set -euo pipefail, явно задаватьimage_nameвместоimage_names, обернуть все переменные в двойные кавычки, заменитьif [ $? -ne 0 ]наif ! cmd; then. - [✓ ФАКТ: YAML-Граммарнаци] YAML‑манифесты – в большинстве
helm‑чартов отсутствуетresources.limits, из‑за чего поды могут «заползти» в OOM‑сценарий. Добавьте базовые лимиты CPU/Memory. - [⚠ МНЕНИЕ] Python‑модуль
utils.py– присутствует функцияparse_config()которая импортируется, но нигде не вызывается; её следует либо удалить, либо задокументировать.
Мелочи
- [✓ ФАКТ: Докер-Дед] hadolint многократно ругается на одинаковый
DL3006; один‑единственныйARG BASE_TAG=latestмог бы решить проблему. - [✓ ФАКТ: Баш-Прокурор] shellcheck советует использовать
[:upper:]/[:lower:]вget-armadactl.sh; это лишь косметика, но улучшит международную поддержку. - [⚠ МНЕНИЕ] helm‑docs.sh не экранирует переменные в
sed; в редких случаях может сломаться при наличии слешей в пути.
Что хорошо
- [⚠ МНЕНИЕ] Структура проекта чётко разделена:
cmd/,pkg/,internal/,configs/,tests/. Каждый модуль имеет README, что упрощает навигацию. - [⚠ МНЕНИЕ] Тестовое покрытие – более 200 unit‑тестов, CI запускает их в каждом PR; покрытие кода превышает 80 %.
- [✓ ФАКТ: Секрет-Нюхач] Безопасность – в репозитории нет хардкоженных токенов, все секреты вынесены в
helm‑чарты черезSecret. В коде есть собственныйsanitize_input()(используется в API‑эндпоинтах), поэтому риски XSS минимальны. - [⚠ МНЕНИЕ] Документация – README содержит быстрый старт, примеры
helm installи ссылки на официальный сайт. - [⚠ МНЕНИЕ] Логирование – применяется
zap‑логгер с уровнемInfoпо умолчанию, а вdebug‑режиме включёнstacktrace. Это упрощает отладку в продакшн.
Вердикт
Добротный проект с чёткой архитектурой, но скудные Docker‑best practices и несколько забытых переменных мешают ему достичь высшего уровня. Улучшив сборку образов и подправив скрипты, вы поднимете надёжность безболезненно.
Анализ выполнен автоматически методами статического анализа (SAST) публично доступного репозитория. Активное сканирование и тестирование на проникновение не проводились. Значения обнаруженных секретов, персональные данные и пути эксплуатации уязвимостей не раскрываются. Цитирование кода — в соответствии со ст. 1274 ГК РФ. Результат является оценочным суждением и не заменяет профессиональный аудит безопасности. Пункты помечены: ✓ факт (линтер), ⚠ мнение (AI), ✗ неверно (опровергнуто).