diff --git a/_apps/kube-cleanup-operator.yaml b/_apps/kube-cleanup-operator.yaml new file mode 100644 index 0000000..0eca93a --- /dev/null +++ b/_apps/kube-cleanup-operator.yaml @@ -0,0 +1,21 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: kube-cleanup-operator + namespace: argocd + finalizers: + - resources-finalizer.argocd.argoproj.io +spec: + destination: + namespace: kube-cleanup-operator + server: https://kubernetes.default.svc + project: default + source: + path: kube-cleanup-operator + repoURL: https://git.tbrnt.ch/tobru/gitops-tbrnt.git + targetRevision: HEAD +--- +apiVersion: v1 +kind: Namespace +metadata: + name: kube-cleanup-operator diff --git a/kube-cleanup-operator/deployment.yaml b/kube-cleanup-operator/deployment.yaml new file mode 100644 index 0000000..ed642c4 --- /dev/null +++ b/kube-cleanup-operator/deployment.yaml @@ -0,0 +1,48 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + run: cleanup-operator + name: cleanup-operator +spec: + replicas: 1 + selector: + matchLabels: + run: cleanup-operator + strategy: + rollingUpdate: + maxSurge: 1 + maxUnavailable: 1 + type: RollingUpdate + template: + metadata: + labels: + run: cleanup-operator + annotations: + prometheus.io/scrape: "true" + prometheus.io/port: "7000" + spec: + serviceAccountName: cleanup-operator + containers: + - args: + - --legacy-mode=false + - --delete-evicted-pods-after=15m0s + - --delete-failed-after=96h0m0s + - --delete-orphaned-pods-after=1h0m0s + - --delete-pending-pods-after=96h0m0s + - --delete-successful-after=24h0m0s + image: quay.io/lwolf/kube-cleanup-operator:v0.7.2 + imagePullPolicy: Always + name: cleanup-operator + ports: + - containerPort: 7000 + resources: + requests: + cpu: 50m + memory: 50Mi + limits: + cpu: 50m + memory: 50Mi + dnsPolicy: ClusterFirst + restartPolicy: Always + terminationGracePeriodSeconds: 30 diff --git a/kube-cleanup-operator/rbac.yaml b/kube-cleanup-operator/rbac.yaml new file mode 100644 index 0000000..1392121 --- /dev/null +++ b/kube-cleanup-operator/rbac.yaml @@ -0,0 +1,41 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: cleanup-operator +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: cleanup-operator +rules: +- apiGroups: + - "" + resources: + - pods + verbs: + - get + - list + - watch + - delete +- apiGroups: ["batch", "extensions"] + resources: + - jobs + verbs: + - delete + - get + - list + - watch + +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: cleanup-operator +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: cleanup-operator +subjects: +- kind: ServiceAccount + name: cleanup-operator + namespace: kube-cleanup-operator