Skip to main content

Kubernetes Dynamic client

Project description

kubernetes-dynamic

This project aims to provide an easy interface over kubernetes API based on the official kubernetes package.

Basic syntax is very similar to kubectl.

client.pods.get() is the same as kubectl get pods

Example Usage

import kubernetes_dynamic as kd

client = kd.K8sClient()
pods: list[kd.models.V1Pod] = client.pods.get()
for pod in pods:
    print(pod.metadata.name)

Custom resources

import kubernetes_dynamic as kd

class MyModel(kd.models.ResourceItem):
    field: str


api: ResourceApi[MyModel] = kc.cl.get_api("mycustomresources", MyModel)
api: ResourceApi[MyModel] = kc.cl.get_api(kind="MyCustomResource", object_type=MyModel)
items: List[MyModel] = api.get()
item: Optional[MyModel] = api.get(name="exact-name")
if item:
    item.field = "modified"
    item.patch()
else:
    item = MyModel(metadata={"name": "exact-name", "namespace": "namespace-name"}, field="created", client=kd.cl)
    item.create()
    # item = MyModel(field="created")
    # item.metadata.name = "exact-name"

    # item = MyModel(metadata={"name": "exact-name"}, field="created")

    # item = MyModel(metadata=kd.models.V1Metadata(name="exact-name"), field="created")
    # item.create(namespace="namespace-name")

Models

We aim to provide pydantic models for all reasources.

Because the model names are exactly the same as in the kubernetes package, make sure you import the models from kubernetes_dynamic.models

  • Proper type hinting
  • All models are flexible (less dependent on kubernetes version):
    • accept extra values
    • all optional (type checker is tricked into assuming everything exists)
  • Models created by queries have a reference to the client it was created by, manually creating models creates a default client(without arguments), or you can specify client manually.
  • Base model contains common methods for all models:
    • refresh
    • patch
    • create
    • read
    • delete
    • is_ready
  • additional features for specific models (just examples):
    • configmap:
      • from_path
    • ingress:
      • get_default_host
    • namespace:
      • annotate
      • ensure
    • pod:
      • get_restarts
      • exec
      • disk_usage
      • get_controller_type
      • get_env
    • secret
      • exists
      • set
      • decode

Subresources

Subresources are available under the main resource api objects:

  • example: client.pods.exec

Work in progress

Expect breaking changes

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-dynamic-0.1.2.tar.gz (69.5 kB view details)

Uploaded Source

Built Distribution

kubernetes_dynamic-0.1.2-py3-none-any.whl (81.3 kB view details)

Uploaded Python 3

File details

Details for the file kubernetes-dynamic-0.1.2.tar.gz.

File metadata

  • Download URL: kubernetes-dynamic-0.1.2.tar.gz
  • Upload date:
  • Size: 69.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.8.16

File hashes

Hashes for kubernetes-dynamic-0.1.2.tar.gz
Algorithm Hash digest
SHA256 a0a9ffc99355f69786cfd18d7d3df2441832a5b2faf7914a0be6bf1d04564d56
MD5 7114c6332785d4752a6f7955e51e6aea
BLAKE2b-256 6414e1f03c15f3f29bc4900d0191ab46be77a0a1d0495ba5aab57f20bc43cdb9

See more details on using hashes here.

File details

Details for the file kubernetes_dynamic-0.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for kubernetes_dynamic-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 aa2544a42cfb0f2857e87eb11c0589814a7c19fd98f59641863635888b1d1788
MD5 0aec792d153b371766618283dde133cb
BLAKE2b-256 5059514b965276f2987141f0a654aca87c3d207858d5d2691cc657896466d7a2

See more details on using hashes here.

Supported by

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