<p>I'm using a CI to update my kubernetes cluster whenever there's an update to an image. Whenever the image is pushed and has the latest tag it kubectl apply's the existing deployment but nothing gets updated.</p>
<p>this is what runs
<code>$ kubectl apply --record --filename /tmp/deployment.yaml</code></p>
<p>My goal is when the apply is ran that a rolling deployment gets executed.</p>
<pre class="lang-yaml prettyprint-override"><code>apiVersion: extensions/v1beta1
kind: Deployment
metadata:
    name: api
spec:
    replicas: 1
    template:
    metadata:
        labels:
        app: api
    spec:
        containers:
        - name: api
        image: us.gcr.io/joule-eed41/api:latest
        imagePullPolicy: Always
        ports:
            - containerPort: 1337
        args:
            - /bin/sh
            - -c
            - echo running api;npm start
        env:        
        - name: NAMESPACE
            valueFrom:
            configMapKeyRef:
                name: config
                key: NAMESPACE
</code></pre>

<p>As others suggested, have a specific tag.
Set new image using following command</p>

<p>kubectl set image deployment/deployment_name deployment_name=image_name:image_tag</p>

<p>In your case it would be</p>

<p>kubectl set image deployment/api   api=us.gcr.io/joule-eed41/api:0.1</p>
