Skip to content

Webserver fails to start despite apparently successful helm install #53174

@jjc-sri

Description

@jjc-sri

Official Helm Chart version

1.17.0 (latest released)

Apache Airflow version

default

Kubernetes Version

1.30.9

Helm Chart configuration

I ran helm upgrade --install ... with no values.yaml or --set parameters.

Docker Image customizations

None

What happened

I installed the helm chart with all the defaults. From the output of the install command and logs, installation appeared successful. But there was no airflow-webserver pod nor service created. So of course kubectl port-forward svc/airflow-webserver 8080:8080 --namespace my-namespace failed, complaining the service doesn't exist:

Error from server (NotFound): services "airflow-webserver" not found

What you think should happen instead

There should be a webserver pod and service listed in kubectl get pods and kubectl get services respectively. kubectl port-forward ... should have succeeded.

How to reproduce

The exact command I ran (with only namespace name changed):

helm upgrade --install airflow apache-airflow/airflow --debug --namespace my-namespace 2>&1 | tee helm-log.out

Anything else

Output of kubectl get pods after helm upgrade --install ...

NAME                      TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)             AGE
airflow-api-server        ClusterIP   <redacted>     <none>        8080/TCP            67s
airflow-postgresql        ClusterIP   <redacted>     <none>        5432/TCP            67s
airflow-postgresql-hl     ClusterIP   None           <none>        5432/TCP            67s
airflow-redis             ClusterIP   <redacted>     <none>        6379/TCP            67s
airflow-statsd            ClusterIP   <redacted>     <none>        9125/UDP,9102/TCP   67s
airflow-triggerer         ClusterIP   None           <none>        8794/TCP            67s
airflow-worker            ClusterIP   None           <none>        8793/TCP            67s
<non-airflow pods>

Output of kubectl get services after helm upgrade --install ...

NAME                      TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)             AGE
airflow-api-server        ClusterIP   <redacted>     <none>        8080/TCP            5m48s
airflow-postgresql        ClusterIP   <redacted>     <none>        5432/TCP            5m48s
airflow-postgresql-hl     ClusterIP   None           <none>        5432/TCP            5m48s
airflow-redis             ClusterIP   <redacted>     <none>        6379/TCP            5m48s
airflow-statsd            ClusterIP   <redacted>     <none>        9125/UDP,9102/TCP   5m48s
airflow-triggerer         ClusterIP   None           <none>        8794/TCP            5m48s
airflow-worker            ClusterIP   None           <none>        8793/TCP            5m48s
<non-airflow services>
logs/ `helm upgrade --install ...` output
history.go:56: 2025-07-11 04:49:31.545125262 -0400 EDT m=+0.056526162 [debug] getting history for release airflow
Release "airflow" does not exist. Installing it now.
install.go:225: 2025-07-11 04:49:31.551304668 -0400 EDT m=+0.062705568 [debug] Original chart version: ""
install.go:242: 2025-07-11 04:49:32.241497293 -0400 EDT m=+0.752898203 [debug] CHART PATH: /home/my-username/.cache/helm/repository/airflow-1.17.0.tgz

