pg backup as well
This commit is contained in:
		@@ -1,32 +0,0 @@
 | 
				
			|||||||
apiVersion: batch/v1beta1
 | 
					 | 
				
			||||||
kind: CronJob
 | 
					 | 
				
			||||||
metadata:
 | 
					 | 
				
			||||||
  name: postgres-backup
 | 
					 | 
				
			||||||
spec:
 | 
					 | 
				
			||||||
  # Backup the database every day at 2AM
 | 
					 | 
				
			||||||
  schedule: "0 2 * * *"
 | 
					 | 
				
			||||||
  jobTemplate:
 | 
					 | 
				
			||||||
    spec:
 | 
					 | 
				
			||||||
      template:
 | 
					 | 
				
			||||||
        spec:
 | 
					 | 
				
			||||||
          containers:
 | 
					 | 
				
			||||||
          - name: postgres-backup
 | 
					 | 
				
			||||||
            image: postgres:12
 | 
					 | 
				
			||||||
            command: ["/bin/sh"]
 | 
					 | 
				
			||||||
            args: ["-c", 'echo "$PGPASS" > /root/.pgpass && chmod 600 /root/.pgpass && pg_dump -U postgres_admin -h postgres test_database > /var/backups/backup-$(date +"%m-%d-%Y-%H-%M").sql']
 | 
					 | 
				
			||||||
            env:
 | 
					 | 
				
			||||||
            - name: PGPASS
 | 
					 | 
				
			||||||
              valueFrom:
 | 
					 | 
				
			||||||
                secretKeyRef:
 | 
					 | 
				
			||||||
                  name: pgpass
 | 
					 | 
				
			||||||
                  key: pgpass
 | 
					 | 
				
			||||||
            volumeMounts:
 | 
					 | 
				
			||||||
            - mountPath: /var/backups
 | 
					 | 
				
			||||||
              name: postgres-storage
 | 
					 | 
				
			||||||
          restartPolicy: Never
 | 
					 | 
				
			||||||
          volumes:
 | 
					 | 
				
			||||||
          - name: postgres-storage
 | 
					 | 
				
			||||||
            hostPath:
 | 
					 | 
				
			||||||
            # Ensure the file directory is created.
 | 
					 | 
				
			||||||
              path: /var/volumes/postgres-backups
 | 
					 | 
				
			||||||
              type: DirectoryOrCreate
 | 
					 | 
				
			||||||
							
								
								
									
										37
									
								
								infrastructure/backup/postgres/cronjob.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								infrastructure/backup/postgres/cronjob.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,37 @@
 | 
				
			|||||||
 | 
					apiVersion: batch/v1
 | 
				
			||||||
 | 
					kind: CronJob
 | 
				
			||||||
 | 
					metadata:
 | 
				
			||||||
 | 
					  name: postgres-backup
 | 
				
			||||||
 | 
					spec:
 | 
				
			||||||
 | 
					  # Backup the database every day at 1AM
 | 
				
			||||||
 | 
					  schedule: "0 1 * * *"
 | 
				
			||||||
 | 
					  jobTemplate:
 | 
				
			||||||
 | 
					    spec:
 | 
				
			||||||
 | 
					      template:
 | 
				
			||||||
 | 
					        spec:
 | 
				
			||||||
 | 
					          containers:
 | 
				
			||||||
 | 
					          - name: postgres-backup
 | 
				
			||||||
 | 
					            image: postgres:15
 | 
				
			||||||
 | 
					            command: ["/bin/sh"]
 | 
				
			||||||
 | 
					            args:
 | 
				
			||||||
 | 
					              - "-c"
 | 
				
			||||||
 | 
					              - >-
 | 
				
			||||||
 | 
					                echo "$postgress_password" > /root/.pgpass
 | 
				
			||||||
 | 
					                &&
 | 
				
			||||||
 | 
					                chmod 600 /root/.pgpass
 | 
				
			||||||
 | 
					                &&
 | 
				
			||||||
 | 
					                pg_dumpall -U postgres -h postgrespostgres-postgresql.postgres > /backup/backup-$(date +"%m-%d-%Y-%H-%M").sql
 | 
				
			||||||
 | 
					            env:
 | 
				
			||||||
 | 
					            - name: PGpostgress_passwordPASS
 | 
				
			||||||
 | 
					              valueFrom:
 | 
				
			||||||
 | 
					                secretKeyRef:
 | 
				
			||||||
 | 
					                  name: postgres-password
 | 
				
			||||||
 | 
					                  key: password
 | 
				
			||||||
 | 
					            volumeMounts:
 | 
				
			||||||
 | 
					            - mountPath: /backup
 | 
				
			||||||
 | 
					              name: postgres-backup-claim
 | 
				
			||||||
 | 
					          restartPolicy: Never
 | 
				
			||||||
 | 
					          volumes:
 | 
				
			||||||
 | 
					          - name: postgres-backup-claim
 | 
				
			||||||
 | 
					            persistentVolumeClaim:
 | 
				
			||||||
 | 
					              claimName: postgres-backup-claim
 | 
				
			||||||
							
								
								
									
										9
									
								
								infrastructure/backup/postgres/kustomization.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								infrastructure/backup/postgres/kustomization.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,9 @@
 | 
				
			|||||||
 | 
					apiVersion: kustomize.config.k8s.io/v1beta1
 | 
				
			||||||
 | 
					kind: Kustomization
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace: backup
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					resources:
 | 
				
			||||||
 | 
					  - postgres.sealedsecret.yaml
 | 
				
			||||||
 | 
					  - pvc.yaml
 | 
				
			||||||
 | 
					  - cronjob.yaml
 | 
				
			||||||
							
								
								
									
										21
									
								
								infrastructure/backup/postgres/postgres.sealedsecret.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								infrastructure/backup/postgres/postgres.sealedsecret.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,21 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					  "kind": "SealedSecret",
 | 
				
			||||||
 | 
					  "apiVersion": "bitnami.com/v1alpha1",
 | 
				
			||||||
 | 
					  "metadata": {
 | 
				
			||||||
 | 
					    "name": "postgres-password",
 | 
				
			||||||
 | 
					    "namespace": "backup",
 | 
				
			||||||
 | 
					    "creationTimestamp": null
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "spec": {
 | 
				
			||||||
 | 
					    "template": {
 | 
				
			||||||
 | 
					      "metadata": {
 | 
				
			||||||
 | 
					        "name": "postgres-password",
 | 
				
			||||||
 | 
					        "namespace": "backup",
 | 
				
			||||||
 | 
					        "creationTimestamp": null
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "encryptedData": {
 | 
				
			||||||
 | 
					      "password": "AgBKXybtQWxHVX0UeQ9z5VOSJp9dadp+j+8VxBzyh37BdfLA9l5YppOWgK2RpmQmFmcrrxr7u2SgyJ4rP60n0r8LHLcmPTXAUJe5b07HTVOLn8Q4C9ObEkWVXBycmI5Kc8vHZ+OW8T3s/QqrnLIlQPOq56mjsWjO24O/72aUl4IzlrSq3NYPAMpQOwfgoam/4ZaHed6+Im40eQalkEWRlk5KOkSayWsrNJNccAhnZ8JapCP25pVVfz5xJc9286jNqTCgGt1Ez3xTXbd3LPI2QgeonIPU9zqlXeQgjS/UuAIuKyEW7ypD2/7lLoU1Yk4XMzIreVSrYgfy7ylnC++FPZBI+32/ocbEgpXPX9O/gb2tQLANVEn9BwVyPe3MW/vB63ryyfhtrPQbNJCJNnwKlsoS+HcVYBGAAtjdUYD4/2fKabH7Th2SlMIJvGBwhxpJo1bnblHoTUQ/Ao5gaUIcZC0qCnd9ZKVRKwtFsJrgqnEAapd9dNdDu9RBxVKAUa0TS+ahnXBaC87lvydb/9PxLz+J7E27oInt9coFEHpaZFNdt0QJXUqs3DF0JO7ll3wC+R1iDUWRY3NKf/bpiGgkwk3VtUkIXcW5biaD7lF8inrLVzktvQGET/CbYre5ws9qj5xF4NUYUivYexiP8isScnbrys671GizUjxFoPQpWotEHmZ9DNsIYOF3OvewKjDllpo1izKmY1Y="
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										13
									
								
								infrastructure/backup/postgres/pvc.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								infrastructure/backup/postgres/pvc.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,13 @@
 | 
				
			|||||||
 | 
					kind: PersistentVolumeClaim
 | 
				
			||||||
 | 
					apiVersion: v1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					metadata:
 | 
				
			||||||
 | 
					  name: postgres-backup-claim
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					spec:
 | 
				
			||||||
 | 
					  storageClassName: nfs-client
 | 
				
			||||||
 | 
					  accessModes:
 | 
				
			||||||
 | 
					    - ReadWriteOnce
 | 
				
			||||||
 | 
					  resources:
 | 
				
			||||||
 | 
					    requests:
 | 
				
			||||||
 | 
					      storage: 10Gi
 | 
				
			||||||
@@ -4,3 +4,4 @@ resources:
 | 
				
			|||||||
  - secrets.application.yaml
 | 
					  - secrets.application.yaml
 | 
				
			||||||
  - backup.application.yaml
 | 
					  - backup.application.yaml
 | 
				
			||||||
  - prune.application.yaml
 | 
					  - prune.application.yaml
 | 
				
			||||||
 | 
					  - postgres.backup.application.yaml
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										18
									
								
								kluster-deployments/backup/postgres.backup.application.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								kluster-deployments/backup/postgres.backup.application.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,18 @@
 | 
				
			|||||||
 | 
					apiVersion: argoproj.io/v1alpha1
 | 
				
			||||||
 | 
					kind: Application
 | 
				
			||||||
 | 
					metadata:
 | 
				
			||||||
 | 
					  name: postgres-backup-application
 | 
				
			||||||
 | 
					  namespace: argocd
 | 
				
			||||||
 | 
					spec:
 | 
				
			||||||
 | 
					  project: infrastructure
 | 
				
			||||||
 | 
					  source:
 | 
				
			||||||
 | 
					    repoURL: https://github.com/moll-re/k3s-infra.git
 | 
				
			||||||
 | 
					    targetRevision: main
 | 
				
			||||||
 | 
					    path: infrastructure/backup/postgres
 | 
				
			||||||
 | 
					  destination:
 | 
				
			||||||
 | 
					    server: https://kubernetes.default.svc
 | 
				
			||||||
 | 
					    namespace: backup
 | 
				
			||||||
 | 
					  syncPolicy:
 | 
				
			||||||
 | 
					    automated:
 | 
				
			||||||
 | 
					      prune: true
 | 
				
			||||||
 | 
					      selfHeal: true
 | 
				
			||||||
		Reference in New Issue
	
	Block a user