Multi-tenant? Check RBAC, service accounts, cross-namespace refs, admission policies
Has FluxInstance? Check operator security settings (multitenant, network policies)
Has image automation? Check push credential separation and branch isolation
Phase 6: Report
Structure findings as a markdown report with these sections if applicable:
Summary
— repo name, pattern, clusters, Flux/K8s resource counts, overall status
Directory Structure
— repo layout and how directories map to clusters/environments
Validation Results
— if any errors where found
API Compliance
— if deprecated API are found include migration steps
Best Practices
— assessment against the checklist, with specific findings
Security
— secrets, RBAC, network policies, multi-tenancy
Recommendations
— prioritized by severity:
Critical
,
Warning
,
Info
Flux CRD Reference
Use this table to check API versions and read the OpenAPI schema before recommending YAML changes.
Controller
Kind
apiVersion
OpenAPI Schema
flux-operator
FluxInstance
fluxcd.controlplane.io/v1
fluxinstance-fluxcd-v1.json
flux-operator
FluxReport
fluxcd.controlplane.io/v1
fluxreport-fluxcd-v1.json
flux-operator
ResourceSet
fluxcd.controlplane.io/v1
resourceset-fluxcd-v1.json
flux-operator
ResourceSetInputProvider
fluxcd.controlplane.io/v1
resourcesetinputprovider-fluxcd-v1.json
source-controller
GitRepository
source.toolkit.fluxcd.io/v1
gitrepository-source-v1.json
source-controller
OCIRepository
source.toolkit.fluxcd.io/v1
ocirepository-source-v1.json
source-controller
Bucket
source.toolkit.fluxcd.io/v1
bucket-source-v1.json
source-controller
HelmRepository
source.toolkit.fluxcd.io/v1
helmrepository-source-v1.json
source-controller
HelmChart
source.toolkit.fluxcd.io/v1
helmchart-source-v1.json
source-controller
ExternalArtifact
source.toolkit.fluxcd.io/v1
externalartifact-source-v1.json
source-watcher
ArtifactGenerator
source.extensions.fluxcd.io/v1beta1
artifactgenerator-source-v1beta1.json
kustomize-controller
Kustomization
kustomize.toolkit.fluxcd.io/v1
kustomization-kustomize-v1.json
helm-controller
HelmRelease
helm.toolkit.fluxcd.io/v2
helmrelease-helm-v2.json
notification-controller
Provider
notification.toolkit.fluxcd.io/v1beta3
provider-notification-v1beta3.json
notification-controller
Alert
notification.toolkit.fluxcd.io/v1beta3
alert-notification-v1beta3.json
notification-controller
Receiver
notification.toolkit.fluxcd.io/v1
receiver-notification-v1.json
image-reflector-controller
ImageRepository
image.toolkit.fluxcd.io/v1
imagerepository-image-v1.json
image-reflector-controller
ImagePolicy
image.toolkit.fluxcd.io/v1
imagepolicy-image-v1.json
image-automation-controller
ImageUpdateAutomation
image.toolkit.fluxcd.io/v1
imageupdateautomation-image-v1.json
Loading References
Load reference files when you need deeper information:
repo-patterns.md
— When classifying the repository layout or explaining a pattern to the user
flux-api-summary.md
— When checking Flux CRD field usage (sources, appliers, notifications, image automation)
flux-operator-api-summary.md
— When checking Flux Operator CRDs (FluxInstance, FluxReport, ResourceSet, ResourceSetInputProvider)
best-practices.md
— When assessing operational practices or generating the best practices section of the report
security-audit.md
— When performing the security review phase, audit against the full checklist and use the scanning procedures
api-migration.md
— When deprecated APIs are found, include the migration steps in the report
Edge Cases
Not a Flux repo
If no Flux CRDs are found, say so clearly. The repo might use ArgoCD, plain kubectl, or another tool. Don't force-fit Flux analysis.
Mixed tooling
Some repos combine Flux with CI workflows and Terraform. Analyze the Flux parts and note the other tools.
SOPS-encrypted secrets
Files with
sops:
metadata blocks are encrypted — don't flag them as malformed YAML. The validation script already skips Secrets.
Generated manifests
The
flux-system/gotk-components.yaml
is auto-generated by Flux bootstrap. Don't analyze it for best practices — it's managed by Flux itself.
Repos without kustomization.yaml
Some repos use plain YAML directories without Kustomize. Flux can reconcile these directly. Don't flag the absence of kustomization.yaml as an error.
Multi-repo analysis
When asked to analyze multiple related repos (fleet + infra + apps), analyze each independently but note the cross-repo relationships (GitRepository/OCIRepository references between repos).
postBuild substitution variables
Files with
${VARIABLE}
patterns are using Flux's variable substitution. Don't flag these as broken YAML — they're resolved at reconciliation time.
Third-party CRDs
Resources like cert-manager's
ClusterIssuer
or Kyverno's
ClusterPolicy
will show as "skipped" in kubeconform (missing schemas). This is expected — only Flux CRD schemas are downloaded. Don't flag these as validation failures.
Kustomize build files
:
kustomization.yaml
files with
apiVersion: kustomize.config.k8s.io/v1beta1
are Kustomize build configs, not Flux CRDs.