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