Upgrade Prowler to 5.23.0, remove registry workaround (#336)
All checks were successful
Build Container / detect (push) Successful in 3s
Build Container / build-dagger (prowler) (push) Successful in 36s

## Summary

- Upgrade Prowler from 5.22.0 to 5.23.0
- Remove the `enumerate-images` init container workaround from `cronjob-image-scan.yaml`
- Use native `--registry` and `--image-filter` flags now that upstream fix (PR prowler-cloud/prowler#10470) is released

The init container was a workaround for prowler-cloud/prowler#10457 where `--registry` args weren't forwarded to the provider constructor. We wrote the fix, it was merged, and v5.23.0 includes it.

## Test plan

- [ ] Build new container (`mise run container-release prowler 5.23.0`)
- [ ] Update kustomization.yaml with new image tag
- [ ] Sync prowler ArgoCD app from branch
- [ ] Manually trigger image scan job and verify `--registry` works natively
- [ ] Verify CIS and IaC scan cronjobs still work

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Reviewed-on: #336
This commit is contained in:
Erich Blume 2026-04-14 13:45:28 -07:00
commit 7c1cd11e45
5 changed files with 7 additions and 43 deletions

View file

@ -15,39 +15,6 @@ spec:
securityContext:
seccompProfile:
type: RuntimeDefault
initContainers:
# Workaround: Prowler's --registry flag is broken (registry args
# not passed to provider constructor). Generate image list from
# zot catalog API instead.
# See: https://github.com/prowler-cloud/prowler/issues/10457
# Fix merged upstream (PR #10470, 2026-03-30) but not yet in a
# release (latest: 5.22.0). Remove this initContainer once a
# release includes the fix and we upgrade.
- name: enumerate-images
image: registry.ops.eblu.me/blumeops/prowler:kustomized
command: ["python3", "-c"]
args:
- |
import json, urllib.request
REGISTRY = "https://registry.ops.eblu.me"
catalog = json.loads(urllib.request.urlopen(f"{REGISTRY}/v2/_catalog").read())
images = []
for repo in catalog["repositories"]:
if not repo.startswith("blumeops/"):
continue
tags = json.loads(urllib.request.urlopen(f"{REGISTRY}/v2/{repo}/tags/list").read())
for tag in tags.get("tags") or []:
images.append(f"registry.ops.eblu.me/{repo}:{tag}")
with open("/shared/images.txt", "w") as f:
f.write("\n".join(images) + "\n")
print(f"Discovered {len(images)} images")
for img in images:
print(img)
volumeMounts:
- name: shared
mountPath: /shared
containers:
- name: prowler
image: registry.ops.eblu.me/blumeops/prowler:kustomized
@ -57,20 +24,16 @@ spec:
DATEDIR=/reports/prowler-images/$(date +%Y-%m-%d)
mkdir -p "$DATEDIR"
prowler image \
--image-list /shared/images.txt \
--registry https://registry.ops.eblu.me \
--image-filter "^blumeops/" \
-z \
--output-formats html csv json-ocsf \
--output-directory "$DATEDIR"
volumeMounts:
- name: reports
mountPath: /reports
- name: shared
mountPath: /shared
readOnly: true
restartPolicy: OnFailure
volumes:
- name: reports
persistentVolumeClaim:
claimName: prowler-reports
- name: shared
emptyDir: {}

View file

@ -26,4 +26,4 @@ configMapGenerator:
images:
- name: registry.ops.eblu.me/blumeops/prowler
newTag: v5.22.0-6960243
newTag: v5.23.0-d05b503