Houston Putman created SOLR-16740:
-------------------------------------
Summary: Create a KubernetesConfigSetService
Key: SOLR-16740
URL: https://issues.apache.org/jira/browse/SOLR-16740
Project: Solr
Issue Type: Sub-task
Security Level: Public (Default Security Level. Issues are Public)
Components: module - kubernetes
Reporter: Houston Putman
Many users who run Solr on Kubernetes ask for a more kubernetes-native way of
managing ConfigSets. A common suggestion is to allow ConfigSets to be managed
via [ConfigMaps|https://kubernetes.io/docs/concepts/configuration/configmap/].
The idea is that Kubernetes acts as a distributed file store, much like
Zookeeper does, through the API Server (which is backed by EtcD). The
ConfigSetService is already an interface that has multiple implementations
(Zookeeper and FileSystem). The KubernetesConfigSetService would connect to the
Kubernetes API Server for the cluster that Solr is running in, and
watch/retrieve/update/create ConfigMaps for various ConfigSet operations.
There is actually no need to interact with the Solr Operator at all for the
KubernetesConfigSetService, since it will be watching on ConfigMap labels,
which will be set by the user. If the SolrCloud CRD also included which
configMaps it should manage, then user operations within the cluster
(create/delete a configSet) will make this information out-of-date. Therefore
we will keep things simple and use one source of truth for what configMaps
belong to a SolrCloud (which is the ConfigMap's labels).
The Solr Operator has stayed out of managing ConfigSets because there is always
concern around having 2 sources of truth (Kubernetes and Zookeeper). With this
implementation, no information about the configSet would be stored in
Zookeeper, so users would be safe to use ConfigMaps to fully manage their
ConfigSets.
Kubernetes APIs do allow for watching objects (such as ConfigMaps), however for
this application it's not really necessary since Solr does not watch ConfigSets
in Zookeeper. They are updated on reload commands.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]