halo sobat sekolahlinux, kali ini saya akan share sediki tentang bagaimana membuat sebuah cronjob pada kubernetes, pada case kali ini task yang saya buat cronjob berfungsi untuk melakukan restart pods atau restart deployment, tanpa basa-basi yuk langsung masuk kepembahasannya
pertama kita perlu membuat serviceaccount untuk cronjob nya
kind: ServiceAccount apiVersion: v1 metadata: name: deployment-restart namespace: production
selanjutnya kita perlu membuat role, yang mana nanti role ini akan di assign ke serviceaccount yang kita buat diatas
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: deployment-restart
namespace: production
rules:
- apiGroups: ["apps", "extensions"]
resources: ["deployments"]
resourceNames: ["elastalert"]
verbs: ["get", "patch", "list", "watch"]
jika sudah sekarang buat rolebinding nya, yang mana role binding ini berguna untuk assign role dan service account yang sudah dibuat
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: deployment-restart
namespace: production
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: deployment-restart
subjects:
- kind: ServiceAccount
name: deployment-restart
namespace: production
jika sudah sekarang kita buat cronjob nya, didalam cronjob ini kita menggunakan serviceaccount yang sudah kita buat diatas yaitu serviceaccount deployment-restart, cronjob ini akan dijalankan setiap hari tepat pada jam 1 malam
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: deployment-restart
namespace: production
spec:
concurrencyPolicy: Forbid
schedule: "0 1 * * *"
jobTemplate:
spec:
backoffLimit: 2
activeDeadlineSeconds: 600
template:
spec:
serviceAccountName: deployment-restart
restartPolicy: Never
containers:
- name: kubectl
image: bitnami/kubectl
command:
- 'kubectl'
- 'rollout'
- 'restart'
- 'deployment.apps/elastalert'
nah sekian dulu sedikit tutorial singkatnya, untuk detail dari paramater-paramater diatas kamu bisa lihat pada link dibawah ini

