Skip to main content

pyk: a simple, yet useful Kubernetes toolkit in Python

version downloads build status

This is a simple, yet useful toolkit that supports you in writing microservices-style apps with Kubernetes.

The pyk toolkit is meant to be used by tools such as kploy or from your own app. It is manifest-oriented, that is, it expects the resource definitions in YAML files; currently pyk’s API is as follows:

  • execute an arbitrary operation and return the resource, if any: execute_operation(method='GET', ops_path='', payload='')

  • return a description of a resource: describe_resource(resource_path)

  • delete a resource: delete_resource(resource_path)

  • create a Replication Controller (RC): create_rc(manifest_filename, namespace='default')

  • scale a RC: scale_rc(manifest_filename, namespace='default', num_replicas=0)

  • create a service: create_svc(manifest_filename, namespace='default')

Dependencies

All of these are included in the setup:

  • Python Requests (note: I’ve tested with version 2.6.2)

  • Python PyYAML (note: I’ve tested with version 3.11)

Using pyk

A simple usage pattern is, for example, to create a Replication Controller:

import pprint
from pyk import toolkit

pyk_client = toolkit.KubeHTTPClient() # assumes local API Server at http://localhost:8080
_, rc_url = pyk_client.create_rc(manifest_filename='manifest/nginx-webserver-rc.yaml')
rc = pyk_client.describe_resource(rc_url)
pprint.pprint(rc.json())

Testing pyk

In order to run the tests, use test_pyk.py $KUBERNETES_API_SERVER_URL, for example:

$ ./test_pyk.py http://52.33.181.164/service/kubernetes

Above runs all the tests. You can also specify a particular test, like so:

$ ./test_pyk.py http://52.33.181.164/service/kubernetes "init app"
================================================================================
= Test case: init a simple app

2015-11-28T05:13:16 From manifest/nginx-webserver-rc.yaml I created the RC "webserver-rc" at /api/v1/namespaces/default/replicationcontrollers/webserver-rc
2015-11-28T05:13:17 From manifest/webserver-svc.yaml I created the service "webserver-svc" at /api/v1/namespaces/default/services/webserver-svc
2015-11-28T05:13:18 Found following endpoints:
2015-11-28T05:13:18 /api/v1/namespaces/default/endpoints/k8sm-scheduler ->
{
  "addresses": [
    {
      "ip": "10.0.3.45"
    }
  ],
  "ports": [
    {
      "port": 25504,
      "protocol": "TCP"
    }
  ]
}
2015-11-28T05:13:18 /api/v1/namespaces/default/endpoints/kubernetes ->
{
  "addresses": [
    {
      "ip": "10.0.3.45"
    }
  ],
  "ports": [
    {
      "port": 25502,
      "protocol": "TCP"
    }
  ]
}
2015-11-28T05:13:18 /api/v1/namespaces/default/endpoints/webserver-svc ->

Metadata

Release files for pyk 0.3.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pyk 0.3.2
File Size Uploaded
pyk-0.3.2.tar.gz 4.4 kB Details

Release files / pyk-0.3.2.tar.gz

Download URL pyk-0.3.2.tar.gz
Size 4.4 kB
Tags Source
SHA-256 checksum
How to use checksums
edd7bb851081803a672b48a4f3336be33aa6b28ff2c0791966d4b4f125030826
BLAKE2b-256 checksum
How to use checksums
76f6520fee871ede6f79e5f78f928c0a4b1ded2a6eed9b4a782751bdbd67a4dd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

0.3.2 This release

1 release file

0.3.1

1 release file

0.3.0

1 release file

0.2.0

1 release file

0.1.2

1 release file

0.1.1

1 release file

0.1.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page