# Guildhall DB migration Job. # # Runs `Guildhall.OpsDb.Release.migrate/0` via the compiled release's # `bin/guildhall eval` entry point. Intended to be applied ONCE per # image-tag deploy, BEFORE the guildhall Deployment is created or # rolled. Running migrations from within the app pods on startup # would race across replicas and is explicitly avoided. # # The Job name includes the image tag so multiple deploys across tags # can coexist in history (Kubernetes Jobs with the same name cannot # be re-run without deletion). For deploy N+1, either: # kubectl delete job guildhall-migrate-v0-1-0 -n guildhall # kubectl apply -f 60-migration-job.yaml # update the name first # or use `kubectl create job --from=...` with a fresh name. apiVersion: batch/v1 kind: Job metadata: name: guildhall-migrate-v0-1-0 namespace: guildhall labels: app.kubernetes.io/name: guildhall app.kubernetes.io/part-of: guildhouse app.kubernetes.io/component: migration app.kubernetes.io/managed-by: manual app.kubernetes.io/version: v0.1.0 spec: backoffLimit: 3 ttlSecondsAfterFinished: 86400 template: metadata: labels: app: guildhall-migrate app.kubernetes.io/name: guildhall app.kubernetes.io/part-of: guildhouse app.kubernetes.io/component: migration spec: restartPolicy: OnFailure imagePullSecrets: - name: guildhall-registry containers: - name: migrate image: git.guildhouse.dev/tking/guildhall:v0.1.0 imagePullPolicy: IfNotPresent command: - /app/bin/guildhall - eval - "Guildhall.OpsDb.Release.migrate()" env: - name: DATABASE_URL valueFrom: secretKeyRef: name: guildhall-app-secrets key: DATABASE_URL - name: SECRET_KEY_BASE valueFrom: secretKeyRef: name: guildhall-app-secrets key: SECRET_KEY_BASE - name: POOL_SIZE value: "2" resources: requests: cpu: 100m memory: 256Mi limits: memory: 512Mi