Skip to main content

validates kubernetes resource definitions against schemas

Project description

kubernetes-validate

kubernetes-validate validates Kubernetes resource definitions against the declared Kubernetes schemas.

Based on Gareth Rushgrove's excellent work providing a basis for turning Kubernetes Swagger API definitions into JSONSchema definitions, kubernetes-validate will report on mismatches between schema defnition and resource definition

Note that this currently uses a fork of kubernetes-json-schema for the following reasons:

Furthermore, the module now includes only the .0 API schemas, as they change so little within a Kubernetes version (there are some differences but they seem to be mostly irrelevant to validation - e.g. description updates). This has taken the module down from 300MB to less than 30MB.

If the relevant PRs get accepted upstream, then this will revert to the upstream fork.

Installation

pip install kubernetes-validate

Usage

Command line

$ kubernetes-validate
usage: kubernetes-validate [-h] [-k KUBERNETES_VERSION] [--strict] [--version]
                           ...

validate a kubernetes resource definition

positional arguments:
  filenames

optional arguments:
  -h, --help            show this help message and exit
  -k KUBERNETES_VERSION, --kubernetes-version KUBERNETES_VERSION
                        version of kubernetes against which to validate.
                        Defaults to major/minor version of kubernetes-validate
                        (i.e. 1.22.1 supports kubernetes 1.22). Patch versions
                        of the version are ignored (1.22.4 validates against
                        1.22.0)
  --strict              whether to use strict validation, rejecting unexpected
                        properties
  --quiet               whether to only output warnings/failures
  --no-warn             whether to hide warnings
  --version             show program's version number and exit

e.g.

$ kubernetes-validate -k 1.27 --strict resource.yml

Python

from __future__ import print_function
import kubernetes_validate
import yaml

try:
    data = yaml.load(open('resource.yaml').read())
    kubernetes_validate.validate(data, '1.22', strict=True)
except kubernetes_validate.ValidationError as e:
    print(''. join(e.path), e.message)

Examples

$ kubernetes-validate -k 1.21 examples/kuard-extra-property.yaml
INFO  examples/kuard-extra-property.yaml passed against version 1.21
$ kubernetes-validate --strict examples/kuard-extra-property.yaml
ERROR examples/kuard-extra-property.yaml did not validate against version 1.28.0: spec.selector: Additional properties are not allowed ('unwanted' was unexpected)
$ kubernetes-validate examples/kuard-invalid-type.yaml
ERROR examples/kuard-invalid-type.yaml did not validate against version 1.28.0: spec.replicas: 'hello' is not of type u'integer'

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kubernetes_validate-1.33.1.tar.gz (8.8 MB view details)

Uploaded Source

Built Distribution

kubernetes_validate-1.33.1-py3-none-any.whl (18.2 MB view details)

Uploaded Python 3

File details

Details for the file kubernetes_validate-1.33.1.tar.gz.

File metadata

  • Download URL: kubernetes_validate-1.33.1.tar.gz
  • Upload date:
  • Size: 8.8 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for kubernetes_validate-1.33.1.tar.gz
Algorithm Hash digest
SHA256 53635bf66a5e04901209ae7f6aff0e8c19efa145cc9a90872344c92a31353a99
MD5 d44c853ab46a7ef5fd673884282f308f
BLAKE2b-256 f1656ca340bd0acf560f81519e7fc8ae6fc4658872fbcd93158f8c3cf0b3b348

See more details on using hashes here.

Provenance

The following attestation bundles were made for kubernetes_validate-1.33.1.tar.gz:

Publisher: publish.yml on willthames/kubernetes-validate

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file kubernetes_validate-1.33.1-py3-none-any.whl.

File metadata

File hashes

Hashes for kubernetes_validate-1.33.1-py3-none-any.whl
Algorithm Hash digest
SHA256 fd910cff492ea32c85b8733fedd31dd0cf582925d3b3a3e73ceda1876f87bdcb
MD5 7948c3ff4c550a8a2c4209db7d7f17ed
BLAKE2b-256 b61c79fa67f473225bf52c752cdd16c73c11127908a8adb190687633cf9f61d9

See more details on using hashes here.

Provenance

The following attestation bundles were made for kubernetes_validate-1.33.1-py3-none-any.whl:

Publisher: publish.yml on willthames/kubernetes-validate

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page