kubeval icon indicating copy to clipboard operation
kubeval copied to clipboard

Errors ignore output string type

Open mbaum0 opened this issue 2 years ago • 1 comments

If a configuration is missing 'apiversion', 'type', etc, keys, kubeval dumps the issue to log.Error, prints null, and exits. When the -o flag is specified as json, I would expect kueval to report the error in json format.

Example

# test.yaml

apiVersion: apps/v1
#kind: Deployment
metadata:
  name: sandbox
spec:
  replicas: astring
  selector:
    matchLabels:
      app: sandbox
  template:
    metadata:
      labels:
        app: moda-sandbox
    spec:
      dnsPolicy: Default
      containers:
      - name: sandbox
        image: sandbox
        ports:
        - name: http
          containerPort: 8080
          protocol: TCP
        envFrom:
          - configMapRef:
              name: kube-cluster-metadata

Current output:

$ ./bin/kubeval -d test.yaml -o json
ERR  - test.yaml: Missing 'kind' key
null

Possible JSON output:

$ ./bin/kubeval -d test.yaml -o json
[
        {
                "filename": "test.yaml",
                "kind": "Deployment",
                "status": "invalid",
                "errors": [
                        "spec.replicas: Missing 'kind' key"
                ]
        }
]

mbaum0 avatar Mar 01 '22 12:03 mbaum0

It looks like if apiversion or type aren't specified, it isn't possible to build the URL to download the appropriate schema. So kubeval fails fast and makes these checks before even testing against the schema

mbaum0 avatar Mar 01 '22 13:03 mbaum0