kustomize-controller icon indicating copy to clipboard operation
kustomize-controller copied to clipboard

ValidationError(Kustomization.spec): missing required fields difficult to debug

Open runningman84 opened this issue 4 years ago • 3 comments

I have a bunch of kind: Kustomization defined in my gitrepo. The kustomize controller fails with an error message like "missing required field...". It is very difficult to find out what file is wrong because 8117172a-dd83-422a-9a54-1db02f6a0601.yaml looks like some random auto generated file...

 {"level":"error","ts":"2021-01-18T14:43:00.553Z","logger":"controller.kustomization","msg":"Reconciler error","reconciler group":"kustomize.toolkit.fluxcd.io","reconciler kind":"Kustomization", │
│ "name":"flux-system","namespace":"flux-system","error":"validation failed: kustomization.kustomize.toolkit.fluxcd.io/alb-ingress-controller created (dry run)\nkustomization.kustomize.toolkit.fl │
│ uxcd.io/basics created (dry run)\nkustomization.kustomize.toolkit.fluxcd.io/cert-manager-issuer created (dry run)\nkustomization.kustomize.toolkit.fluxcd.io/cert-manager-release created (dry ru │
│ n)\nkustomization.kustomize.toolkit.fluxcd.io/cluster-autoscaler created (dry run)\nkustomization.kustomize.toolkit.fluxcd.io/external-auth created (dry run)\nkustomization.kustomize.toolkit.fl │
│ uxcd.io/external-dns created (dry run)\nkustomization.kustomize.toolkit.fluxcd.io/fluentbit created (dry run)\nkustomization.kustomize.toolkit.fluxcd.io/kube-downscaler created (dry run)\nkusto │
│ mization.kustomize.toolkit.fluxcd.io/kube-extensions created (dry run)\nkustomization.kustomize.toolkit.fluxcd.io/kube-external-secrets created (dry run)\nkustomization.kustomize.toolkit.fluxcd │
│ .io/kube2iam created (dry run)\nkustomization.kustomize.toolkit.fluxcd.io/metrics-server created (dry run)\nerror: error validating \"8117172a-dd83-422a-9a54-1db02f6a0601.yaml\": error validati │
│ ng data: [ValidationError(Kustomization.spec): missing required field \"prune\" in io.fluxcd.toolkit.kustomize.v1beta1.Kustomization.spec, ValidationError(Kustomization.spec): missing required  │
│ field \"sourceRef\" in io.fluxcd.toolkit.kustomize.v1beta1.Kustomization.spec]; if you choose to ignore these errors, turn validation off with --validate=false\n"}             

runningman84 avatar Jan 18 '21 14:01 runningman84

+1:

nerror: error validating \"bd9fcf53-d698-47ab-9936-ca651cd259a2.yaml\": error validating data: [ValidationError(HelmRelease.spec.chart): unknown field \"sourceRef\" in io.fluxcd.toolkit.helm.v2beta1.HelmRelease.spec.chart, ValidationError(HelmRelease.spec.chart.spec): missing required field \"sourceRef\" in io.fluxcd.toolkit.helm.v2beta1.HelmRelease.spec.chart.spec]; if you choose to ignore these errors, turn validation off with --validate=false\n"}

the name kind/name/namespace could be output it would be human-parsable and unambiguous.

davidkarlsen avatar Feb 22 '21 09:02 davidkarlsen

Is there a way to make kubectl output the kind/name/namespace when dry-run fails? If not, then this issue belongs in Kubernetes repo not here.

stefanprodan avatar Feb 22 '21 09:02 stefanprodan

I agree, this error is not very intuitive with many workloads and people working on one cluster.

IvanJosipovic avatar Aug 19 '21 00:08 IvanJosipovic