From d12997e11f99fa25d70ee602c0d934281d3056d1 Mon Sep 17 00:00:00 2001 From: Sergey Vasilyev Date: Sat, 15 Jun 2024 18:15:54 +0200 Subject: [PATCH 1/2] Put a public warning into README.md --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index 1bd02a47..e71fee65 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,12 @@ The main goal is to bring the Domain-Driven Design to the infrastructure level, with Kubernetes being an orchestrator/database of the domain objects (custom resources), and the operators containing the domain logic (with no or minimal infrastructure logic). +However, it brings its own vision on how to write operators and controllers, which is not always in line with the agreed best practices of the Kubernetes world, sometimes the opposite of those. Here is the indicative publicly available summary: + +> Please do not use Kopf, it is a nightmare of controller bad practices and some of its implicit behaviors will annihilate your API server. The individual handler approach it encourages is the exact opposite of how you should write a Kubernetes controller. Like fundamentally it teaches you the exact opposite mindset you should be in. Using Kopf legitimately has taken years off my life and it took down our clusters several times because of poor code practices on our side and sh***y defaults on its end. We have undergone the herculean effort to move all our controllers to pure golang and the result has been a much more stable ecosystem. /[Jmc_da_boss](https://www.reddit.com/r/kubernetes/comments/1dge5qk/comment/l8qbbll/)/ + +Think twice before you step into this territory ;-) + The project was originally started as `zalando-incubator/kopf` in March 2019, and then forked as `nolar/kopf` in August 2020: but it is the same codebase, the same packages, the same developer(s). From c08373c05d6953568d8a10821cbc318fc280fae2 Mon Sep 17 00:00:00 2001 From: Sergey Vasilyev Date: Sat, 15 Jun 2024 18:20:08 +0200 Subject: [PATCH 2/2] Put the feedback warning also to the vision.rst --- docs/vision.rst | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/vision.rst b/docs/vision.rst index e8b014a9..e01b2a59 100644 --- a/docs/vision.rst +++ b/docs/vision.rst @@ -33,3 +33,11 @@ a mapping of Python classes to Kubernetes resources .. _Occam's Razor: https://en.wikipedia.org/wiki/Occam%27s_razor .. _KISS: https://en.wikipedia.org/wiki/KISS_principle + +However, it brings its own vision on how to write operators and controllers, which is not always in line with the agreed best practices of the Kubernetes world, sometimes the opposite of those. Here is the indicative publicly available summary: + +> Please do not use Kopf, it is a nightmare of controller bad practices and some of its implicit behaviors will annihilate your API server. The individual handler approach it encourages is the exact opposite of how you should write a Kubernetes controller. Like fundamentally it teaches you the exact opposite mindset you should be in. Using Kopf legitimately has taken years off my life and it took down our clusters several times because of poor code practices on our side and sh***y defaults on its end. We have undergone the herculean effort to move all our controllers to pure golang and the result has been a much more stable ecosystem. /Jmc_da_boss__/ + +__ https://www.reddit.com/r/kubernetes/comments/1dge5qk/comment/l8qbbll/ + +Think twice before you step into this territory ;-)