apiVersion: batch/v1 kind: Job metadata: name: hasura-bootstrap annotations: argocd.argoproj.io/sync-wave: "2" spec: backoffLimit: 5 template: spec: restartPolicy: OnFailure initContainers: - name: wait-db image: postgres:16 imagePullPolicy: IfNotPresent envFrom: - secretRef: name: trade-postgres command: - sh - -ec - | export PGPASSWORD="$POSTGRES_PASSWORD" until pg_isready -h postgres -U "$POSTGRES_USER" -d "$POSTGRES_DB"; do sleep 1; done until psql -h postgres -U "$POSTGRES_USER" -d "$POSTGRES_DB" -v ON_ERROR_STOP=1 -c "select 1 from public.drift_ticks limit 1" >/dev/null 2>&1; do sleep 1; done containers: - name: hasura-bootstrap image: node:20-slim imagePullPolicy: IfNotPresent env: - name: HASURA_URL value: http://hasura:8080 - name: HASURA_ADMIN_SECRET valueFrom: secretKeyRef: name: trade-hasura key: HASURA_GRAPHQL_ADMIN_SECRET - name: TICKS_TABLE value: drift_ticks - name: CANDLES_FUNCTION value: get_drift_candles command: ["node", "/app/hasura-bootstrap.mjs"] volumeMounts: - name: script mountPath: /app/hasura-bootstrap.mjs subPath: hasura-bootstrap.mjs readOnly: true volumes: - name: script configMap: name: hasura-bootstrap-script