Skip to content

All Rules

The Kubernetes lexicon provides 37 rules: 6 lint rules and 31 post-synth checks.

IDSeverityCategoryDescription
ARGO001warningcorrectnessProduction Application must not enable automated prune
ARGO004warningcorrectnessApplicationSet template must scope to a single AppProject
FLUX001warningcorrectnessGitRepository must pin spec.ref
WK8001warningcorrectnessHardcoded Namespace
WK8002warningsecurityLatest Image Tag
WK8003warningcorrectnessMissing Resource Limits

Post-synth checks validate the serialized output after the build pipeline completes.

IDDescription
ARGO002Application.spec.project must reference a declared AppProject (or the built-in default)
ARGO003Application.spec.destination must reference a registered cluster or the in-cluster target
ARGO005Application source.path should resolve to an existing directory under the build root
FLUX002Kustomization.spec.sourceRef must reference a declared source (or the bootstrap flux-system repo)
FLUX003Kustomization.spec.dependsOn entries should name Kustomizations declared in the build
WK8005Hardcoded secrets in env vars — sensitive environment variables should use secretKeyRef
WK8006No :latest or untagged images — container images should use explicit version tags
WK8041Hardcoded API keys — detects well-known API key patterns in env var values
WK8042Private keys in ConfigMap — private keys should be stored in Secrets, not ConfigMaps
WK8101Deployment selector must match template labels — mismatched selectors cause runtime failures
WK8102Resources should have metadata labels — labels enable filtering and operational tooling
WK8103Containers must have name — the name field is required by the Kubernetes API
WK8104Ports should be named — named ports improve Service and NetworkPolicy configuration
WK8105ImagePullPolicy should be explicit — avoids surprising default behavior
WK8201Resource limits required — containers should have CPU and memory limits
WK8202No privileged containers — privileged mode grants full host access
WK8203ReadOnlyRootFilesystem recommended — prevents runtime modification of the container image
WK8204RunAsNonRoot recommended — running as root increases container breakout risk
WK8205Drop ALL capabilities — containers should drop all capabilities and add only what is needed
WK8207No hostNetwork — using host network bypasses network isolation
WK8208No hostPID — sharing host PID namespace allows visibility into all host processes
WK8209No hostIPC — sharing host IPC namespace can expose shared memory segments
WK8301Probes required — containers should have livenessProbe and readinessProbe
WK8302Replicas >= 2 recommended — single-replica Deployments have no high availability
WK8303PDB recommended for HA Deployments — ensures availability during voluntary disruptions
WK8304SSL redirect without certificate — ssl-redirect annotation requires a valid certificate-arn and HTTPS listen-ports
WK8305Ingress port not matching Service — backend port must match a declared Service port
WK8306Container command starts with flag — first element should be a binary, not a flag
WK8401shmSize must not exceed the container memory limit — pod will not schedule if it does
WK8402RayCluster should set spec.rayVersion so KubeRay selects the correct autoscaler image
WK8403spec.rayVersion should match the Ray version in the head container image tag