ADR008: Allow Reuse of Existing Kubernetes Operators
-
Status: approved
-
Deciders:
-
Florian Waibel
-
Lars Francke
-
Oliver Hessel
-
Sönke Liebau
-
-
Date: 15.01.2021
Context and Problem Statement
For some of the tools we plan to integrate there are existing operators that deploy these tools on Kubernetes. Most notably these tools are:
-
Spark
-
Kafka
Some implementation effort may be avoided by reusing these operators instead of recreating the tool-specific functionality that is already implemented. Since these operators are designed to work with Kubernetes and thus exclusively focused on containers some translation of data structures and processes would be necessary.
Decision Drivers
-
Keeping the implementation effort as low as realistically possible
-
Keeping compatibility with Kubernetes as far as possible to ease a later move towards Kubernetes deployments
-
Avoid hard dependencies on external projects that may force us to fork in case they break compatibility with us
Considered Options
-
Allow reuse of Kubernetes operators (would need to be decided individually for every tool)
-
Don’t reuse operators
Decision Outcome
Chosen option: "Don’t reuse operators", because the core value proposition of Stackable is that customers can get all tools from one place. This sort of implies that everything looks, feels and behaves the same, which would be very tough to ensure when depending on external projects that all behave differently.
Even just looking at the two potential Kafka operators: Strimzi and Banzai, they choose substantially different approaches and adapting either one to our needs would have created substantial effort.
Pros and Cons of the Options
Allow reuse of Kubernetes operators
-
Good, because it saves implementation effort
-
Good, because this forces us to consider Kubernetes compatibility repeatedly
-
Bad, because we create a dependency on another project that may at some point break compatibility
-
Bad, because we need to adapt to interfaces that have been designed specifically with containers in mind