[CloudCoil](https://github.com/cloudcoil/cloudcoil) - Production-ready Python client for Kubernetes with async support
I've been working on improving the Python development experience for Kubernetes, and I'm excited to share CloudCoil - a modern K8s client that brings features like async/await, type safety, and integrated testing to the Python ecosystem.
Why another Kubernetes client?
In the Python ecosystem, we've been missing features that Go developers take for granted - things like robust client implementations, proper type safety, and integrated testing tools. CloudCoil aims to fix this by providing:
1) Production-focused features:
* 🔥 Elegant, Pythonic API - Feels natural to Python developers
* ⚡ Async First - Native async/await support for high performance
* 🛡️ Type Safe - Full mypy support and runtime validation
* 🧪 Testing Ready - Built-in pytest fixtures for K8s integration tests
* 📦 Zero Config - Works with your existing kubeconfig
* 🪶 Minimal Dependencies - Only requires httpx, pydantic, and pyyaml
2) First-class operator support:
- [cert-manager](https://github.com/cloudcoil/models-cert-manager)
- [FluxCD](https://github.com/cloudcoil/models-fluxcd)
- [Kyverno](https://github.com/cloudcoil/models-kyverno)
(More coming soon - let me know what you'd like to see!)
3) Rich features for production use:
Resource watching with async support:
async for event_type, pod in await core.v1.Pod.async_watch(
field_selector="metadata.name=mypod"
):
if event_type == "DELETED":
break
Smart wait conditions:
pod = core.v1.Pod.get("test-pod")
status = await pod.async_wait_for({
"succeeded": lambda _, pod: pod.status.phase == "Succeeded",
"failed": lambda _, pod: pod.status.phase == "Failed"
}, timeout=300)
Dynamic CRD support:
DynamicCRD = resources.get_dynamic_resource(
"MyCustomResource",
"example.com/v1"
)
resource = DynamicCRD(
metadata={"name": "example"},
spec={"someField": "value"}
).create()
4) Installation:
Choose your K8s version:
# Latest version
pip install cloudcoil[kubernetes]
# Specific K8s version
pip install cloudcoil[kubernetes-1-32]
The project is Apache 2.0 licensed and ready for production use. We'd especially love feedback from:
- Teams using Python for K8s automation
- Anyone building operators/controllers in Python
- DevOps engineers managing multiple clusters
Links:
* GitHub: https://github.com/cloudcoil/cloudcoil
* Docs: https://cloudcoil.github.io/cloudcoil
* PyPI: https://pypi.org/project/cloudcoil
Looking forward to your feedback, especially on what operators you'd like to see supported next!
The 'kubr' gem has last been updated 7 years ago. It doesn't provide the required modern functionalities. The documentation consists of one code example and that's it. It's inclusion in this list only wastes time of Ruby on Rails developers because no sane person would chose it.
Adds a link to a new nodejs client library. New library builds on top of the godaddy lib, providing useful kubectl-like abstractions like `get` and `updateOrCreate`, and adds API-mapping and version-handling so the client code does not need to worry about compatibility across cluster versions.