Description
Is your feature request related to a problem? Please describe.
Istio supports multiple control plane as described here . It seems to me the manual update of helm templates describe therein would be way easier using banzai operator were it to not assume it was a singleton.
Describe the solution you'd like to see
Remove the constraint on a singleton istio control plane instance in the validation controller. There are several pilot command line changes that need to occur as mentioned above i.e limiting namespace overlap so 2 pilots don't collide on a watched namespace & istio deployment ns but it seems manageable from within the banzai controller as it would have the ability to compare all the istio crd (control plane) instances and enforce namespace boundaries (ns-foo) with additional pilot options:
--snip--
- name: discovery
image: docker.io/<user ID>/pilot:<tag>
imagePullPolicy: IfNotPresent
args: ["discovery", "-v", "2", "--admission-service", "istio-pilot", "--appNamespace", "ns-foo"]
--snip--
A single controller, such as istio-operator, could prevent pilot watching overlapping namespaces, and of course, deploying itself into istio-system
.
Describe alternatives you've considered
- Not using banzai and following https://istio.io/blog/2018/soft-multitenancy/ which is undesirable
- The fairly extreme alibaba solution
Additional context
The use of multiple Istio control planes has the ability to limit the proliferation of super complicated alternatives recently brought up in the last k8 multi-tenancy working group. The notion of super-masters that alibaba proposes seems extreme but maybe necessary.
However, it seems worth a try using a lighter weight istio implementation that has multiple control planes especially given the presence of envoy for ingress and egress.
The pod-2-pod comm can be naturally controlled by the tenant operator (envoy) using separate ingress/egress.
Of course, for true hard multitenancy, it may be necessary to convolute everything but I'd like to try istio first.
Thoughts?