apiVersion: batch/v1 kind: Job metadata: name: turbovault-migrate namespace: turbovault labels: app: turbovault job: migrate spec: template: metadata: labels: app: turbovault job: migrate spec: restartPolicy: OnFailure # For private registries, uncomment and create secret: # imagePullSecrets: # - name: registry-secret containers: - name: migrate # UPDATE THIS: Replace with your registry path (same as deployment.yaml) image: ghcr.io/username/turbovault:latest command: ["bundle", "exec", "rails", "db:migrate"] env: # Load from ConfigMap - name: RAILS_ENV valueFrom: configMapKeyRef: name: turbovault-config key: RAILS_ENV - name: DATABASE_HOST valueFrom: configMapKeyRef: name: turbovault-config key: DATABASE_HOST - name: DATABASE_PORT valueFrom: configMapKeyRef: name: turbovault-config key: DATABASE_PORT - name: DATABASE_NAME valueFrom: configMapKeyRef: name: turbovault-config key: DATABASE_NAME - name: DATABASE_USERNAME valueFrom: configMapKeyRef: name: turbovault-config key: DATABASE_USERNAME # Load from Secrets - name: DATABASE_PASSWORD valueFrom: secretKeyRef: name: turbovault-secrets key: DATABASE_PASSWORD - name: SECRET_KEY_BASE valueFrom: secretKeyRef: name: turbovault-secrets key: SECRET_KEY_BASE backoffLimit: 3