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-system
---
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.8.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