client.go:506: 2025-07-11 04:49:33.703020184 -0400 EDT m=+2.214421083 [debug] Starting delete for "airflow-broker-url" Secret
wait.go:114: 2025-07-11 04:49:33.709793093 -0400 EDT m=+2.221193989 [debug] beginning wait for 1 resources to be deleted with timeout of 5m0s
client.go:144: 2025-07-11 04:49:33.894115484 -0400 EDT m=+2.405516435 [debug] creating 1 resource(s)
client.go:506: 2025-07-11 04:49:33.904842899 -0400 EDT m=+2.416243799 [debug] Starting delete for "airflow-fernet-key" Secret
wait.go:114: 2025-07-11 04:49:33.911308499 -0400 EDT m=+2.422709406 [debug] beginning wait for 1 resources to be deleted with timeout of 5m0s
client.go:144: 2025-07-11 04:49:34.094108082 -0400 EDT m=+2.605508997 [debug] creating 1 resource(s)
client.go:506: 2025-07-11 04:49:34.106763765 -0400 EDT m=+2.618164667 [debug] Starting delete for "airflow-redis-password" Secret
wait.go:114: 2025-07-11 04:49:34.114126297 -0400 EDT m=+2.625527196 [debug] beginning wait for 1 resources to be deleted with timeout of 5m0s
client.go:144: 2025-07-11 04:49:34.322754278 -0400 EDT m=+2.834155194 [debug] creating 1 resource(s)
client.go:144: 2025-07-11 04:49:34.329851069 -0400 EDT m=+2.841251965 [debug] creating 34 resource(s)
client.go:506: 2025-07-11 04:49:34.646141042 -0400 EDT m=+3.157541947 [debug] Starting delete for "airflow-run-airflow-migrations" Job
wait.go:114: 2025-07-11 04:49:34.674430928 -0400 EDT m=+3.185831836 [debug] beginning wait for 1 resources to be deleted with timeout of 5m0s
client.go:144: 2025-07-11 04:49:35.084639396 -0400 EDT m=+3.596040312 [debug] creating 1 resource(s)
client.go:753: 2025-07-11 04:49:35.129600624 -0400 EDT m=+3.641001524 [debug] Watching for changes to Job airflow-run-airflow-migrations with timeout of 5m0s
client.go:781: 2025-07-11 04:49:35.146596426 -0400 EDT m=+3.657997331 [debug] Add/Modify event for airflow-run-airflow-migrations: ADDED
client.go:820: 2025-07-11 04:49:35.146668534 -0400 EDT m=+3.658069435 [debug] airflow-run-airflow-migrations: Jobs active: 0, jobs failed: 0, jobs succeeded: 0
client.go:781: 2025-07-11 04:49:35.209837963 -0400 EDT m=+3.721238878 [debug] Add/Modify event for airflow-run-airflow-migrations: MODIFIED
client.go:820: 2025-07-11 04:49:35.209873943 -0400 EDT m=+3.721274843 [debug] airflow-run-airflow-migrations: Jobs active: 1, jobs failed: 0, jobs succeeded: 0
client.go:781: 2025-07-11 04:49:39.599165334 -0400 EDT m=+8.110566234 [debug] Add/Modify event for airflow-run-airflow-migrations: MODIFIED
client.go:820: 2025-07-11 04:49:39.599208539 -0400 EDT m=+8.110609438 [debug] airflow-run-airflow-migrations: Jobs active: 1, jobs failed: 0, jobs succeeded: 0
client.go:781: 2025-07-11 04:50:02.673171335 -0400 EDT m=+31.184572341 [debug] Add/Modify event for airflow-run-airflow-migrations: MODIFIED
client.go:820: 2025-07-11 04:50:02.673241354 -0400 EDT m=+31.184642254 [debug] airflow-run-airflow-migrations: Jobs active: 1, jobs failed: 0, jobs succeeded: 0
client.go:781: 2025-07-11 04:50:03.684319966 -0400 EDT m=+32.195720882 [debug] Add/Modify event for airflow-run-airflow-migrations: MODIFIED
client.go:820: 2025-07-11 04:50:03.684372173 -0400 EDT m=+32.195773072 [debug] airflow-run-airflow-migrations: Jobs active: 0, jobs failed: 0, jobs succeeded: 0
client.go:781: 2025-07-11 04:50:03.729639424 -0400 EDT m=+32.241040340 [debug] Add/Modify event for airflow-run-airflow-migrations: MODIFIED
client.go:506: 2025-07-11 04:50:03.735867085 -0400 EDT m=+32.247267985 [debug] Starting delete for "airflow-create-user" Job
client.go:510: 2025-07-11 04:50:03.739741424 -0400 EDT m=+32.251142340 [debug] Ignoring delete failure for "airflow-create-user" batch/v1, Kind=Job: jobs.batch "airflow-create-user" not found
wait.go:114: 2025-07-11 04:50:03.739940247 -0400 EDT m=+32.251341161 [debug] beginning wait for 1 resources to be deleted with timeout of 5m0s
client.go:144: 2025-07-11 04:50:03.905736534 -0400 EDT m=+32.417137488 [debug] creating 1 resource(s)
client.go:753: 2025-07-11 04:50:03.925754386 -0400 EDT m=+32.437155287 [debug] Watching for changes to Job airflow-create-user with timeout of 5m0s
client.go:781: 2025-07-11 04:50:03.929377944 -0400 EDT m=+32.440778857 [debug] Add/Modify event for airflow-create-user: ADDED
client.go:820: 2025-07-11 04:50:03.92940602 -0400 EDT m=+32.440806920 [debug] airflow-create-user: Jobs active: 0, jobs failed: 0, jobs succeeded: 0
client.go:781: 2025-07-11 04:50:03.971081717 -0400 EDT m=+32.482482632 [debug] Add/Modify event for airflow-create-user: MODIFIED
client.go:820: 2025-07-11 04:50:03.971129055 -0400 EDT m=+32.482529954 [debug] airflow-create-user: Jobs active: 1, jobs failed: 0, jobs succeeded: 0
client.go:781: 2025-07-11 04:50:07.504813384 -0400 EDT m=+36.016214300 [debug] Add/Modify event for airflow-create-user: MODIFIED
client.go:820: 2025-07-11 04:50:07.504854763 -0400 EDT m=+36.016255661 [debug] airflow-create-user: Jobs active: 1, jobs failed: 0, jobs succeeded: 0
client.go:781: 2025-07-11 04:50:20.550795883 -0400 EDT m=+49.062196799 [debug] Add/Modify event for airflow-create-user: MODIFIED
client.go:820: 2025-07-11 04:50:20.55083397 -0400 EDT m=+49.062234870 [debug] airflow-create-user: Jobs active: 1, jobs failed: 0, jobs succeeded: 0
client.go:781: 2025-07-11 04:50:21.565168274 -0400 EDT m=+50.076569190 [debug] Add/Modify event for airflow-create-user: MODIFIED
client.go:820: 2025-07-11 04:50:21.565208323 -0400 EDT m=+50.076609222 [debug] airflow-create-user: Jobs active: 0, jobs failed: 0, jobs succeeded: 0
client.go:781: 2025-07-11 04:50:21.617496159 -0400 EDT m=+50.128897075 [debug] Add/Modify event for airflow-create-user: MODIFIED
client.go:506: 2025-07-11 04:50:21.623682259 -0400 EDT m=+50.135083169 [debug] Starting delete for "airflow-create-user" Job
wait.go:114: 2025-07-11 04:50:21.631907385 -0400 EDT m=+50.143308295 [debug] beginning wait for 1 resources to be deleted with timeout of 5m0s
client.go:506: 2025-07-11 04:50:21.645159041 -0400 EDT m=+50.156559940 [debug] Starting delete for "airflow-run-airflow-migrations" Job
wait.go:114: 2025-07-11 04:50:21.655232454 -0400 EDT m=+50.166633350 [debug] beginning wait for 1 resources to be deleted with timeout of 5m0s
NAME: airflow
LAST DEPLOYED: Fri Jul 11 04:49:32 2025
NAMESPACE: my-namespace
STATUS: deployed
REVISION: 1
TEST SUITE: None
USER-SUPPLIED VALUES:
{}

