apiVersion: apps/v1
kind: Deployment
metadata:
  name: airshelf-core-worker
  labels:
    app: airshelf-core-worker
spec:
  replicas: 1
  selector:
    matchLabels:
      app: airshelf-core-worker
  template:
    metadata:
      labels:
        app: airshelf-core-worker
    spec:
      imagePullSecrets:
      - name: cr-pull-secret
      containers:
      - name: airshelf-core-worker
        image: ${CI_REGISTRY_IMAGE}/airshelf-core-api:latest
        imagePullPolicy: Always
        # Celery worker connects to the external (Volcano managed) Redis broker
        # configured via the airshelf-core-env secret. Uses `args` (not `command`)
        # so the image ENTRYPOINT still runs but skips migrate/collectstatic ($1=celery).
        args: ["celery", "-A", "airshelf.celery:app", "worker", "-l", "info", "--concurrency", "2"]
        envFrom:
        - secretRef:
            name: airshelf-core-env
        livenessProbe:
          exec:
            command: ["sh", "-c", "celery -A airshelf.celery:app inspect ping"]
          initialDelaySeconds: 40
          periodSeconds: 60
          timeoutSeconds: 15
          failureThreshold: 3
        resources:
          requests:
            memory: "256Mi"
            cpu: "100m"
          limits:
            memory: "768Mi"
            cpu: "1000m"
