create scheduler / cronjob on specific namespace in kubernetes

0
358

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