commit b7e389506596671d325f5b94aa0f6217d1f8f960 Author: pierre Date: Mon Jul 1 16:18:43 2024 +0100 :boom: add all the files diff --git a/Nextcloud_calendar_export_script.configmap.yaml b/Nextcloud_calendar_export_script.configmap.yaml new file mode 100644 index 0000000..ca2dd5c --- /dev/null +++ b/Nextcloud_calendar_export_script.configmap.yaml @@ -0,0 +1,14 @@ +apiVersion: v1 +data: + export_calendar.sh: | + #!/usr/bin/env bash + apk update + apk add curl + list='capgemini birmingham cesi papa blueberry personal-1 prometheus birthday maman capgemini_ca-gip shared_shared_by_calendar_sync' + for element in $list;do + curl -u $PI_USER_USERNAME:$PI_USER_PASSWORD https://nextcloud.tryton.geeraert.eu/remote.php/dav/calendars/pi/$element/\?export -o /backup/calendar_$element.ics + done + #curl -u $PI_USER_USERNAME:$PI_USER_PASSWORD https://nextcloud.tryton.geeraert.eu/remote.php/dav/calendars/pi/capgemini_ca-gip/\?export -o /backup/calendar.ics +kind: ConfigMap +metadata: + name: nextcloud-calendar-export-script diff --git a/nextcloud-contact-backup.job.yaml b/nextcloud-contact-backup.job.yaml new file mode 100644 index 0000000..c2599e9 --- /dev/null +++ b/nextcloud-contact-backup.job.yaml @@ -0,0 +1,52 @@ +apiVersion: batch/v1 +kind: Job +metadata: + name: contact-backup + namespace: nextcloud +spec: + ttlSecondsAfterFinished: 100 + template: + spec: + containers: + - name: contact-backup + image: alpine + env: + - name: PI_USER_USERNAME + valueFrom: + secretKeyRef: + name: nextcloud-credentials + key: PI_USER_USERNAME + - name: PI_USER_PASSWORD + valueFrom: + secretKeyRef: + name: nextcloud-credentials + key: PI_USER_PASSWORD + command: ["/bin/sh","/config/export_calendar.sh"] + volumeMounts: + - name: calendar + mountPath: /backup + - name: scripts + mountPath: /config + volumes: + - name: calendar + persistentVolumeClaim: + claimName: calendar + - name: scripts + configMap: + name: nextcloud-calendar-export-script + defaultMode: 0555 + restartPolicy: Never + backoffLimit: 4 +--- +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: calendar + namespace: nextcloud +spec: + storageClassName: nfs-backup-storage-intelligent + accessModes: + - ReadWriteMany + resources: + requests: + storage: 2Gi diff --git a/nextcloud_backup_calendar.cronjob.yaml b/nextcloud_backup_calendar.cronjob.yaml new file mode 100644 index 0000000..10a51d5 --- /dev/null +++ b/nextcloud_backup_calendar.cronjob.yaml @@ -0,0 +1,54 @@ +apiVersion: batch/v1 +kind: CronJob +metadata: + name: nextcloud-calendar-backup + namespace: nextcloud +spec: + schedule: "0 0 * * *" + jobTemplate: + spec: + ttlSecondsAfterFinished: 100 + template: + spec: + containers: + - name: calendar-backup + image: alpine + env: + - name: PI_USER_USERNAME + valueFrom: + secretKeyRef: + name: nextcloud-credentials + key: PI_USER_USERNAME + - name: PI_USER_PASSWORD + valueFrom: + secretKeyRef: + name: nextcloud-credentials + key: PI_USER_PASSWORD + command: ["/bin/sh","/config/export_calendar.sh"] + volumeMounts: + - name: calendar + mountPath: /backup + - name: scripts + mountPath: /config + volumes: + - name: calendar + persistentVolumeClaim: + claimName: calendar + - name: scripts + configMap: + name: nextcloud-calendar-export-script + defaultMode: 0555 + restartPolicy: Never +--- +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: calendar + namespace: nextcloud +spec: + storageClassName: nfs-backup-storage-intelligent + accessModes: + - ReadWriteMany + resources: + requests: + storage: 2Gi diff --git a/nextcloud_backup_contact.cronjob.yaml b/nextcloud_backup_contact.cronjob.yaml new file mode 100644 index 0000000..90d3167 --- /dev/null +++ b/nextcloud_backup_contact.cronjob.yaml @@ -0,0 +1,53 @@ +apiVersion: batch/v1 +kind: CronJob +metadata: + name: nextcloud-contact-backup + namespace: nextcloud +spec: + schedule: "0 0 * * *" + jobTemplate: + spec: + ttlSecondsAfterFinished: 100 + template: + spec: + containers: + - name: contact-backup + image: alpine/curl + env: + - name: PI_USER_USERNAME + valueFrom: + secretKeyRef: + name: nextcloud-credentials + key: PI_USER_USERNAME + - name: PI_USER_PASSWORD + valueFrom: + secretKeyRef: + name: nextcloud-credentials + key: PI_USER_PASSWORD + args: + - -u + - $(PI_USER_USERNAME):$(PI_USER_PASSWORD) + - https://nextcloud.tryton.geeraert.eu/remote.php/dav/addressbooks/users/pi/contacts/?export + - -o + - /backup/contact.vcf + volumeMounts: + - name: contact + mountPath: /backup + volumes: + - name: contact + persistentVolumeClaim: + claimName: contact + restartPolicy: Never +--- +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: contact + namespace: nextcloud +spec: + storageClassName: nfs-backup-storage-intelligent + accessModes: + - ReadWriteMany + resources: + requests: + storage: 2Gi diff --git a/nfs-subdir-external-provisioner/kustomization.yaml b/nfs-subdir-external-provisioner/kustomization.yaml new file mode 100644 index 0000000..2569d2a --- /dev/null +++ b/nfs-subdir-external-provisioner/kustomization.yaml @@ -0,0 +1,7 @@ +namespace: nfs-provisioner-backup +bases: + - github.com/kubernetes-sigs/nfs-subdir-external-provisioner//deploy +resources: + - namespace.yaml +patchesStrategicMerge: + - patch_nfs_details.yaml diff --git a/nfs-subdir-external-provisioner/namespace.yaml b/nfs-subdir-external-provisioner/namespace.yaml new file mode 100644 index 0000000..933e19b --- /dev/null +++ b/nfs-subdir-external-provisioner/namespace.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: nfs-provisioner-backup diff --git a/nfs-subdir-external-provisioner/nfs-client.storageclasses.yaml b/nfs-subdir-external-provisioner/nfs-client.storageclasses.yaml new file mode 100644 index 0000000..3812ff7 --- /dev/null +++ b/nfs-subdir-external-provisioner/nfs-client.storageclasses.yaml @@ -0,0 +1,10 @@ +apiVersion: storage.k8s.io/v1 +kind: StorageClass +metadata: + name: nfs-backup-storage-intelligent +parameters: + pathPattern: "Backup/${.PVC.namespace}/${.PVC.name}" + archiveOnDelete: "false" +provisioner: k8s-sigs.io/nfs-subdir-external-provisioner +reclaimPolicy: Delete +volumeBindingMode: Immediate diff --git a/nfs-subdir-external-provisioner/nfs-subdir-external-provisioner b/nfs-subdir-external-provisioner/nfs-subdir-external-provisioner new file mode 160000 index 0000000..59a3ca2 --- /dev/null +++ b/nfs-subdir-external-provisioner/nfs-subdir-external-provisioner @@ -0,0 +1 @@ +Subproject commit 59a3ca2cd10febfbe200c8676c4107be95f267a9 diff --git a/nfs-subdir-external-provisioner/patch_nfs_details.yaml b/nfs-subdir-external-provisioner/patch_nfs_details.yaml new file mode 100644 index 0000000..074c5e7 --- /dev/null +++ b/nfs-subdir-external-provisioner/patch_nfs_details.yaml @@ -0,0 +1,22 @@ +# patch_nfs_details.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: nfs-client-provisioner + name: nfs-client-provisioner +spec: + template: + spec: + containers: + - name: nfs-client-provisioner + env: + - name: NFS_SERVER + value: 192.168.88.50 + - name: NFS_PATH + value: /data/kubernetes/ + volumes: + - name: nfs-client-root + nfs: + server: 192.168.88.50 + path: /data/kubernetes/