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.36.0.tar.gz (9.9 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kubernetes_validate-1.36.0-py3-none-any.whl (20.2 MB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for kubernetes_validate-1.36.0.tar.gz
Algorithm Hash digest
SHA256 edbfd2db9e88b571029aa16ab1116c6502ad2b9628b6738dd39d639323f84715
MD5 b497079d6d072b65fd8a198de1e444de
BLAKE2b-256 b7d2ed9d3a2b5356a4b1b872639ee81d63e6adcd95727e93db44b3b46a47d3b9

See more details on using hashes here.

Provenance

The following attestation bundles were made for kubernetes_validate-1.36.0.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.36.0-py3-none-any.whl.

File metadata

File hashes

Hashes for kubernetes_validate-1.36.0-py3-none-any.whl
Algorithm Hash digest
SHA256 fcafa2b657949a7cc7232dfb201c4d37e61b15e2f8b4936350b150be01ac5de5
MD5 2719e69b92856ee93948345175fa1937
BLAKE2b-256 99b7c799b568a2b701103d6ee351d6f45af6c041b9e497dc0923645d617fb4cc

See more details on using hashes here.

Provenance

The following attestation bundles were made for kubernetes_validate-1.36.0-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 Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page