We are looking into moving our Jira instance on a Kubernetes cluster and one of the concerns that were recently risen is whether we should go with a StatefulSet or a Deployment. So, are there any suggestions or lessons learned by using any of the above controllers? Any additional tips, source of information and comments by people who went through the process could be very valuable to us.
Deployments are primarily based on stateless services, where data is externalized to be stored on some other storage block or database. Using deployments for stateful services is not recommended as you will encounter scaling problems, since multiple replicas will read from the same persistent volume.
Instead, StatefulSets are the best approach to stateful services. Each replica of the StatefulSet has its own state mounted on a dedicated persistent volume, thus scaling a StatefulSet will create a new persistent volume and attach the new replica to it.