COMPUTED VALUES:
<omitted>

---
# Source: airflow/templates/api-server/api-server-ingress.yaml
################################
## Airflow API Server Ingress
#################################
---
# Source: airflow/templates/api-server/api-server-networkpolicy.yaml
################################
## Airflow API Server NetworkPolicy
#################################
---
# Source: airflow/templates/api-server/api-server-poddisruptionbudget.yaml
################################
## Airflow API Server PodDisruptionBudget
#################################
---
# Source: airflow/templates/cleanup/cleanup-cronjob.yaml
################################
## Airflow Cleanup Pods CronJob
#################################
---
# Source: airflow/templates/cleanup/cleanup-serviceaccount.yaml
################################
## Airflow Cleanup ServiceAccount
#################################
---
# Source: airflow/templates/configmaps/api-server-configmap.yaml
################################
## Airflow ConfigMap
#################################
---
# Source: airflow/templates/configmaps/extra-configmaps.yaml
####################################################
## Extra ConfigMaps provisioned via the chart values
####################################################
---
# Source: airflow/templates/configmaps/webserver-configmap.yaml
################################
## Airflow ConfigMap
#################################
---
# Source: airflow/templates/dags-persistent-volume-claim.yaml
######################################
## Airflow DAGs PersistentVolumeClaim
######################################
---
# Source: airflow/templates/flower/flower-deployment.yaml
################################
## Airflow Flower Deployment
#################################
---
# Source: airflow/templates/flower/flower-ingress.yaml
################################
## Airflow Flower Ingress
#################################
---
# Source: airflow/templates/flower/flower-networkpolicy.yaml
################################
## Airflow Flower NetworkPolicy
#################################
---
# Source: airflow/templates/flower/flower-service.yaml
################################
## Airflow Flower Service Component
#################################
---
# Source: airflow/templates/flower/flower-serviceaccount.yaml
######################################
## Airflow Flower ServiceAccount
######################################
---
# Source: airflow/templates/limitrange.yaml
################################
## Airflow Namespace LimitRange
#################################
---
# Source: airflow/templates/logs-persistent-volume-claim.yaml
######################################
## Airflow LOGs PersistentVolumeClaim
######################################
---
# Source: airflow/templates/pgbouncer/pgbouncer-deployment.yaml
################################
## Airflow Pgbouncer Deployment
#################################
---
# Source: airflow/templates/pgbouncer/pgbouncer-ingress.yaml
################################
## Airflow Pgbouncer Ingress
#################################
---
# Source: airflow/templates/pgbouncer/pgbouncer-networkpolicy.yaml
################################
## Pgbouncer NetworkPolicy
#################################
---
# Source: airflow/templates/pgbouncer/pgbouncer-poddisruptionbudget.yaml
################################
## Pgbouncer PodDisruptionBudget
#################################
---
# Source: airflow/templates/pgbouncer/pgbouncer-service.yaml
################################
## Airflow Pgbouncer Service
#################################
---
# Source: airflow/templates/pgbouncer/pgbouncer-serviceaccount.yaml
######################################
## Airflow Pgbouncer ServiceAccount
######################################
---
# Source: airflow/templates/priorityclasses/priority-classes.yaml
#################################################
## Priority classes provisioned via the chart values
#################################################
---
# Source: airflow/templates/rbac/pod-cleanup-role.yaml
################################
## Airflow Cleanup Role
#################################
---
# Source: airflow/templates/rbac/pod-cleanup-rolebinding.yaml
################################
## Airflow Cleanup Role Binding
#################################
---
# Source: airflow/templates/rbac/security-context-constraint-rolebinding.yaml
################################
## Airflow SCC Role Binding
#################################
---
# Source: airflow/templates/redis/redis-networkpolicy.yaml
################################
## Airflow Redis NetworkPolicy
#################################
---
# Source: airflow/templates/resourcequota.yaml
################################
## Airflow Namespace ResourceQuota
#################################
---
# Source: airflow/templates/scheduler/scheduler-networkpolicy.yaml
################################
## Airflow Scheduler NetworkPolicy
#################################
---
# Source: airflow/templates/scheduler/scheduler-poddisruptionbudget.yaml
################################
## Airflow Scheduler PodDisruptionBudget
#################################
---
# Source: airflow/templates/scheduler/scheduler-service.yaml
################################
## Airflow Scheduler Service
#################################
---
# Source: airflow/templates/secrets/elasticsearch-secret.yaml
################################
## Elasticsearch Secret
#################################
---
# Source: airflow/templates/secrets/extra-secrets.yaml
#################################################
## Extra Secrets provisioned via the chart values
#################################################
---
# Source: airflow/templates/secrets/flower-secret.yaml
################################
## Flower Secret
#################################
---
# Source: airflow/templates/secrets/kerberos-keytab-secret.yaml
################################
## Kerberos Secret
#################################
---
# Source: airflow/templates/secrets/opensearch-secret.yaml
################################
## OpenSearch Secret
#################################
---
# Source: airflow/templates/secrets/pgbouncer-certificates-secret.yaml
################################
## Pgbouncer Certificate Secret
#################################
---
# Source: airflow/templates/secrets/pgbouncer-config-secret.yaml
################################
## Pgbouncer Config Secret
#################################
---
# Source: airflow/templates/secrets/pgbouncer-stats-secret.yaml
################################
## Pgbouncer Stats Secret
#################################
---
# Source: airflow/templates/secrets/registry-secret.yaml
################################
## Registry Secret
#################################
---
# Source: airflow/templates/secrets/result-backend-connection-secret.yaml
################################
## Airflow Result Backend Secret
#################################
---
# Source: airflow/templates/statsd/statsd-ingress.yaml
################################
## Airflow Statsd Ingress
#################################
---
# Source: airflow/templates/statsd/statsd-networkpolicy.yaml
################################
## Airflow StatsD NetworkPolicy
#################################
---
# Source: airflow/templates/triggerer/triggerer-kedaautoscaler.yaml
################################
## Airflow Triggerer KEDA Scaler
#################################
---
# Source: airflow/templates/triggerer/triggerer-networkpolicy.yaml
##################################
## Airflow triggerer NetworkPolicy
##################################
---
# Source: airflow/templates/webserver/webserver-deployment.yaml
################################
## Airflow Webserver Deployment
#################################
---
# Source: airflow/templates/webserver/webserver-hpa.yaml
################################
## Airflow Webserver HPA
#################################
---
# Source: airflow/templates/webserver/webserver-ingress.yaml
################################
## Airflow Webserver Ingress
#################################
---
# Source: airflow/templates/webserver/webserver-networkpolicy.yaml
################################
## Airflow Webserver NetworkPolicy
#################################
---
# Source: airflow/templates/webserver/webserver-poddisruptionbudget.yaml
################################
## Airflow Webserver PodDisruptionBudget
#################################
---
# Source: airflow/templates/webserver/webserver-service.yaml
################################
## Airflow Webserver Service
#################################
---
# Source: airflow/templates/webserver/webserver-serviceaccount.yaml
######################################
## Airflow Webserver ServiceAccount
######################################
---
# Source: airflow/templates/workers/worker-hpa.yaml
################################
## Airflow Worker HPA
#################################
---
# Source: airflow/templates/workers/worker-kedaautoscaler.yaml
################################
## Airflow Worker KEDA Scaler
#################################
---
# Source: airflow/templates/workers/worker-networkpolicy.yaml
################################
## Airflow Worker NetworkPolicy
#################################

NOTES:
Thank you for installing Apache Airflow 3.0.2!

Your release is named airflow.
You can now access your dashboard(s) by executing the following command(s) and visiting the corresponding port at localhost in your browser:

Airflow Webserver:     kubectl port-forward svc/airflow-webserver 8080:8080 --namespace my-namespace
Default Webserver (Airflow UI) Login credentials:
    username: admin
    password: admin
Default Postgres connection credentials:
    username: postgres
    password: postgres
    port: 5432

You can get Fernet Key value by running the following:

    echo Fernet Key: $(kubectl get secret --namespace my-namespace airflow-fernet-key -o jsonpath="{.data.fernet-key}" | base64 --decode)

###########################################################
#  WARNING: You should set a static webserver secret key  #
###########################################################

You are using a dynamically generated webserver secret key, which can lead to
unnecessary restarts of your Airflow components.

Information on how to set a static webserver secret key can be found here:
https://airflow.apache.org/docs/helm-chart/stable/production-guide.html#webserver-secret-key

Are you willing to submit PR?

  • Yes I am willing to submit a PR!

Code of Conduct

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:helm-chartAirflow Helm Chartkind:bugThis is a clearly a bugneeds-triagelabel for new issues that we didn't triage yet

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions