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