tiny-kubernetes
provides a thin wrapper on top of requests to make it
easier to work with Kubernetes APIs.
- Automatic authentication (
$KUBECONFIG
) - Simplified response traversal (
never['do']['this']['again']
) thanks to DotMap - Sane exceptions
- No crazy complex client-side APIs to deal with
The official kubernetes package is, uh, complex. While it does support all the advanced features the Kubernetes API offers (like WebSocket streaming) it is often non-trivial to work with. tiny-kubernetes aims to provide most of the same functionality with minimal overhead.
pip install tiny-kubernetes
from tiny_kubernetes import KubernetesAPIClient
client = KubernetesAPIClient()
client.load_auto_config()
pods = client.get('/api/v1/namespaces/{}/pods', 'default')
for pod in pods['items']:
print pod.metadata.name
Notice that you can access (almost) all parts of the Kubernetes API response
using dot accessors (courtesy of DotMap). As .items()
is a reserved name
in dictionaries, it needs to be accessed more traditionally, but most other
member names can use the shortened syntax.
The endpoint is formatted using str.format
with the remaining positional
arguments. All keyword arguments are passed through to requests's
Session.request
, so you can include a body with json={...}
or URL
parameters with params={...}
.
A special json_patch
method exists to help perform patches. It works around
a few potential requests bugs automatically. For example, it can be used to
append labels to a resource:
client.json_patch([{
'op': 'add',
'path': '/metadata/labels/foo',
'value': 'bar'
}], '/api/v1/namespaces/{}/pods/{}', 'default', 'some-pod')
- Temporary files may be created if using a local
$KUBECONFIG
with base64-encoded certificates. Due to limitations in python's SSL library these must be decoded and written to the filesystem to be used. They should be cleaned up when the interpreter exits.