Skip to content

Commit b0cce97

Browse files
authored
Add cloudcoil to client libraries
[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!
1 parent 35b3ebb commit b0cce97

File tree

1 file changed

+1
-0
lines changed

1 file changed

+1
-0
lines changed

content/en/docs/reference/using-api/client-libraries.md

+1
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ their authors, not the Kubernetes team.
6868
| PHP | [github.com/maclof/kubernetes-client](https://github.com/maclof/kubernetes-client) |
6969
| PHP | [github.com/travisghansen/kubernetes-client-php](https://github.com/travisghansen/kubernetes-client-php) |
7070
| PHP | [github.com/renoki-co/php-k8s](https://github.com/renoki-co/php-k8s) |
71+
| Python | [github.com/cloudcoil/cloudcoil](https://github.com/cloudcoil/cloudcoil) |
7172
| Python | [github.com/fiaas/k8s](https://github.com/fiaas/k8s) |
7273
| Python | [github.com/gtsystem/lightkube](https://github.com/gtsystem/lightkube) |
7374
| Python | [github.com/kr8s-org/kr8s](https://github.com/kr8s-org/kr8s) |

0 commit comments

Comments
 (0)