design/metallb-operator.md
MetalLB currently includes instructions and resources for deploying MetalLB using a few methods: directly with manifests, customized manifests with kustomize, or via helm. Another approach for managing the deployment of software on Kubernetes is via an operator.
This document proposes creating an operator for MetalLB in a new git repository under the metallb github organization and publishing it on OperatorHub.io.
For any Kubernetes environment that primarily uses operators to manage add-ons to the cluster, it would be beneficial to have the option of using an operator to manage MetalLB, as well.
In another proposal, we have discussed creating a CRD based configuration interface for MetalLB. It seems that settling on the ideal data model may require some more time and experimentation. We can make use of this separate operator repo as a place to try out a CRD interface for MetalLB which writes out a ConfigMap and doesn't have to disrupt the core MetalLB project.
If this proposal were to be rejected, the operator would live outside of the metallb github organization. Otherwise, I expect most of the rest to remain the same.