Skip to content

migration check fails when on "helm install" without airflow.providers.fab.auth_manager.models.db.FABDBManager #63847

Description

@till

Official Helm Chart version

1.19.0 (latest released)

Apache Airflow version

3.1.7

Kubernetes Version

not relevant

Helm Chart configuration

executor: KubernetesExecutor
securityContexts:
  pod:
    runAsNonRoot: true
    seccompProfile:
      type: RuntimeDefault

# FAB auth manager requires explicit external_db_managers so that
# `airflow db migrate` creates FAB tables (ab_user, ab_role, etc.).
# Auto-discovery via create_auth_manager() fails silently in the migrate job context.
config:
  database:
    external_db_managers: airflow.providers.fab.auth_manager.models.db.FABDBManager

# Global volume — mounts into all pods (including those running git-sync)
volumes:
  - name: github-app-key
    secret:
      secretName: airflow-github-app
      defaultMode: 0444

dags:
  gitSync:
    enabled: true
    repo: https://github.com/org/repo.git
    branch: main
    ref: main
    subPath: ""
    period: 60s
    securityContexts:
      container:
        allowPrivilegeEscalation: false
        capabilities:
          drop:
            - ALL
    extraVolumeMounts:
      - name: github-app-key
        mountPath: /etc/github-app
        readOnly: true
    env:
      - name: GITSYNC_GITHUB_APP_APPLICATION_ID
        valueFrom:
          secretKeyRef:
            name: airflow-github-app
            key: app-id
      - name: GITSYNC_GITHUB_APP_INSTALLATION_ID
        valueFrom:
          secretKeyRef:
            name: airflow-github-app
            key: installation-id
      - name: GITSYNC_GITHUB_APP_PRIVATE_KEY_FILE
        value: /etc/github-app/private-key.pem

postgresql:
  enabled: false
redis:
  enabled: false
flower:
  enabled: false
statsd:
  enabled: false
data:
  metadataConnection:
    protocol: postgresql
    # host, port, user, pass, db injected at deploy time
    sslmode: require

# Webserver secret key — injected via --set at deploy time
# webserverSecretKey: <set at deploy time>

# API Server serves the web UI in Airflow 3.x
apiServer:
  replicas: 1
  resources:
    requests:
      cpu: 250m
      memory: 512Mi
    limits:
      cpu: "1"
      memory: 2Gi

scheduler:
  replicas: 1
  resources:
    requests:
      cpu: 250m
      memory: 512Mi
    limits:
      cpu: "1"
      memory: 2Gi

ingress:
  apiServer:
    enabled: true
    ingressClassName: haproxy
    hosts:
      - name: airflow.example.org
        tls:
          enabled: true

createUserJob:
  resources:
    requests:
      cpu: 100m
      memory: 256Mi
    limits:
      cpu: 500m
      memory: 512Mi

migrateDatabaseJob:
  resources:
    requests:
      cpu: 100m
      memory: 256Mi
    limits:
      cpu: 500m
      memory: 512Mi

Docker Image customizations

No response

What happened

Trying to setup Airflow, I was surprised I had to set the following:

config:
  database:
    external_db_managers: airflow.providers.fab.auth_manager.models.db.FABDBManager

Otherwise, services never start because the migration check fails.

What you think should happen instead

Maybe better defaults in the helm values. I am also not sure what "FAB" is really for. :)

How to reproduce

Take my config above:

helm upgrade --install -f values-from-helm.yml -f my-helm-values.yml etc.

Anything else

No response

Are you willing to submit PR?

  • Yes I am willing to submit a PR!

Code of Conduct

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions