Objective
I want to deploy Airflow on Kubernetes where pods have access to the same DAGs, in a Shared Persistent Volume.
According to the documentation (https://github.com/helm/charts/tree/master/stable/airflow#using-one-volume-for-both-logs-and-dags), it seems I have to set and pass these values to Helm: extraVolume
, extraVolumeMount
, persistence.enabled
, logsPersistence.enabled
, dags.path
, logs.path
.
Problem
Any custom values I pass when installing the official Helm chart results in errors similar to:
Error: YAML parse error on airflow/templates/deployments-web.yaml: error converting YAML to JSON: yaml: line 69: could not find expected ':'
- Works fine:
microk8s.helm install --namespace "airflow" --name "airflow" stable/airflow
- Not working:
microk8s.helm install --namespace "airflow" --name "airflow" stable/airflow \
--set airflow.extraVolumes=/home/*user*/github/airflowDAGs \
--set airflow.extraVolumeMounts=/home/*user*/github/airflowDAGs \
--set dags.path=/home/*user*/github/airflowDAGs/dags \
--set logs.path=/home/*user*/github/airflowDAGs/logs \
--set persistence.enabled=false \
--set logsPersistence.enabled=false
- Also not working:
microk8s.helm install --namespace "airflow" --name "airflow" stable/airflow --values=values_pv.yaml
, withvalues_pv.yaml
: https://pastebin.com/PryCgKnC- Edit: Please change
/home/*user*/github/airflowDAGs
to a path on your machine to replicate the error.
- Edit: Please change
Concerns
- Maybe it is going wrong because of these lines in the default
values.yaml
:
## Configure DAGs deployment and update
dags:
##
## mount path for persistent volume.
## Note that this location is referred to in airflow.cfg, so if you change it, you must update airflow.cfg accordingly.
path: /home/*user*/github/airflowDAGs/dags
How do I configure airflow.cfg
in a Kubernetes deployement? In a non-containerized deployment of Airflow, this file can be found in ~/airflow/airflow.cfg
.
- Line 69 in
airflow.cfg
refers to: https://github.com/helm/charts/blob/master/stable/airflow/templates/deployments-web.yaml#L69
Which contains git
. Are the .yaml
wrongly configured, and it falsely is trying to use git pull
, but since no git path is specified, this fails?
System
- OS: Ubuntu 18.04 (single machine)
- MicroK8s: v1.15.4 Rev:876
microk8s.kubectl version
: v1.15.4microk8s.helm version
: v2.14.3
Question
How do I correctly pass the right values to the Airflow Helm chart to be able to deploy Airflow on Kubernetes with Pods having access to the same DAGs and logs on a Shared Persistent Volume?
values_pv.yaml
in the question (pastebin.com/PryCgKnC). I assume that renaming thevalues.yaml
has no impact on the functionality. – NumesSanguis