# Postgres 16 + pgvector para el corpus (namespace roswell). # El Secret roswell-pg-secret se crea imperativamente (PLAN Fase 6): # kubectl create secret generic roswell-pg-secret -n roswell \ # --from-literal=password= # NodePort 30432 para acceso desde la LAN/nodos durante el desarrollo local. apiVersion: v1 kind: Namespace metadata: name: roswell --- apiVersion: v1 kind: PersistentVolumeClaim metadata: annotations: # ArgoCD no debe podar nunca este PVC: contiene la BD del corpus. argocd.argoproj.io/sync-options: Prune=false name: roswell-pgdata namespace: roswell spec: accessModes: ["ReadWriteOnce"] resources: requests: storage: 20Gi --- apiVersion: apps/v1 kind: Deployment metadata: name: postgres namespace: roswell spec: replicas: 1 strategy: type: Recreate selector: matchLabels: app: roswell-postgres template: metadata: labels: app: roswell-postgres spec: containers: - name: postgres image: pgvector/pgvector:pg16 env: - name: POSTGRES_DB value: roswell - name: POSTGRES_USER value: roswell - name: POSTGRES_PASSWORD valueFrom: secretKeyRef: name: roswell-pg-secret key: password - name: PGDATA value: /var/lib/postgresql/data/pgdata ports: - containerPort: 5432 volumeMounts: - name: pgdata mountPath: /var/lib/postgresql/data resources: requests: memory: 256Mi cpu: 100m limits: memory: 1Gi readinessProbe: exec: command: ["pg_isready", "-U", "roswell", "-d", "roswell"] initialDelaySeconds: 5 periodSeconds: 5 volumes: - name: pgdata persistentVolumeClaim: claimName: roswell-pgdata --- apiVersion: v1 kind: Service metadata: name: postgres namespace: roswell spec: type: NodePort selector: app: roswell-postgres ports: - port: 5432 targetPort: 5432 nodePort: 30432