/kubernetes_asyncio

Python asynchronous client library for Kubernetes http://kubernetes.io/

Primary LanguagePythonApache License 2.0Apache-2.0

Kubernetes Python Client

Build Status PyPI version codecov pypi supported versions

Asynchronous (AsyncIO) client library for the Kubernetes API.

This library is created in the same way as official https://github.com/kubernetes-client/python but uses asynchronous version of swagger-codegen. My motivation is described here: kubernetes-client/python#324

Installation

From PyPi directly:

pip install kubernetes_asyncio

Example

To list all pods:

import asyncio
from kubernetes_asyncio import client, config


async def main():
    # Configs can be set in Configuration class directly or using helper
    # utility. If no argument provided, the config will be loaded from
    # default location.
    await config.load_kube_config()

    v1 = client.CoreV1Api()
    print("Listing pods with their IPs:")
    ret = await v1.list_pod_for_all_namespaces()

    for i in ret.items:
        print(i.status.pod_ip, i.metadata.namespace, i.metadata.name)


if __name__ == '__main__':
    loop = asyncio.get_event_loop()
    loop.run_until_complete(main())
    loop.close()

More complicated examples, like asynchronous multiple watch or tail logs from pods, you can find in examples/ folder.

Comparison with official synchronous library

This library is generated in the same way as the official Kubernetes Python Library. It uses swagger-codegen and the same concepts like streaming, watching or reading configuration. Because of an early stage of this library some differences still exist:

synchronous library kubernetes-client/python this libray
authentication method gcp-token, user-token, oid-token, user-password, in-cluster gcp-token (only via gcloud command), user-token, user-password, in-cluster
refesh token no yes, optional
python 2.7 3.4 3.5 3.6 3.5 3.6
streaming data via websocket from PODs bidirectional read-only is already implemented

Development

Install the development packages:

pip install -r requirements.txt
pip install -r test-requirements.txt

You can run the style checks and tests with

flake8 kubernetes_asyncio/
isort --diff --recursive kubernetes_asyncio/
nosetests