apiVersion: batch/v1
kind: CronJob
metadata:
  name: cse-dfsgc
  namespace: tidb-serverless
spec:
  schedule: 0 0 * * *
  successfulJobsHistoryLimit: 3
  suspend: false
  concurrencyPolicy: Forbid
  failedJobsHistoryLimit: 1
  jobTemplate:
    spec:
      backoffLimit: 16
      template:
        metadata:
          annotations:
            cluster-autoscaler.kubernetes.io/safe-to-evict: "false"
          labels:
            app.kubernetes.io/name: cse-dfsgc
        spec:
          affinity:
            nodeAffinity:
              requiredDuringSchedulingIgnoredDuringExecution:
                nodeSelectorTerms:
                  - matchExpressions:
                      - key: serverless.tidbcloud.com/node
                        operator: In
                        values:
                          - general
          tolerations:
            - effect: NoSchedule
              key: serverless.tidbcloud.com/node
              operator: Equal
              value: general
          containers:
            - command:
                - /cse-ctl
                - dfs-gc
                - --pd
                - serverless-cluster-pd.tidb-serverless.svc:2379
                - --concurrency
                - "{{Concurrency}}"
                - --start-time-safe-interval
                - "{{StartTimeSafeInterval}}"
                - --file-types-whitelist
                - "{{FileTypesWhitelist}}"
              env:
                - name: DFS_PREFIX
                  value: S3_PREFIX
                - name: DFS_S3_BUCKET
                  value: S3_BUCKET
                - name: DFS_S3_REGION
                  value: S3_REGION
                - name: CSE_MASTER_KEY_ID
                  value: CSE_MASTER_KEY_ID
                - name: CSE_MASTER_KEY_CIPHER_TEXT
                  value: CSE_MASTER_KEY_CIPHER_TEXT
                - name: CSE_MASTER_KEY_VENDOR
                  value: CSE_MASTER_KEY_VENDOR
              imagePullPolicy: IfNotPresent
              name: cse-dfsgc
              resources:
                limits:
                  cpu: "4"
                  memory: 8Gi
                requests:
                  cpu: 500m
                  memory: 2Gi
              terminationMessagePath: /dev/termination-log
              terminationMessagePolicy: File
          dnsPolicy: ClusterFirst
          restartPolicy: OnFailure
          schedulerName: default-scheduler
          securityContext: {}
          serviceAccount: backup-restore
          serviceAccountName: backup-restore
          terminationGracePeriodSeconds: 30
