Skip to content

docs(deps): document Airflow logs PVC ReadWriteMany requirement#494

Open
safayavatsal wants to merge 1 commit into
open-metadata:mainfrom
safayavatsal:fix/468-airflow-logs-pvc-rwx-docs
Open

docs(deps): document Airflow logs PVC ReadWriteMany requirement#494
safayavatsal wants to merge 1 commit into
open-metadata:mainfrom
safayavatsal:fix/468-airflow-logs-pvc-rwx-docs

Conversation

@safayavatsal

Copy link
Copy Markdown
Contributor

Summary

Fixes #468

The upstream Apache Airflow Helm chart (v1.18.0) hardcodes ReadWriteMany as the access mode on the logs PersistentVolumeClaim (logs-persistent-volume-claim.yaml:41). This causes PVC provisioning failures on clusters whose default storage class only supports ReadWriteOnce, such as GKE Autopilot with standard-rwo:

VolumeCapabilities is invalid: specified multi writer with mount access type

Unlike the DAGs PVC (which uses a configurable dags.persistence.accessMode), the logs PVC access mode is not configurable — even in the latest upstream chart version (v1.20.0).

Changes

  • charts/deps/values.yaml: Added a WARNING comment above the airflow.logs.persistence section explaining the RWX requirement and two workarounds (use an RWX storage class, or disable logs persistence)
  • charts/deps/README.md:
    • Expanded the "Configure RWX Storage" guidance to cover both DAGs and logs
    • Added a cloud provider RWX storage class reference table (AWS, Azure, GKE, GKE Autopilot)
    • Updated example production values to include logs.persistence.storageClassName

Root Cause Analysis

PVC Access Mode Configurable? Status
DAGs ReadWriteOnce (default) Yes (dags.persistence.accessMode) Works
Logs ReadWriteMany (hardcoded) No Fails on RWO-only storage
OpenSearch ReadWriteOnce Yes Works

Workarounds for affected users

  1. Use an RWX-capable storage class:

    airflow:
      logs:
        persistence:
          storageClassName: "filestore-rwx"  # GKE example
  2. Disable logs persistence:

    airflow:
      logs:
        persistence:
          enabled: false

Test plan

  • Verify helm template --dry-run renders cleanly with default values
  • Verify README renders correctly on GitHub
  • Confirm workarounds resolve the issue on GKE Autopilot

The upstream Airflow chart (v1.18.0) hardcodes ReadWriteMany on the logs
PVC, which causes provisioning failures on clusters that only support
ReadWriteOnce (e.g., GKE Autopilot with standard-rwo storage class).

- Add WARNING comment in values.yaml above logs persistence config
- Update README with RWX storage guidance for both DAGs and logs
- Add cloud provider RWX storage class reference table
- Include logs storageClassName in production example values

Closes open-metadata#468
@safayavatsal

Copy link
Copy Markdown
Contributor Author

Taking up issue #468.

Root cause: The upstream Apache Airflow Helm chart (v1.18.0 through v1.20.0) hardcodes accessModes: ["ReadWriteMany"] in logs-persistent-volume-claim.yaml. This is not configurable via values, unlike the DAGs PVC which exposes dags.persistence.accessMode. On clusters where the default (or specified) storage class only supports ReadWriteOnce — such as GKE Autopilot with standard-rwo — the volume provisioner rejects the PVC with:

VolumeCapabilities is invalid: specified multi writer with mount access type

Since this is an upstream issue that cannot be patched from the parent chart (Helm does not allow overriding subchart templates), this PR adds clear documentation and warnings so users can apply the appropriate workaround for their environment.

A proper fix would require the Apache Airflow Helm chart to templatize logs.persistence.accessMode the same way it does for dags.persistence.accessMode.

@safayavatsal safayavatsal mentioned this pull request Apr 9, 2026
3 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

PVC error on GKE Autopilot

1 participant