feat: add AnalysisTemplate + Feature Flags to web-app chart #226

Merged
admin merged 1 commits from feat/analysis-template-feature-flags into main 2026-02-22 22:05:50 +01:00
Owner

Summary

  • AnalysisTemplate: web provider health check on canary /healthz (10s interval, 6 checks, 3 failure limit → auto-rollback)
  • Feature Flags: ConfigMap → config.js mount via window.APP_CONFIG pattern for static SPA
  • NetworkPolicy: allow argo-rollouts namespace for analysis HTTP checks
  • Prod arch-docs: enable analysis + showBetaFeatures flag (disabled by default)
## Summary - **AnalysisTemplate**: web provider health check on canary /healthz (10s interval, 6 checks, 3 failure limit → auto-rollback) - **Feature Flags**: ConfigMap → config.js mount via window.__APP_CONFIG__ pattern for static SPA - **NetworkPolicy**: allow argo-rollouts namespace for analysis HTTP checks - **Prod arch-docs**: enable analysis + showBetaFeatures flag (disabled by default)
claude added 1 commit 2026-02-22 22:05:34 +01:00
feat: add AnalysisTemplate + Feature Flags to web-app chart
All checks were successful
AI Review / AI Code Review (pull_request) Successful in 2s
PR Checks / Validate & Security Scan (pull_request) Successful in 10s
a9ec853201
- AnalysisTemplate: web provider health check on canary /healthz
  (10s interval, 6 checks, 3 failure limit → auto-rollback)
- Feature Flags: ConfigMap → config.js mount via window.__APP_CONFIG__
  pattern for static SPA (annotation hash for auto-restart)
- NetworkPolicy: allow argo-rollouts namespace for analysis HTTP checks
- Prod arch-docs: enable analysis + showBetaFeatures flag

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
admin merged commit da71ddaff7 into main 2026-02-22 22:05:50 +01:00
Author
Owner

AI Code Review

Обзор PR: feat: add AnalysisTemplate + Feature Flags to web-app chart

🔴 Критические проблемы

  1. ConfigMap с JS-кодом — Risk XSS

    • config.js в ConfigMap монтируется как stateless. Нет проверки содержимого.
    • Если featureFlags.flags содержат недоверенные значения, возможна XSS через window.__APP_CONFIG__.
    • Исправление: экранировать значения флагов (toJson фильтр в Helm) или валидировать через OPA/Kyverno.
  2. AnalysisTemplate URL уязвим к DNS-отравлению

    • Hardcoded http:// (не https). Pod в argo-rollouts сможет фальсифицировать ответы.
    • Исправление: использовать https сCA cert или локальный URL через headless service.
  3. Feature Flags попадают в статический файл без версионирования

    • checksum/feature-flags гарантирует перелив при изменении ConfigMap, но флаги видны в браузере DevTools.
    • Нет контроля доступа (кто может видеть/менять флаги).
    • Рекомендация: добавить RBAC-проверку, кто может редактировать ConfigMap.

🟡 Предупреждения

  1. NetworkPolicy: argo-rollouts → web-app без rate-limiting

    • Analysis может генерировать много запросов /healthz (10s × 6 = 60s, но пока без rate limit).
    • При ошибке анализа возможен DoS собственного приложения.
    • Рекомендация: добавить maxRetries в AnalysisTemplate или limit на сервере.
  2. Отсутствует Timeout на healthz endpoint

    • timeoutSeconds: 5 в AnalysisTemplate ✓, но нет проверки, что /healthz сам быстро отвечает.
    • Если endpoint зависает, это затянет rollout.
    • Рекомендация: добавить лайвнесс-пробу на 3s timeout.
  3. Pod Disruption Budget отсутствует

    • Canary может быть мгновенно убит при обновлении узла.
    • Рекомендация: добавить PDB с minAvailable: 1 для stable + canary.
  4. Deployment + Rollout дублируют template

    • Если одновременно работают оба, возникнет race condition.
    • Проверить: что deployment.enabled: false при rollout.enabled: true.

🔵 Рекомендации

  • Labels и checksum/feature-flags правильно сделаны.
  • ⚠️ configmap-flags.yaml: используйте | tojson вместо прямой подстановки значений.
  • ⚠️ AnalysisTemplate: логировать неудачи анализа (добавить annotation со статусом rollback).

Вердикт: Требуются исправления #1–3 перед мержем. #4–7 — для следующего PR.


Automated review by Claude Haiku | advisory, does not block merge

## AI Code Review Обзор PR: **feat: add AnalysisTemplate + Feature Flags to web-app chart** ## 🔴 Критические проблемы 1. **ConfigMap с JS-кодом — Risk XSS** - `config.js` в ConfigMap монтируется как stateless. Нет проверки содержимого. - Если `featureFlags.flags` содержат недоверенные значения, возможна XSS через `window.__APP_CONFIG__`. - **Исправление:** экранировать значения флагов (toJson фильтр в Helm) или валидировать через OPA/Kyverno. 2. **AnalysisTemplate URL уязвим к DNS-отравлению** - Hardcoded `http://` (не https). Pod в argo-rollouts сможет фальсифицировать ответы. - **Исправление:** использовать https сCA cert или локальный URL через headless service. 3. **Feature Flags попадают в статический файл без версионирования** - `checksum/feature-flags` гарантирует перелив при изменении ConfigMap, но флаги видны в браузере DevTools. - Нет контроля доступа (кто может видеть/менять флаги). - **Рекомендация:** добавить RBAC-проверку, кто может редактировать ConfigMap. ## 🟡 Предупреждения 4. **NetworkPolicy: argo-rollouts → web-app без rate-limiting** - Analysis может генерировать много запросов `/healthz` (10s × 6 = 60s, но пока без rate limit). - При ошибке анализа возможен DoS собственного приложения. - **Рекомендация:** добавить `maxRetries` в AnalysisTemplate или limit на сервере. 5. **Отсутствует Timeout на healthz endpoint** - `timeoutSeconds: 5` в AnalysisTemplate ✓, но нет проверки, что `/healthz` сам быстро отвечает. - Если endpoint зависает, это затянет rollout. - **Рекомендация:** добавить лайвнесс-пробу на 3s timeout. 6. **Pod Disruption Budget отсутствует** - Canary может быть мгновенно убит при обновлении узла. - **Рекомендация:** добавить PDB с `minAvailable: 1` для stable + canary. 7. **Deployment + Rollout дублируют template** - Если одновременно работают оба, возникнет race condition. - **Проверить:** что `deployment.enabled: false` при `rollout.enabled: true`. ## 🔵 Рекомендации - ✅ Labels и checksum/feature-flags правильно сделаны. - ⚠️ `configmap-flags.yaml`: используйте `| tojson` вместо прямой подстановки значений. - ⚠️ AnalysisTemplate: логировать неудачи анализа (добавить annotation со статусом rollback). **Вердикт:** Требуются исправления #1–3 перед мержем. #4–7 — для следующего PR. --- _Automated review by Claude Haiku | advisory, does not block merge_
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: claude/k8s-apps#226
No description provided.