apiVersion: v1
kind: ServiceAccount
metadata:
  name: crontab-sa
  namespace: kube-public
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: crontab-role
  namespace: kube-public
rules:
- apiGroups: [""]
  resources: ["pods", "pods/exec", "deployments", "statefulsets", "daemonsets"]  
  verbs: ["get", "list", "watch", "update", "patch", "create", "exec"] 
- apiGroups: ["apps"]
  resources: ["deployments"]
  verbs: ["get", "list", "watch", "update", "patch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: crontab-role-binding
  namespace: kube-public
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: crontab-role
subjects:
- kind: ServiceAccount
  name: crontab-sa
  namespace: kube-public
---
apiVersion: batch/v1
kind: CronJob
metadata:
  name: confluence-bak
  namespace: kube-public
spec:
  concurrencyPolicy: Allow
  failedJobsHistoryLimit: 1
  jobTemplate:
    spec:
      template:
        spec:
          containers:
            - args:
                - >
                  #!/bin/bash

                  #这里要确认confluence备份的日期格式以及confluence备份系统执行备份的时间(默认每日凌晨2点)

                  today=$(date +%Y_%m_%d)

                  kubectl cp
                  kube-public/confluence-0:/var/atlassian/application-data/confluence/backups/backup-$today.zip
                  /confluence-bak/confluence-bak-$today.zip

                  kubectl -n kube-public exec confluence-0 -- find
                  /var/atlassian/application-data/confluence/backups/ -mtime +3
                  -type f -exec rm -f {} \;
              command:
                - /bin/bash
                - '-c'
              image: harbor.uenpay.com/base/kubectl
              imagePullPolicy: Always
              name: confluence-bak
              volumeMounts:
                - mountPath: /confluence-bak
                  name: confluence-bak
          dnsPolicy: ClusterFirst
          restartPolicy: OnFailure
          schedulerName: default-scheduler
          securityContext:
            runAsUser: 0
          serviceAccount: crontab-sa
          serviceAccountName: crontab-sa
          terminationGracePeriodSeconds: 30
          volumes:
            - name: confluence-bak
              nfs:
                path: /data/nfs/confluence-bak
                server: d1-nfs001
  schedule: 30 18 * * *
  successfulJobsHistoryLimit: 1
  suspend: false
  • No labels