Python client library for Kubernetes w/ EKS support
Project description
pykubeks
This is a fork of pykube which is no longer maintained. If you are interested in who brought that lovely little library into the world, please check out The Kel Project.
The reason for this fork is to release the AWS EKS support I wrote for
the original project, before it was abandoned. The new name pykubeks
is a portmanteau of pykube
and EKS
.
The python package name is still the same to make it simpler to "upgrade" to this new version which supports user credentials supplied from client-go credential plugins. See k8s documentation for details.
Features
- HTTP interface using requests using kubeconfig for authentication
- Python native querying of Kubernetes API objects
Installation
To install pykubeks, use pip:
pip install pykubeks
Usage
Query for all ready pods in a custom namespace:
import operator
import pykube
api = pykube.HTTPClient(pykube.KubeConfig.from_file("/Users/<username>/.kube/config"))
pods = pykube.Pod.objects(api).filter(namespace="gondor-system")
ready_pods = filter(operator.attrgetter("ready"), pods)
Access any attribute of the Kubernetes object:
pod = pykube.Pod.objects(api).filter(namespace="gondor-system").get(name="my-pod")
pod.obj["spec"]["containers"][0]["image"]
Selector query:
pods = pykube.Pod.objects(api).filter(
namespace="gondor-system",
selector={"gondor.io/name__in": {"api-web", "api-worker"}},
)
pending_pods = pykube.objects.Pod.objects(api).filter(
field_selector={"status.phase": "Pending"}
)
Watch query:
watch = pykube.Job.objects(api, namespace="gondor-system")
watch = watch.filter(field_selector={"metadata.name": "my-job"}).watch()
# watch is a generator:
for watch_event in watch:
print(watch_event.type) # 'ADDED', 'DELETED', 'MODIFIED'
print(watch_event.object) # pykube.Job object
Create a ReplicationController:
obj = {
"apiVersion": "v1",
"kind": "ReplicationController",
"metadata": {
"name": "my-rc",
"namespace": "gondor-system"
},
"spec": {
"replicas": 3,
"selector": {
"app": "nginx"
},
"template": {
"metadata": {
"labels": {
"app": "nginx"
}
},
"spec": {
"containers": [
{
"name": "nginx",
"image": "nginx",
"ports": [
{"containerPort": 80}
]
}
]
}
}
}
}
pykube.ReplicationController(api, obj).create()
Delete a ReplicationController:
obj = {
"apiVersion": "v1",
"kind": "ReplicationController",
"metadata": {
"name": "my-rc",
"namespace": "gondor-system"
}
}
pykube.ReplicationController(api, obj).delete()
Check server version:
api = pykube.HTTPClient(pykube.KubeConfig.from_file("/Users/<username>/.kube/config"))
api.version
HTTPie
pykube can be used together with HTTPie for Kubernetes command line querying goodness. For example:
pip install httpie
http pykube://minikube/api/v1/services
The above example will construct an HTTP request to the cluster behind the minikube
context and
show you the response containing all services.
Requirements
- Python 2.7 or 3.3+
- requests (included in
install_requires
) - PyYAML (included in
install_requires
)
License
The code in this project is licensed under the Apache License, version 2.0 (included in this repository under LICENSE).
Contributing
By making a contribution to this project, you are agreeing to the Developer Certificate of Origin v1.1
(also included in this repository under DCO.txt).
Developer Certificate of Origin v1.1
Code of Conduct
Contributor Covenant Code of Conduct
Commercial Support
No commercial support is available for this project.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for pykubeks-0.1.0a2-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0091c1393444cfc354e892de98a7980d9c9d4f42b8a0cc2d5dad5dcb662b082b |
|
MD5 | 869ba45cc012579539b3304cf899b9f7 |
|
BLAKE2b-256 | 7e139229504243591a38a46a897893fde5b471ed3806986c6349750f17672732 |