mirror of
https://github.com/bitnami/charts.git
synced 2026-03-16 06:47:30 +08:00
563 lines
23 KiB
Smarty
563 lines
23 KiB
Smarty
{{/*
|
|
Copyright Broadcom, Inc. All Rights Reserved.
|
|
SPDX-License-Identifier: APACHE-2.0
|
|
*/}}
|
|
|
|
{{/* vim: set filetype=mustache: */}}
|
|
|
|
{{/*
|
|
Returns an init-container that prepares the Airflow configuration files for main containers to use them
|
|
*/}}
|
|
{{- define "airflow.defaultInitContainers.prepareConfig" -}}
|
|
- name: prepare-config
|
|
image: {{ include "airflow.image" . }}
|
|
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
|
{{- if .Values.defaultInitContainers.prepareConfig.containerSecurityContext.enabled }}
|
|
securityContext: {{- include "common.compatibility.renderSecurityContext" (dict "secContext" .Values.defaultInitContainers.prepareConfig.containerSecurityContext "context" .) | nindent 4 }}
|
|
{{- end }}
|
|
{{- if .Values.defaultInitContainers.prepareConfig.resources }}
|
|
resources: {{- toYaml .Values.defaultInitContainers.prepareConfig.resources | nindent 4 }}
|
|
{{- else if ne .Values.defaultInitContainers.prepareConfig.resourcesPreset "none" }}
|
|
resources: {{- include "common.resources.preset" (dict "type" .Values.defaultInitContainers.prepareConfig.resourcesPreset) | nindent 4 }}
|
|
{{- end }}
|
|
command:
|
|
- /bin/bash
|
|
args:
|
|
- -ec
|
|
- |
|
|
. /opt/bitnami/scripts/libairflow.sh
|
|
|
|
mkdir -p /emptydir/app-base-dir /emptydir/app-conf-dir
|
|
|
|
# Copy the configuration files to the writable directory
|
|
cp /opt/bitnami/airflow/airflow.cfg /emptydir/app-base-dir/airflow.cfg
|
|
|
|
# Apply changes affecting credentials
|
|
export AIRFLOW_CONF_FILE="/emptydir/app-base-dir/airflow.cfg"
|
|
{{- if (include "airflow.database.useSqlConnection" .) }}
|
|
airflow_conf_set "database" "sql_alchemy_conn" "$AIRFLOW_DATABASE_SQL_CONN"
|
|
{{- else }}
|
|
db_user="$(airflow_encode_url "$AIRFLOW_DATABASE_USERNAME")"
|
|
db_password="$(airflow_encode_url "$AIRFLOW_DATABASE_PASSWORD")"
|
|
airflow_conf_set "database" "sql_alchemy_conn" "postgresql+psycopg2://${db_user}:${db_password}@${AIRFLOW_DATABASE_HOST}:${AIRFLOW_DATABASE_PORT_NUMBER}/${AIRFLOW_DATABASE_NAME}"
|
|
{{- end }}
|
|
{{- if or (eq .Values.executor "CeleryExecutor") (eq .Values.executor "CeleryKubernetesExecutor") }}
|
|
redis_credentials=":$(airflow_encode_url "$REDIS_PASSWORD")"
|
|
[[ -n "$REDIS_USER" ]] && redis_credentials="$(airflow_encode_url "$REDIS_USER")$redis_credentials"
|
|
{{- if (include "airflow.database.useSqlConnection" .) }}
|
|
airflow_conf_set "celery" "result_backend" "db+${AIRFLOW_DATABASE_SQL_CONN}"
|
|
{{- else }}
|
|
airflow_conf_set "celery" "result_backend" "db+postgresql://${db_user}:${db_password}@${AIRFLOW_DATABASE_HOST}:${AIRFLOW_DATABASE_PORT_NUMBER}/${AIRFLOW_DATABASE_NAME}"
|
|
{{- end }}
|
|
airflow_conf_set "celery" "broker_url" "redis://${redis_credentials}@${REDIS_HOST}:${REDIS_PORT_NUMBER}/${REDIS_DATABASE}"
|
|
{{- end }}
|
|
info "Airflow configuration ready"
|
|
|
|
if [[ -f "/opt/bitnami/airflow/config/airflow_local_settings.py" ]]; then
|
|
cp /opt/bitnami/airflow/config/airflow_local_settings.py /emptydir/app-conf-dir/airflow_local_settings.py
|
|
else
|
|
touch /emptydir/app-conf-dir/airflow_local_settings.py
|
|
fi
|
|
|
|
# HACK: When testing the db connection it creates an empty airflow.db file at the
|
|
# application root
|
|
touch /emptydir/app-base-dir/airflow.db
|
|
env:
|
|
- name: BITNAMI_DEBUG
|
|
value: {{ ternary "true" "false" (or .Values.image.debug .Values.diagnosticMode.enabled) | quote }}
|
|
{{- if (include "airflow.database.useSqlConnection" .) }}
|
|
- name: AIRFLOW_DATABASE_SQL_CONN
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: {{ include "airflow.database.secretName" . }}
|
|
key: {{ include "airflow.database.secretKey" . }}
|
|
{{- else }}
|
|
- name: AIRFLOW_DATABASE_NAME
|
|
value: {{ include "airflow.database.name" . }}
|
|
- name: AIRFLOW_DATABASE_USERNAME
|
|
value: {{ include "airflow.database.user" . }}
|
|
- name: AIRFLOW_DATABASE_PASSWORD
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: {{ include "airflow.database.secretName" . }}
|
|
key: {{ include "airflow.database.secretKey" . }}
|
|
- name: AIRFLOW_DATABASE_HOST
|
|
value: {{ include "airflow.database.host" . }}
|
|
- name: AIRFLOW_DATABASE_PORT_NUMBER
|
|
value: {{ include "airflow.database.port" . }}
|
|
{{- end }}
|
|
{{- if or (eq .Values.executor "CeleryExecutor") (eq .Values.executor "CeleryKubernetesExecutor") }}
|
|
- name: REDIS_HOST
|
|
value: {{ include "airflow.redis.host" . | quote }}
|
|
- name: REDIS_PORT_NUMBER
|
|
value: {{ include "airflow.redis.port" . | quote }}
|
|
{{- if and (not .Values.redis.enabled) .Values.externalRedis.username }}
|
|
- name: REDIS_USER
|
|
value: {{ .Values.externalRedis.username | quote }}
|
|
{{- end }}
|
|
- name: REDIS_PASSWORD
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: {{ include "airflow.redis.secretName" . }}
|
|
key: redis-password
|
|
{{- end }}
|
|
volumeMounts:
|
|
- name: empty-dir
|
|
mountPath: /emptydir
|
|
- name: configuration
|
|
mountPath: /opt/bitnami/airflow/airflow.cfg
|
|
subPath: airflow.cfg
|
|
- name: configuration
|
|
mountPath: /opt/bitnami/airflow/config/airflow_local_settings.py
|
|
subPath: airflow_local_settings.py
|
|
{{- end -}}
|
|
|
|
{{/*
|
|
Returns an init-container that prepares the Airflow Webserver configuration files for main containers to use them
|
|
*/}}
|
|
{{- define "airflow.defaultInitContainers.prepareWebConfig" -}}
|
|
- name: prepare-web-config
|
|
image: {{ include "airflow.image" . }}
|
|
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
|
{{- if .Values.defaultInitContainers.prepareConfig.containerSecurityContext.enabled }}
|
|
securityContext: {{- include "common.compatibility.renderSecurityContext" (dict "secContext" .Values.defaultInitContainers.prepareConfig.containerSecurityContext "context" .) | nindent 4 }}
|
|
{{- end }}
|
|
{{- if .Values.defaultInitContainers.prepareConfig.resources }}
|
|
resources: {{- toYaml .Values.defaultInitContainers.prepareConfig.resources | nindent 4 }}
|
|
{{- else if ne .Values.defaultInitContainers.prepareConfig.resourcesPreset "none" }}
|
|
resources: {{- include "common.resources.preset" (dict "type" .Values.defaultInitContainers.prepareConfig.resourcesPreset) | nindent 4 }}
|
|
{{- end }}
|
|
command:
|
|
- /bin/bash
|
|
args:
|
|
- -ec
|
|
- |
|
|
. /opt/bitnami/scripts/libairflow.sh
|
|
|
|
# Copy the configuration files to the writable directory
|
|
cp /opt/bitnami/airflow/webserver_config.py /emptydir/app-base-dir/webserver_config.py
|
|
{{- if .Values.ldap.enabled }}
|
|
export AIRFLOW_WEBSERVER_CONF_FILE="/emptydir/app-base-dir/webserver_config.py"
|
|
airflow_webserver_conf_set "AUTH_LDAP_BIND_PASSWORD" "$AIRFLOW_LDAP_BIND_PASSWORD" "yes"
|
|
{{- end }}
|
|
info "Airflow webserver configuration ready"
|
|
env:
|
|
- name: BITNAMI_DEBUG
|
|
value: {{ ternary "true" "false" (or .Values.image.debug .Values.diagnosticMode.enabled) | quote }}
|
|
{{- if .Values.ldap.enabled }}
|
|
- name: AIRFLOW_LDAP_BIND_PASSWORD
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: {{ include "airflow.ldap.secretName" . }}
|
|
key: bind-password
|
|
{{- end }}
|
|
volumeMounts:
|
|
- name: empty-dir
|
|
mountPath: /emptydir
|
|
- name: webserver-configuration
|
|
mountPath: /opt/bitnami/airflow/webserver_config.py
|
|
subPath: webserver_config.py
|
|
{{- end -}}
|
|
|
|
{{/*
|
|
Returns an init-container that waits for db migrations to be ready
|
|
*/}}
|
|
{{- define "airflow.defaultInitContainers.waitForDBMigrations" -}}
|
|
- name: wait-for-db-migrations
|
|
image: {{ include "airflow.image" . }}
|
|
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
|
{{- if .Values.defaultInitContainers.waitForDBMigrations.containerSecurityContext.enabled }}
|
|
securityContext: {{- include "common.compatibility.renderSecurityContext" (dict "secContext" .Values.defaultInitContainers.waitForDBMigrations.containerSecurityContext "context" .) | nindent 4 }}
|
|
{{- end }}
|
|
{{- if .Values.defaultInitContainers.waitForDBMigrations.resources }}
|
|
resources: {{- toYaml .Values.defaultInitContainers.waitForDBMigrations.resources | nindent 4 }}
|
|
{{- else if ne .Values.defaultInitContainers.waitForDBMigrations.resourcesPreset "none" }}
|
|
resources: {{- include "common.resources.preset" (dict "type" .Values.defaultInitContainers.waitForDBMigrations.resourcesPreset) | nindent 4 }}
|
|
{{- end }}
|
|
command:
|
|
- /bin/bash
|
|
args:
|
|
- -ec
|
|
- |
|
|
. /opt/bitnami/scripts/airflow-env.sh
|
|
. /opt/bitnami/scripts/libairflow.sh
|
|
|
|
info "Waiting for db migrations to be completed"
|
|
airflow_wait_for_db_migrations
|
|
env:
|
|
- name: BITNAMI_DEBUG
|
|
value: {{ ternary "true" "false" (or .Values.image.debug .Values.diagnosticMode.enabled) | quote }}
|
|
volumeMounts:
|
|
- name: empty-dir
|
|
mountPath: /tmp
|
|
subPath: tmp-dir
|
|
- name: empty-dir
|
|
mountPath: /opt/bitnami/airflow/logs
|
|
subPath: app-logs-dir
|
|
- name: empty-dir
|
|
mountPath: /opt/bitnami/airflow/tmp
|
|
subPath: app-tmp-dir
|
|
- name: empty-dir
|
|
mountPath: /opt/bitnami/airflow/airflow.db
|
|
subPath: app-base-dir/airflow.db
|
|
- name: empty-dir
|
|
mountPath: /opt/bitnami/airflow/airflow.cfg
|
|
subPath: app-base-dir/airflow.cfg
|
|
{{- if .Values.extraVolumeMounts }}
|
|
{{- include "common.tplvalues.render" (dict "value" .Values.extraVolumeMounts "context" $) | nindent 4 }}
|
|
{{- end }}
|
|
{{- end -}}
|
|
|
|
{{/*
|
|
Returns the name that will identify the repository internally and it will be used to
|
|
create folders or volume names
|
|
*/}}
|
|
{{- define "airflow.dagsPlugins.repository.name" -}}
|
|
{{- $defaultName := regexFind "/.*$" .repository | replace "//" "" | replace "/" "-" | replace "." "-" -}}
|
|
{{- .name | default $defaultName | kebabcase -}}
|
|
{{- end -}}
|
|
|
|
{{/*
|
|
Returns shared structure between load-dags and load-plugins init containers
|
|
*/}}
|
|
{{- define "airflow.defaultInitContainers.shared" -}}
|
|
- image: {{ include "airflow.image" . }}
|
|
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
|
{{- if .Values.defaultInitContainers.loadDAGsPlugins.containerSecurityContext.enabled }}
|
|
securityContext: {{- include "common.compatibility.renderSecurityContext" (dict "secContext" .Values.defaultInitContainers.loadDAGsPlugins.containerSecurityContext "context" .) | nindent 4 }}
|
|
{{- end }}
|
|
{{- if .Values.defaultInitContainers.loadDAGsPlugins.resources }}
|
|
resources: {{- toYaml .Values.defaultInitContainers.loadDAGsPlugins.resources | nindent 4 }}
|
|
{{- else if ne .Values.defaultInitContainers.loadDAGsPlugins.resourcesPreset "none" }}
|
|
resources: {{- include "common.resources.preset" (dict "type" .Values.defaultInitContainers.loadDAGsPlugins.resourcesPreset) | nindent 4 }}
|
|
{{- end }}
|
|
{{- if .Values.defaultInitContainers.loadDAGsPlugins.command }}
|
|
command: {{- include "common.tplvalues.render" (dict "value" .Values.defaultInitContainers.loadDAGsPlugins.command "context" .) | nindent 4 }}
|
|
{{- else }}
|
|
command: ["/bin/bash"]
|
|
{{- end }}
|
|
{{- if .Values.defaultInitContainers.loadDAGsPlugins.extraEnvVars }}
|
|
env: {{- include "common.tplvalues.render" (dict "value" .Values.defaultInitContainers.loadDAGsPlugins.extraEnvVars "context" .) | nindent 4 }}
|
|
{{- end }}
|
|
{{- if or .Values.defaultInitContainers.loadDAGsPlugins.extraEnvVarsCM .Values.defaultInitContainers.loadDAGsPlugins.extraEnvVarsSecret }}
|
|
envFrom:
|
|
{{- if .Values.defaultInitContainers.loadDAGsPlugins.extraEnvVarsCM }}
|
|
- configMapRef:
|
|
name: {{ .Values.defaultInitContainers.loadDAGsPlugins.extraEnvVarsCM }}
|
|
{{- end }}
|
|
{{- if .Values.defaultInitContainers.loadDAGsPlugins.extraEnvVarsSecret }}
|
|
- secretRef:
|
|
name: {{ .Values.defaultInitContainers.loadDAGsPlugins.extraEnvVarsSecret }}
|
|
{{- end }}
|
|
{{- end }}
|
|
volumeMounts:
|
|
- name: empty-dir
|
|
mountPath: /tmp
|
|
subPath: tmp-dir
|
|
- name: empty-dir
|
|
mountPath: /opt/bitnami/airflow/nss-wrapper
|
|
subPath: app-nss-wrapper-dir
|
|
- name: empty-dir
|
|
mountPath: /etc/ssh
|
|
subPath: etc-ssh-dir
|
|
- name: empty-dir
|
|
mountPath: /opt/bitnami/airflow/.ssh
|
|
subPath: ssh-dir
|
|
{{- if .Values.defaultInitContainers.loadDAGsPlugins.extraVolumeMounts }}
|
|
{{- include "common.tplvalues.render" (dict "value" .Values.defaultInitContainers.loadDAGsPlugins.extraVolumeMounts "context" $) | nindent 4 }}
|
|
{{- end }}
|
|
{{- end -}}
|
|
|
|
{{/*
|
|
Returns an init-container that loads DAGs from a ConfigMap or Git repositories
|
|
*/}}
|
|
{{- define "airflow.defaultInitContainers.loadDAGs" -}}
|
|
{{ include "airflow.defaultInitContainers.shared" . }}
|
|
{{- if not (empty .Values.dags.existingConfigmap) }}
|
|
- name: external-dags
|
|
mountPath: /configmap
|
|
{{- end }}
|
|
{{- if or (not (empty .Values.dags.existingConfigmap)) (not (empty .Values.dags.repositories)) }}
|
|
- name: empty-dir
|
|
mountPath: /dags
|
|
subPath: app-dags-dir
|
|
{{- end }}
|
|
{{- if or .Values.dags.sshKey .Values.dags.existingSshKeySecret }}
|
|
- name: dags-ssh-key
|
|
mountPath: /opt/bitnami/airflow/.ssh/dags-ssh-key
|
|
subPath: dags-ssh-key
|
|
{{- end }}
|
|
{{- if .Values.defaultInitContainers.loadDAGsPlugins.args }}
|
|
args: {{- include "common.tplvalues.render" (dict "value" .Values.defaultInitContainers.loadDAGsPlugins.args "context" .) | nindent 4 }}
|
|
{{- else }}
|
|
args:
|
|
- -ec
|
|
- |
|
|
. /opt/bitnami/scripts/libfs.sh
|
|
. /opt/bitnami/scripts/libos.sh
|
|
|
|
if ! am_i_root && [[ -e "$LIBNSS_WRAPPER_PATH" ]]; then
|
|
echo "airflow:x:$(id -u):$(id -g):Airflow:$AIRFLOW_HOME:/bin/false" > "$NSS_WRAPPER_PASSWD"
|
|
echo "airflow:x:$(id -g):" > "$NSS_WRAPPER_GROUP"
|
|
|
|
export LD_PRELOAD="$LIBNSS_WRAPPER_PATH"
|
|
export HOME="$AIRFLOW_HOME"
|
|
fi
|
|
|
|
{{- if or .Values.dags.sshKey .Values.dags.existingSshKeySecret }}
|
|
export GIT_SSH_COMMAND="ssh -i /opt/bitnami/airflow/.ssh/dags-ssh-key -o StrictHostKeyChecking=no"
|
|
{{- end }}
|
|
{{- range .Values.dags.repositories }}
|
|
is_dir_empty "/dags/{{ include "airflow.dagsPlugins.repository.name" . }}" && git clone {{ .repository }} --depth 1 --branch {{ .branch }} /dags/{{ include "airflow.dagsPlugins.repository.name" . }}
|
|
{{- end }}
|
|
{{- if not (empty .Values.dags.existingConfigmap) }}
|
|
cp /configmap/* /dags/external
|
|
{{- end }}
|
|
{{- end }}
|
|
name: load-dags
|
|
{{- end -}}
|
|
|
|
{{/*
|
|
Returns an init-container that loads plugins from Git repositories
|
|
*/}}
|
|
{{- define "airflow.defaultInitContainers.loadPlugins" -}}
|
|
{{ include "airflow.defaultInitContainers.shared" . }}
|
|
- name: empty-dir
|
|
mountPath: /plugins
|
|
subPath: app-plugins-dir
|
|
{{- if or .Values.plugins.sshKey .Values.plugins.existingSshKeySecret }}
|
|
- name: plugins-ssh-key
|
|
mountPath: /opt/bitnami/airflow/.ssh/plugins-ssh-key
|
|
subPath: plugins-ssh-key
|
|
{{- end }}
|
|
{{- if .Values.defaultInitContainers.loadDAGsPlugins.args }}
|
|
args: {{- include "common.tplvalues.render" (dict "value" .Values.defaultInitContainers.loadDAGsPlugins.args "context" .) | nindent 4 }}
|
|
{{- else }}
|
|
args:
|
|
- -ec
|
|
- |
|
|
. /opt/bitnami/scripts/libfs.sh
|
|
. /opt/bitnami/scripts/libos.sh
|
|
|
|
if ! am_i_root && [[ -e "$LIBNSS_WRAPPER_PATH" ]]; then
|
|
echo "airflow:x:$(id -u):$(id -g):Airflow:$AIRFLOW_HOME:/bin/false" > "$NSS_WRAPPER_PASSWD"
|
|
echo "airflow:x:$(id -g):" > "$NSS_WRAPPER_GROUP"
|
|
|
|
export LD_PRELOAD="$LIBNSS_WRAPPER_PATH"
|
|
export HOME="$AIRFLOW_HOME"
|
|
fi
|
|
|
|
{{- if or .Values.plugins.sshKey .Values.plugins.existingSshKeySecret }}
|
|
export GIT_SSH_COMMAND="ssh -i /opt/bitnami/airflow/.ssh/plugins-ssh-key -o StrictHostKeyChecking=no"
|
|
{{- end }}
|
|
{{- range .Values.plugins.repositories }}
|
|
is_dir_empty "/plugins/{{ include "airflow.dagsPlugins.repository.name" . }}" && git clone {{ .repository }} --depth 1 --branch {{ .branch }} /plugins/{{ include "airflow.dagsPlugins.repository.name" . }}
|
|
{{- end }}
|
|
{{- end }}
|
|
name: load-plugins
|
|
{{- end -}}
|
|
|
|
{{/*
|
|
Returns shared structure between sync-dags and sync-plugins sidecars
|
|
*/}}
|
|
{{- define "airflow.defaultSidecars.shared" -}}
|
|
- image: {{ include "airflow.image" . }}
|
|
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
|
{{- if .Values.defaultSidecars.syncDAGsPlugins.containerSecurityContext.enabled }}
|
|
securityContext: {{- include "common.compatibility.renderSecurityContext" (dict "secContext" .Values.defaultSidecars.syncDAGsPlugins.containerSecurityContext "context" .) | nindent 4 }}
|
|
{{- end }}
|
|
{{- if .Values.defaultSidecars.syncDAGsPlugins.resources }}
|
|
resources: {{- toYaml .Values.defaultSidecars.syncDAGsPlugins.resources | nindent 4 }}
|
|
{{- else if ne .Values.defaultSidecars.syncDAGsPlugins.resourcesPreset "none" }}
|
|
resources: {{- include "common.resources.preset" (dict "type" .Values.defaultSidecars.syncDAGsPlugins.resourcesPreset) | nindent 4 }}
|
|
{{- end }}
|
|
{{- if .Values.defaultSidecars.syncDAGsPlugins.command }}
|
|
command: {{- include "common.tplvalues.render" (dict "value" .Values.defaultSidecars.syncDAGsPlugins.command "context" .) | nindent 4 }}
|
|
{{- else }}
|
|
command: ["/bin/bash"]
|
|
{{- end }}
|
|
{{- if .Values.defaultSidecars.syncDAGsPlugins.extraEnvVars }}
|
|
env: {{- include "common.tplvalues.render" (dict "value" .Values.defaultSidecars.syncDAGsPlugins.extraEnvVars "context" .) | nindent 4 }}
|
|
{{- end }}
|
|
{{- if or .Values.defaultSidecars.syncDAGsPlugins.extraEnvVarsCM .Values.defaultSidecars.syncDAGsPlugins.extraEnvVarsSecret }}
|
|
envFrom:
|
|
{{- if .Values.defaultSidecars.syncDAGsPlugins.extraEnvVarsCM }}
|
|
- configMapRef:
|
|
name: {{ .Values.defaultSidecars.syncDAGsPlugins.extraEnvVarsCM }}
|
|
{{- end }}
|
|
{{- if .Values.defaultSidecars.syncDAGsPlugins.extraEnvVarsSecret }}
|
|
- secretRef:
|
|
name: {{ .Values.defaultSidecars.syncDAGsPlugins.extraEnvVarsSecret }}
|
|
{{- end }}
|
|
{{- end }}
|
|
volumeMounts:
|
|
- name: empty-dir
|
|
mountPath: /tmp
|
|
subPath: tmp-dir
|
|
- name: empty-dir
|
|
mountPath: /opt/bitnami/airflow/nss-wrapper
|
|
subPath: app-nss-wrapper-dir
|
|
- name: empty-dir
|
|
mountPath: /etc/ssh
|
|
subPath: etc-ssh-dir
|
|
- name: empty-dir
|
|
mountPath: /opt/bitnami/airflow/.ssh
|
|
subPath: ssh-dir
|
|
{{- if .Values.defaultSidecars.syncDAGsPlugins.extraVolumeMounts }}
|
|
{{- include "common.tplvalues.render" (dict "value" .Values.defaultSidecars.syncDAGsPlugins.extraVolumeMounts "context" $) | nindent 4 }}
|
|
{{- end }}
|
|
{{- end -}}
|
|
|
|
{{/*
|
|
Returns a sidecar that syncs DAGs from Git repositories
|
|
*/}}
|
|
{{- define "airflow.defaultSidecars.syncDAGs" -}}
|
|
{{ include "airflow.defaultSidecars.shared" . }}
|
|
- name: empty-dir
|
|
mountPath: /dags
|
|
subPath: app-dags-dir
|
|
{{- if or .Values.dags.sshKey .Values.dags.existingSshKeySecret }}
|
|
- name: dags-ssh-key
|
|
mountPath: /opt/bitnami/airflow/.ssh/dags-ssh-key
|
|
subPath: dags-ssh-key
|
|
{{- end }}
|
|
{{- if .Values.defaultSidecars.syncDAGsPlugins.args }}
|
|
args: {{- include "common.tplvalues.render" (dict "value" .Values.defaultSidecars.syncDAGsPlugins.args "context" .) | nindent 4 }}
|
|
{{- else }}
|
|
args:
|
|
- -ec
|
|
- |
|
|
. /opt/bitnami/scripts/libos.sh
|
|
|
|
if ! am_i_root && [[ -e "$LIBNSS_WRAPPER_PATH" ]]; then
|
|
echo "airflow:x:$(id -u):$(id -g):Airflow:$AIRFLOW_HOME:/bin/false" > "$NSS_WRAPPER_PASSWD"
|
|
echo "airflow:x:$(id -g):" > "$NSS_WRAPPER_GROUP"
|
|
|
|
export LD_PRELOAD="$LIBNSS_WRAPPER_PATH"
|
|
export HOME="$AIRFLOW_HOME"
|
|
fi
|
|
|
|
while true; do
|
|
{{- if or .Values.dags.sshKey .Values.dags.existingSshKeySecret }}
|
|
export GIT_SSH_COMMAND="ssh -i /opt/bitnami/airflow/.ssh/dags-ssh-key -o StrictHostKeyChecking=no"
|
|
{{- end }}
|
|
{{- range .Values.dags.repositories }}
|
|
cd /dags/{{ include "airflow.dagsPlugins.repository.name" . }} && git pull origin {{ .branch }} || true
|
|
{{- end }}
|
|
sleep {{ default "60" .Values.defaultSidecars.syncDAGsPlugins.interval }}
|
|
done
|
|
{{- end }}
|
|
name: sync-dags
|
|
{{- end -}}
|
|
|
|
{{/*
|
|
Returns a sidecar that syncs plugins from Git repositories
|
|
*/}}
|
|
{{- define "airflow.defaultSidecars.syncPlugins" -}}
|
|
{{ include "airflow.defaultSidecars.shared" . }}
|
|
- name: empty-dir
|
|
mountPath: /plugins
|
|
subPath: app-plugins-dir
|
|
{{- if or .Values.plugins.sshKey .Values.plugins.existingSshKeySecret }}
|
|
- name: plugins-ssh-key
|
|
mountPath: /opt/bitnami/airflow/.ssh/plugins-ssh-key
|
|
subPath: plugins-ssh-key
|
|
{{- end }}
|
|
{{- if .Values.defaultSidecars.syncDAGsPlugins.args }}
|
|
args: {{- include "common.tplvalues.render" (dict "value" .Values.defaultSidecars.syncDAGsPlugins.args "context" .) | nindent 4 }}
|
|
{{- else }}
|
|
args:
|
|
- -ec
|
|
- |
|
|
. /opt/bitnami/scripts/libos.sh
|
|
|
|
if ! am_i_root && [[ -e "$LIBNSS_WRAPPER_PATH" ]]; then
|
|
echo "airflow:x:$(id -u):$(id -g):Airflow:$AIRFLOW_HOME:/bin/false" > "$NSS_WRAPPER_PASSWD"
|
|
echo "airflow:x:$(id -g):" > "$NSS_WRAPPER_GROUP"
|
|
|
|
export LD_PRELOAD="$LIBNSS_WRAPPER_PATH"
|
|
export HOME="$AIRFLOW_HOME"
|
|
fi
|
|
{{- if or .Values.plugins.sshKey .Values.plugins.existingSshKeySecret }}
|
|
export GIT_SSH_COMMAND="ssh -i /opt/bitnami/airflow/.ssh/plugins-ssh-key -o StrictHostKeyChecking=no"
|
|
{{- end }}
|
|
while true; do
|
|
{{- range .Values.plugins.repositories }}
|
|
cd /plugins/{{ include "airflow.dagsPlugins.repository.name" . }} && git pull origin {{ .branch }} || true
|
|
{{- end }}
|
|
sleep {{ default "60" .Values.defaultSidecars.syncDAGsPlugins.interval }}
|
|
done
|
|
{{- end }}
|
|
name: sync-plugins
|
|
{{- end -}}
|
|
|
|
{{/*
|
|
Returns the volume mounts to use on Airflow containers to mount custom DAGs
|
|
*/}}
|
|
{{- define "airflow.dags.volumeMounts" -}}
|
|
{{- if not (empty .Values.dags.existingConfigmap) }}
|
|
- name: empty-dir
|
|
mountPath: /opt/bitnami/airflow/dags/external
|
|
subPath: app-dags-dir/external
|
|
{{- end }}
|
|
{{- range .Values.dags.repositories }}
|
|
- name: empty-dir
|
|
mountPath: /opt/bitnami/airflow/dags/git_{{ include "airflow.dagsPlugins.repository.name" . }}
|
|
{{- if .path }}
|
|
subPath: app-dags-dir/{{ include "airflow.dagsPlugins.repository.name" . }}/{{ .path }}
|
|
{{- else }}
|
|
subPath: app-dags-dir/{{ include "airflow.dagsPlugins.repository.name" . }}
|
|
{{- end }}
|
|
{{- end }}
|
|
{{- end -}}
|
|
|
|
{{/*
|
|
Returns the extra volumes to add on Airflow pods to load custom DAGS
|
|
*/}}
|
|
{{- define "airflow.dags.volumes" -}}
|
|
{{- if .Values.dags.existingConfigmap }}
|
|
- name: external-dags
|
|
configMap:
|
|
name: {{ tpl .Values.dags.existingConfigmap $ }}
|
|
{{- end }}
|
|
{{- if or .Values.dags.sshKey .Values.dags.existingSshKeySecret }}
|
|
- name: dags-ssh-key
|
|
secret:
|
|
secretName: {{ include "airflow.dags.ssh.secretName" . }}
|
|
items:
|
|
- key: {{ default "dags-ssh-key" (tpl .Values.dags.existingSshKeySecretKey .) }}
|
|
path: dags-ssh-key
|
|
mode: 0600
|
|
{{- end }}
|
|
{{- end -}}
|
|
|
|
{{/*
|
|
Returns the volume mounts to use on Airflow containers to mount custom plugins
|
|
*/}}
|
|
{{- define "airflow.plugins.volumeMounts" -}}
|
|
{{- range .Values.plugins.repositories }}
|
|
- name: empty-dir
|
|
mountPath: /opt/bitnami/airflow/plugins/git_{{ include "airflow.dagsPlugins.repository.name" . }}
|
|
{{- if .path }}
|
|
subPath: app-plugins-dir/{{ include "airflow.dagsPlugins.repository.name" . }}/{{ .path }}
|
|
{{- else }}
|
|
subPath: app-plugins-dir/{{ include "airflow.dagsPlugins.repository.name" . }}
|
|
{{- end }}
|
|
{{- end }}
|
|
{{- end -}}
|
|
|
|
{{/*
|
|
Returns the extra volumes to add on Airflow pods to load custom plugins
|
|
*/}}
|
|
{{- define "airflow.plugins.volumes" -}}
|
|
{{- if or .Values.plugins.sshKey .Values.plugins.existingSshKeySecret }}
|
|
- name: plugins-ssh-key
|
|
secret:
|
|
secretName: {{ include "airflow.plugins.ssh.secretName" . }}
|
|
items:
|
|
- key: {{ default "plugins-ssh-key" (tpl .Values.plugins.existingSshKeySecretKey .) }}
|
|
path: plugins-ssh-key
|
|
mode: 0600
|
|
{{- end }}
|
|
{{- end -}}
|