Moved content as-is (no text changes) for a more readable diff between commits.
The following sections werent moved:
* Idempotence main section (better content in new page)
* Intercepting all versions of an object (better content in new page)
* Guaranteeing the final state of an object is seen
* Avoiding operating in the kube-system namespace
* Add diagram for admission control phases which shows the new validatingadmissionpolicies
* Change to a mermaid diagram
* Add accessibility description
* Fix font size issue
* Correct blue colour
* Move diagram type to top to see if it builds correctly
* Convert to exported svg and mermaid-live link
* correct image path
* Update filepath
* Update link to mermaid doc
With the annotation changes
* Delete content/en/docs/images/admission-control-phases.svg
* correct image path
* Correct parallelism of stages and state parallel stage explicitly
* Undo autolint
* Undo further autolint
* Remove bad merge
* Revert yet more IDE autoformatting
* Revert more IDE nonsense
* Remove yet more ide nonsense
* Remove the last of the IDE autoformatting
* Fix last piece of the bad merge
Webhooks can cause deadlocks in several ways, expand the list to cover more subtle cases.
Co-authored-by: Kat Cosgrove <kat.cosgrove@gmail.com>
Co-authored-by: Tim Bannister <tim@scalefactory.com>
[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!