3 min read | by Jordi Prats
On Kubernetes, when we update objects such as a deployment or a daemonset we can check it's rollout history using kubectl rollout history:
$ kubectl rollout history deploy pet2cattle deployment.apps/pet2cattle REVISION CHANGE-CAUSE 21 <none> 22 <none> 23 <none> 24 <none> 26 <none> 28 <none> 29 <none> 30 <none> 32 <none> 33 <none> 34 <none>
By default we won't be able to see a change cause, but we can fill this gap by setting the command that triggered the update adding the --record flag as follows:
$ kubectl scale deployment/pet2cattle --replicas 2 --record deployment.apps/pet2cattle scaled
If we describe the object we will see that this is adding an annotation with the change cause (kubernetes.io/change-cause):
$ kubectl describe deployment/pet2cattle Name: pet2cattle Namespace: default CreationTimestamp: Thu, 25 Dec 2020 10:07:38 +0100 Labels: app=pet2cattle Annotations: deployment.kubernetes.io/revision: 1 kubernetes.io/change-cause: kubectl scale deployment/pet2cattle --replicas=2 --record=true Selector: app=pet2cattle Replicas: 2 desired | 2 updated | 2 total | 1 available | 1 unavailable StrategyType: RollingUpdate MinReadySeconds: 0 RollingUpdateStrategy: 25% max unavailable, 25% max surge Pod Template: Labels: app=pet2cattle Containers: nginx: Image: nginx Port: <none> Host Port: <none> Environment: <none> Mounts: <none> Volumes: <none> Conditions: Type Status Reason ---- ------ ------ Progressing True NewReplicaSetAvailable Available False MinimumReplicasUnavailable OldReplicaSets: <none> NewReplicaSet: pet2cattle-997c454df (2/2 replicas created) Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal ScalingReplicaSet 68s deployment-controller Scaled up replica set pet2cattle-997c454df to 1 Normal ScalingReplicaSet 9s deployment-controller Scaled up replica set pet2cattle-997c454df to 2
Running again kubectl rollout history we will be able to see the command on the CHANGE-CAUSE column
$ kubectl rollout history deploy pet2cattle deployment.apps/pet2cattle REVISION CHANGE-CAUSE 22 <none> 23 <none> 24 <none> 26 <none> 28 <none> 29 <none> 30 <none> 32 <none> 33 <none> 34 <none> 35 kubectl scale deployment/pet2cattle --replicas=2 --record=true
We can also add any annotation we like:
apiVersion: apps/v1 kind: Deployment metadata: annotations: kubernetes.io/change-cause: ps auxf
And it will also show up on the CHANGE-CAUSE column:
$ kubectl rollout history deploy pet2cattle deployment.apps/pet2cattle REVISION CHANGE-CAUSE 99 <none> 100 <none> 101 <none> 102 <none> 103 <none> 104 <none> 105 <none> 106 <none> 107 <none> 109 kubectl scale deployment/pet2cattle --replicas=2 --record=true 110 ps auxf
Posted on 18/05/2021