diff --git a/apps/paperclip/deployment.yaml b/apps/paperclip/deployment.yaml index afbdc64..36416d0 100644 --- a/apps/paperclip/deployment.yaml +++ b/apps/paperclip/deployment.yaml @@ -111,4 +111,4 @@ spec: volumes: - name: data persistentVolumeClaim: - claimName: paperclip-data-encrypted + claimName: paperclip-data diff --git a/apps/paperclip/postgres-service.yaml b/apps/paperclip/postgres-service.yaml new file mode 100644 index 0000000..1c7f828 --- /dev/null +++ b/apps/paperclip/postgres-service.yaml @@ -0,0 +1,14 @@ +apiVersion: v1 +kind: Service +metadata: + name: paperclip-postgres + namespace: paperclip +spec: + type: ClusterIP + selector: + app: paperclip-postgres + ports: + - name: postgres + port: 5432 + targetPort: 5432 + protocol: TCP diff --git a/apps/paperclip/postgres-statefulset.yaml b/apps/paperclip/postgres-statefulset.yaml new file mode 100644 index 0000000..d8f4b7a --- /dev/null +++ b/apps/paperclip/postgres-statefulset.yaml @@ -0,0 +1,80 @@ +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: paperclip-postgres + namespace: paperclip +spec: + serviceName: paperclip-postgres + replicas: 1 + selector: + matchLabels: + app: paperclip-postgres + template: + metadata: + labels: + app: paperclip-postgres + spec: + containers: + - name: postgres + image: postgres:16-alpine + imagePullPolicy: IfNotPresent + ports: + - name: postgres + containerPort: 5432 + protocol: TCP + env: + - name: POSTGRES_DB + value: paperclip + - name: POSTGRES_USER + value: paperclip + - name: POSTGRES_PASSWORD + valueFrom: + secretKeyRef: + name: paperclip-secrets + key: POSTGRES_PASSWORD + resources: + requests: + cpu: 250m + memory: 512Mi + limits: + cpu: 1000m + memory: 2Gi + volumeMounts: + - name: postgres-data + mountPath: /var/lib/postgresql/data + subPath: pgdata + livenessProbe: + exec: + command: + - /bin/sh + - -c + - pg_isready -U paperclip + initialDelaySeconds: 30 + periodSeconds: 10 + timeoutSeconds: 5 + successThreshold: 1 + failureThreshold: 3 + readinessProbe: + exec: + command: + - /bin/sh + - -c + - pg_isready -U paperclip + initialDelaySeconds: 5 + periodSeconds: 5 + timeoutSeconds: 3 + successThreshold: 1 + failureThreshold: 3 + volumeClaimTemplates: + - metadata: + name: postgres-data + annotations: + # Prevent Argo CD from deleting this PVC to avoid data loss + argocd.argoproj.io/sync-options: Delete=false + spec: + accessModes: + - ReadWriteOnce + storageClassName: local-path + resources: + requests: + storage: 20Gi diff --git a/apps/paperclip/pvc.yaml b/apps/paperclip/pvc.yaml new file mode 100644 index 0000000..b133594 --- /dev/null +++ b/apps/paperclip/pvc.yaml @@ -0,0 +1,16 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: paperclip-data + namespace: paperclip + annotations: + # Prevent Argo CD from deleting this PVC to avoid data loss + argocd.argoproj.io/sync-options: Delete=false +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 50Gi + storageClassName: local-path + volumeMode: Filesystem