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