Reputation: 322
Kubernetes 1.15 introduced the command
kubectl rollout restart deployment my-deployment
Which would be the endpoint to call through the API? For example if I want to scale a deployment I can call
PATCH /apis/apps/v1/namespaces/my-namespace/deployments/my-deployment/scale
Upvotes: 19
Views: 15402
Reputation: 159781
If you dig around in the kubectl
source you can eventually find (k8s.io/kubectl/pkg/polymorphichelpers).defaultObjectRestarter
. All that does is change an annotation:
apiVersion: apps/v1
kind: Deployment
spec:
template:
metadata:
annotations:
kubectl.kubernetes.io/restartedAt: '2006-01-02T15:04:05Z'
Anything that changes a property of the embedded pod spec in the deployment object will cause a restart; there isn't a specific API call to do it.
The useful corollary to this is that, if your kubectl
and cluster versions aren't in sync, you can use kubectl rollout restart
in kubectl
1.14 against older clusters, since it doesn't actually depend on any changes in the Kubernetes API.
Upvotes: 50
Reputation: 1194
TLDR
curl --location --request PATCH 'https://kubernetes.docker.internal:6443/apis/apps/v1/namespaces/default/deployments/keycloak?fieldManager=kubectl-rollout&pretty=true' \
--header 'Content-Type: application/strategic-merge-patch+json' \
--data-raw '{
"spec": {
"template": {
"metadata": {
"annotations": {
"kubectl.kubernetes.io/restartedAt": <time.Now()>
}
}
}
}
}'
If you have kubectl
you can debug the calls on a local minikube by providing the extra flag --v 9
to your command.
That said you can try to do a dummy rollout restart on your local cluster to see the results.
For future readers: This can vary between versions, but if you are in apps/v1
it should be ok.
Upvotes: 19