Update:
So I think I answered my own question here. In a Master maxscale configuration it would be appropriate to use statefulset as they all share the same maxscae.cnf file. Statefulset allows the increase/decrease of replica count in the cluster and its perfect for this purpose. The replicasets all pin to one service detailed below:
Maxscale Cluster service service.yaml:
Note: This service is for metallb which will pin the VIP. I believe Kubevip will be slightly different (something Ill look into once I get kubevip in our environment)
apiVersion: v1
kind: Service
metadata:
name: {{ include "maxscale-helm.fullname" . }}
labels:
{{- include "maxscale-helm.labels" . | nindent 4 }}
spec:
type: {{ .Values.service.type }}
ports:
- name: mariadb
port: {{ .Values.service.mariadbProtocolPort }}
targetPort: 3306
protocol: TCP
- name: maxscale-webgui
port: {{ .Values.service.maxscaleWebGuiPort }}
targetPort: 8989
protocol: TCP
selector:
app: maxscale-cluster # reference that all maxscales in statefulset will use
Heres my current deployment. My org cannot deploy kube-vip at the moment until later on. So for now I am using Metallb to host a VIP. Metallb works well for failover but I suspect it is not service loadbalancing in the same way kube-vip does.
Note: Im using custom helm charts I've made but hopefully the above diagram properly depicts whats going on.
What are your thoughts? Are my assumptions correct?

