fix: Kyverno egress to Gitea external for registry auth #239

Merged
claude merged 1 commits from fix/kyverno-gitea-external-egress into main 2026-02-24 21:29:36 +01:00
Owner

Gitea ROOT_URL change causes registry auth to redirect to external URL. Allow Kyverno admission+background controllers to reach 185.47.204.231:443.

Gitea ROOT_URL change causes registry auth to redirect to external URL. Allow Kyverno admission+background controllers to reach 185.47.204.231:443.
claude added 1 commit 2026-02-24 21:29:28 +01:00
fix: allow Kyverno egress to Gitea external for registry token exchange
All checks were successful
AI Review / AI Code Review (pull_request) Successful in 1s
PR Checks / Validate & Security Scan (pull_request) Successful in 9s
17e55ae0c9
After changing Gitea ROOT_URL to https://git.georgepet.duckdns.org,
the registry V2 auth challenge redirects to the external URL.
Kyverno needs to reach 185.47.204.231:443 for token exchange.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
claude merged commit bf35719ce9 into main 2026-02-24 21:29:36 +01:00
Author
Owner

AI Code Review

Обзор PR: Kyverno egress к Gitea external

Плюсы

  • Логика правильная: Gitea перенесён на external IP (185.47.204.231), kontrolery Kyverno нужны HTTPS доступ для token exchange через ROOT_URL
  • Консистентность: оба kontrolery (admission + background) получают одинаковое правило
  • Специфичность: /32 CIDR и port 443 — точные ограничения

⚠️ Проблемы

  1. IP адрес hardcoded без контекста

    • 185.47.204.231 — это K8s ingress на bare_srv_1 (см. MEMORY.md: Subnet 185.47.204.224/28, .231 K8s ingress)
    • В PR description это не упомянуто. Нужен комментарий:
    # Gitea external (K8s ingress: 185.47.204.231, registry token exchange via ROOT_URL)
    
    • Риск: при миграции на новый сервер IP изменится — документация должна быть ясной
  2. Нет Gitea internal rule?

    • Admission controller уже может reach Gitea на 127.0.0.1:3000 (1-й rule)?
    • Если registry auth использует external ROOT_URL, но внутренние операции (например, webhook) всё ещё идут на internal Gitea — check:
      • Нужны ли обе rules одновременно?
      • Или 127.0.0.1:3000 rule можно удалить?
    • Действие: в описании уточнить: registry auth всегда идёт на external, или fallback на internal?
  3. Cleanup controller не получает правило

    • Правильно — у него нет доступа к registry по дизайну
  4. Отсутствует в state/ файлах?

    • state/network.yaml должен содержать эту зависимость для будущей миграции
    • Убедиться, что это задокументировано в manifest state/ при merge

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

# Вместо текущего комментария:
- to:
    - ipBlock:
        cidr: 185.47.204.231/32  # K8s ingress (bare_srv_1)
  ports:
    - port: 443
      protocol: TCP

Действия перед merge:

  1. Подтвердить: registry auth по ROOT_URL работает только на external IP (не fallback на internal)
  2. Обновить comment в YAML с упоминанием K8s ingress IP
  3. Проверить state/network.yaml — содержит ли уже эту зависимость или нужно добавить

Вердикт: Merge ready после уточнения в комментариях. Функционально правильно, но нужна лучшая документация для миграции.


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

## AI Code Review ## Обзор PR: Kyverno egress к Gitea external ### ✅ Плюсы - **Логика правильная:** Gitea перенесён на external IP (185.47.204.231), kontrolery Kyverno нужны HTTPS доступ для token exchange через ROOT_URL - **Консистентность:** оба kontrolery (admission + background) получают одинаковое правило - **Специфичность:** `/32` CIDR и port 443 — точные ограничения ### ⚠️ Проблемы 1. **IP адрес hardcoded без контекста** - 185.47.204.231 — это K8s ingress на bare_srv_1 (см. `MEMORY.md: Subnet 185.47.204.224/28, .231 K8s ingress`) - В PR description это не упомянуто. Нужен комментарий: ```yaml # Gitea external (K8s ingress: 185.47.204.231, registry token exchange via ROOT_URL) ``` - **Риск:** при миграции на новый сервер IP изменится — документация должна быть ясной 2. **Нет Gitea internal rule?** - Admission controller уже может reach Gitea на 127.0.0.1:3000 (1-й rule)? - Если registry auth использует external ROOT_URL, но внутренние операции (например, webhook) всё ещё идут на internal Gitea — check: - Нужны ли обе rules одновременно? - Или `127.0.0.1:3000` rule можно удалить? - **Действие:** в описании уточнить: registry auth **всегда** идёт на external, или fallback на internal? 3. **Cleanup controller не получает правило** ✓ - Правильно — у него нет доступа к registry по дизайну 4. **Отсутствует в `state/` файлах?** - `state/network.yaml` должен содержать эту зависимость для будущей миграции - Убедиться, что это задокументировано в manifest `state/` при merge ### Рекомендации ```yaml # Вместо текущего комментария: - to: - ipBlock: cidr: 185.47.204.231/32 # K8s ingress (bare_srv_1) ports: - port: 443 protocol: TCP ``` **Действия перед merge:** 1. ✅ Подтвердить: registry auth по ROOT_URL работает только на external IP (не fallback на internal) 2. ✅ Обновить comment в YAML с упоминанием K8s ingress IP 3. ✅ Проверить `state/network.yaml` — содержит ли уже эту зависимость или нужно добавить **Вердикт:** Merge ready после уточнения в комментариях. Функционально правильно, но нужна лучшая документация для миграции. --- _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#239
No description provided.