Airflow KubernetesPodOperator - 使用 ConfigMap 值作为环境变量

问题描述

我有一个名为 test 的 Kubernetes ConfigMap,其中包含一个带有某个值的键 foobar。我想在环境变量中使用该键的值。

import datetime
import os
from airflow import models
from airflow.contrib.kubernetes.volume import Volume
from airflow.contrib.kubernetes.volume_mount import VolumeMount
from airflow.contrib.operators import kubernetes_pod_operator

YESTERDAY = datetime.datetime.Now() - datetime.timedelta(days=1)

cm_test = ['test']

volume_mount = VolumeMount('test',mount_path='/config/',sub_path=None,read_only=False)
volume_config = {
    'configMap': {
        'name': 'test'
    }
}
volume = Volume(name='test',configs=volume_config)

with models.DAG(
        dag_id="test_env",schedule_interval=datetime.timedelta(days=1),start_date=YESTERDAY) as dag:

    
    kubenetes_template_ex = kubernetes_pod_operator.KubernetesPodoperator(
        task_id="test_env",name="test_env",namespace="foobar",image="bash",cmds=["printenv"],arguments=[],volumes=[volume],volume_mounts=[volume_mount],configmaps=cm_test,env_vars={
            'MY_ENV_VAR': '/config/foobar'
        }
    )

工作原理:ConfigMap 在安装的卷中可用,因此我可以执行 ls /config显示 foobar

什么不起作用:我想使用已安装的配置映射中 foobar 的值设置环境变量。当前代码不起作用,因为文本字符串值 /config/foobar 已提供给环境变量。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)