Skip to content

Commit

Permalink
Refactor cleanup cron jobs in HelmChart/Public/oneuptime/templates/cr…
Browse files Browse the repository at this point in the history
…on-job.yaml and HelmChart/Public/oneuptime/values.yaml
  • Loading branch information
simlarsen committed Apr 24, 2024
1 parent 441aef4 commit 06bafdf
Show file tree
Hide file tree
Showing 3 changed files with 96 additions and 62 deletions.
153 changes: 91 additions & 62 deletions HelmChart/Public/oneuptime/templates/cron-job.yaml
Original file line number Diff line number Diff line change
@@ -1,67 +1,96 @@
# apiVersion: batch/v1
# kind: CronJob
# metadata:
# name: cleanup-crashloopbackoff-pods
# namespace: {{ $.Release.Namespace }}
# labels:
# appname: oneuptime
# spec:
# schedule: "*/5 * * * *" # At every 5 minute.
# jobTemplate:
# spec:
# template:
# spec:
# containers:
# - name: cleanup
# image: bitnami/kubectl:latest
# env:
# - name: namespace
# value: {{ $.Release.Namespace }}
# command:
# - /bin/bash
# - -c
# - |
# for pod in $(kubectl get pods -n $namespace --field-selector=status.phase==Failed -o jsonpath="{.items[*].metadata.name}")
# do
# if kubectl describe pod $pod -n $namespace | grep -q 'CrashLoopBackOff'
# then
# kubectl delete pod $pod -n $namespace
# fi
# done
apiVersion: batch/v1
kind: CronJob
metadata:
name: cleanup-crashloopbackoff-pods
namespace: {{ $.Release.Namespace }}
labels:
appname: oneuptime
spec:
schedule: "*/5 * * * *" # At every 5 minute.
jobTemplate:
spec:
template:
spec:
serviceAccountName: cleanup-service-account
containers:
- name: cleanup
image: bitnami/kubectl:latest
env:
- name: namespace
value: {{ $.Release.Namespace }}
command:
- /bin/bash
- -c
- |
for pod in $(kubectl get pods -n $namespace --field-selector=status.phase==Failed -o jsonpath="{.items[*].metadata.name}")
do
if kubectl describe pod $pod -n $namespace | grep -q 'CrashLoopBackOff'
then
kubectl delete pod $pod -n $namespace
fi
done
# restartPolicy: OnFailure
restartPolicy: OnFailure

# ---
---

# # Cron to delete all the pods with Completed status
# Cron to delete all the pods with Completed status

# # Path: HelmChart/Public/oneuptime/templates/cron-job.yaml
# Path: HelmChart/Public/oneuptime/templates/cron-job.yaml

# apiVersion: batch/v1
# kind: CronJob
# metadata:
# name: cleanup-completed-pods
# namespace: {{ $.Release.Namespace }}
# labels:
# appname: oneuptime
# spec:
# schedule: "*/2 * * * *" # At every 2 minute.
# jobTemplate:
# spec:
# template:
# spec:
# containers:
# - name: cleanup
# image: bitnami/kubectl:latest
# env:
# - name: namespace
# value: {{ $.Release.Namespace }}
# command:
# - /bin/bash
# - -c
# - |
# for pod in $(kubectl get pods -n $namespace --field-selector=status.phase==Succeeded -o jsonpath="{.items[*].metadata.name}")
# do
# kubectl delete pod $pod -n $namespace
# done
# restartPolicy: OnFailure
apiVersion: batch/v1
kind: CronJob
metadata:
name: cleanup-completed-pods
namespace: {{ $.Release.Namespace }}
labels:
appname: oneuptime
spec:
schedule: "*/2 * * * *" # At every 2 minute.
jobTemplate:
spec:
template:
spec:
serviceAccountName: cleanup-service-account
containers:
- name: cleanup
image: bitnami/kubectl:latest
env:
- name: namespace
value: {{ $.Release.Namespace }}
command:
- /bin/bash
- -c
- |
for pod in $(kubectl get pods -n $namespace --field-selector=status.phase==Succeeded -o jsonpath="{.items[*].metadata.name}")
do
kubectl delete pod $pod -n $namespace
done
restartPolicy: OnFailure


---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: cleanup-role
namespace: {{ $.Release.Namespace }}
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "list", "delete"]

---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: cleanup-role-binding
namespace: {{ $.Release.Namespace }}
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: cleanup-role
subjects:
- kind: ServiceAccount
name: cleanup-service-account
namespace: {{ $.Release.Namespace }}
4 changes: 4 additions & 0 deletions HelmChart/Public/oneuptime/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -190,4 +190,8 @@ nodeSelector:

# This can be one of the following: DEBUG, INFO, WARN, ERROR
logLevel: ERROR

# Enable cleanup cron jobs
cleanupCronJobs:
enabled: false

1 change: 1 addition & 0 deletions Probe/Index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ const init: PromiseVoidFunction = async (): Promise<void> => {
} catch (err) {
logger.error('Register probe failed');
logger.error(err);
throw err;
}

try {
Expand Down

0 comments on commit 06bafdf

Please sign in to comment.