kubeval
kubeval copied to clipboard
Errors ignore output string type
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"
]
}
]
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