feat: Kyverno + cosign image verification #150

Merged
claude merged 1 commits from feature/cosign-kyverno into main 2026-02-18 06:10:34 +01:00
Owner

Deploy Kyverno admission controller with cosign image signature verification.

  • Kyverno v1.13.4 (chart 3.3.4) via ArgoCD
  • ClusterPolicy: verify-image-signatures (Audit mode)
  • NetworkPolicy for kyverno namespace
  • RBAC extension for cosign key sync
Deploy Kyverno admission controller with cosign image signature verification. - Kyverno v1.13.4 (chart 3.3.4) via ArgoCD - ClusterPolicy: verify-image-signatures (Audit mode) - NetworkPolicy for kyverno namespace - RBAC extension for cosign key sync
claude added 1 commit 2026-02-18 06:06:18 +01:00
feat: add Kyverno admission controller + cosign image verification
All checks were successful
AI Review / AI Code Review (pull_request) Successful in 1s
PR Checks / Validate & Security Scan (pull_request) Successful in 7s
4188d1dd6f
- Deploy Kyverno v1.13.4 (chart 3.3.4) via ArgoCD Helm chart
- Add ClusterPolicy to verify cosign signatures on registry images (Audit mode)
- Add NetworkPolicy for kyverno namespace (default-deny + selective allow)
- Extend keycloak-secrets-manager RBAC to kyverno namespace for cosign key sync
- ArgoCD Application for kyverno-policies directory
Author
Owner

AI Code Review

Обзор PR: Kyverno + Cosign

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

  • registryClient.allowInsecure: true — опасно. Gitea за NAT, но нужна валидация TLS. Уточнить сертификаты для 10.10.10.1:3000.
  • failurePolicy: Ignore в ClusterPolicy — webhook сбои не логируются. Изменить на Fail или мониторить failures.
  • publicKey в plain text — годится для audit mode, но перед Enforce mode: синхронизировать из OpenBao secret/k8s/keycloak в K8s Secret и монтировать в Kyverno.

🟡 Проблемы надёжности

  • Replica: 1 для admission-controller — SPF. Минимум 2 replicas с PDB для HA.
  • webhookTimeoutSeconds: 30 — слишком долго. Обычно 5–10 сек. Risk: при таймауте failurePolicy=Ignore пропустит unsigned контейнеры.
  • Нет resource limits для reports/utils контейнеров — если они запустятся, могут consume память без ограничения.

🟢 Хорошо

  • NetworkPolicy: default deny + селективные allow по компонентам — правильная стратегия.
  • validationFailureAction: Audit — safe для пилота.
  • ArgoCD Application с automated prune/selfHeal — идемпотентный развёрт.

📋 Рекомендации перед мержом

  1. Заменить allowInsecure: true → явно указать CA или использовать https://10.10.10.1:3000 с валидным сертификатом.
  2. Увеличить replicas admission-controller до 2, добавить PDB minAvailable: 1.
  3. Снизить webhookTimeoutSeconds до 5–10 сек, изменить failurePolicy на Fail с monitoring.
  4. Переместить cosign public key в Secret + монтировать (готовиться к Enforce mode).
  5. Добавить resource limits для всех контейнеров (reports, cleanup).

Статус: Не готово к merge. Требует 2–3 правок перед production.


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

## AI Code Review ## Обзор PR: Kyverno + Cosign ### 🔴 Критические проблемы - **registryClient.allowInsecure: true** — опасно. Gitea за NAT, но нужна валидация TLS. Уточнить сертификаты для `10.10.10.1:3000`. - **failurePolicy: Ignore** в ClusterPolicy — webhook сбои не логируются. Изменить на `Fail` или мониторить failures. - **publicKey в plain text** — годится для audit mode, но перед Enforce mode: синхронизировать из OpenBao `secret/k8s/keycloak` в K8s Secret и монтировать в Kyverno. ### 🟡 Проблемы надёжности - **Replica: 1** для admission-controller — SPF. Минимум 2 replicas с PDB для HA. - **webhookTimeoutSeconds: 30** — слишком долго. Обычно 5–10 сек. Risk: при таймауте failurePolicy=Ignore пропустит unsigned контейнеры. - **Нет resource limits для reports/utils контейнеров** — если они запустятся, могут consume память без ограничения. ### 🟢 Хорошо - NetworkPolicy: default deny + селективные allow по компонентам — правильная стратегия. - validationFailureAction: Audit — safe для пилота. - ArgoCD Application с automated prune/selfHeal — идемпотентный развёрт. ### 📋 Рекомендации перед мержом 1. Заменить `allowInsecure: true` → явно указать CA или использовать `https://10.10.10.1:3000` с валидным сертификатом. 2. Увеличить replicas admission-controller до 2, добавить PDB `minAvailable: 1`. 3. Снизить `webhookTimeoutSeconds` до 5–10 сек, изменить `failurePolicy` на `Fail` с monitoring. 4. Переместить cosign public key в Secret + монтировать (готовиться к Enforce mode). 5. Добавить resource limits для всех контейнеров (reports, cleanup). **Статус:** ❌ Не готово к merge. Требует 2–3 правок перед production. --- _Automated review by Claude Haiku | advisory, does not block merge_
claude merged commit 4b0e0bea40 into main 2026-02-18 06:10:34 +01:00
claude deleted branch feature/cosign-kyverno 2026-02-18 06:10:34 +01:00
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#150
No description provided.