Pods' Scheduled Rollout with CronJob
First let's add role, service account and role binding:
kind: ServiceAccount
apiVersion: v1
metadata:
name: rest-api-deployment-restart-service
namespace: rest-api-ns-{{ .Values.environment }}
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: deployment-restart-role
namespace: rest-api-ns-{{ .Values.environment }}
rules:
- apiGroups: ["apps", "extensions"]
resources: ["deployments"]
resourceNames: ["rest-api-deploy-{{ .Values.environment }}"]
verbs: ["get", "patch", "list", "watch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: deployment-restart-role-binding
namespace: rest-api-ns-{{ .Values.environment }}
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: deployment-restart-role
subjects:
- kind: ServiceAccount
name: rest-api-deployment-restart-service
namespace: rest-api-ns-{{ .Values.environment }}
I'm using helm, so I have {{ .Values.environment }} you can change this to any value
in case you do not leverage Helm.
Next, let's define CronJob:
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: rest-api-deployment-restart
namespace: rest-api-ns-{{ .Values.environment }}
spec:
concurrencyPolicy: Forbid
schedule: '*/5 * * * *'
jobTemplate:
spec:
backoffLimit: 2
activeDeadlineSeconds: 600
template:
spec:
serviceAccountName: rest-api-deployment-restart-service
restartPolicy: Never
containers:
- name: kubectl
image: bitnami/kubectl
command:
- 'kubectl'
- 'rollout'
- 'restart'
- 'deployment/rest-api-deploy-{{ .Values.environment }}'
Comments
Post a Comment