You will add flyway migration as it is, nothing special and than this migration will be applied before the application is opened for service.
There is no specific difference between versions as far as flyway migrations concerns.
If they are master slave than migration can be applied on master instances only.
Still the most proper way is to update tags of your docker image and update yourapp.yaml script , there's no other way and then just kubectl -f yourapp.yaml. For this purpose GitOps is used. For me who has small cluster using something as ArgoCD is too much. I've went with Gitlab free service called AutoDevops which deploys read and tested docker container ...
The 'best approach' in a theory (coming from the perspective of k8s) would be GitOps: Cloud-native Continuous Deployment.
Your question lack some important information, how are you doing your deployments right now ? Do you have some limitations in terms of security and auditability ?
Sharing my personal 2 cents, using GitOps with ArgoCD outsource and ...
We are using https://github.com/stakater/Reloader The work of the reloader is that when someone update the configmap/secrets then it will keep watch the deployment and it will automatically restart the deployments. This is the best way we have find out till now