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?