When you start using kubernetes you notice that the kubectl apply command only deploys when your YAML file changes. Even if you update your configmap OR if you update your image.

Using ENV var (not configmap)

At the beginning I used to create an ENV var with an integer value and increase every time I needed to deploy. Something like this:

        - name: DEPLOY
          value: "21"

But that is kind of annoying.

kubectl rollout

If you have easy access to the YAML file, use this command to force a new deploy:

$ kubectl rollout restart -f puma-deploy.yml
deployment.apps/puma-deploy restarted

Patching the deployment

Or if you don't have access to that YAML file (for example in a CI) you can apply a patch to your deployment:

$ kubectl patch deployment puma-deploy -p "{\"spec\":{\"template\":{\"metadata\":{\"labels\":{\"date\":\"$(date +'%s')\"}}}}}"
deployment.apps/puma-deploy patched