【发布时间】:2020-05-15 04:14:46
【问题描述】:
我正在使用 Apache Airflow,在 DAG 的一项任务中,我们正在使用 Kubernetes Pod Operator。这样做是为了在 kubernetes pod 中执行我们的一个应用程序进程。 Kubernetes pod operator 运行良好。通过 pod operator 传递环境变量运行良好。但是我试图从 Kubernetes ConfigMap 传递一个环境变量值,它无法从 ConfigMap 获取值。
代码 sn-p 如下。代码中sn -p 请关注'SPARK_CONFIG': '{"valueFrom": {"configMapKeyRef": {"key": "endpoint","name": "spark-config"}}}'这一行
请在下面找到代码sn-p
pod_process_task = KubernetesPodOperator(
namespace=cons.K8_NAMESPACE,
image=cons.UNCOMPRESS_IMAGE_NAME,
config_file=cons.K8_CONFIG_FILE,
env_vars={
'FRT_ID': '{{ dag_run.conf["transaction_id"] }}',
'FILE_NAME': '{{ dag_run.conf["filename"]}}',
'FILE_PATH': '{{dag_run.conf["filepath"]}}' + "/" + '{{ dag_run.conf["filename"]}}',
'LOG_FILE': '{{ ti.xcom_pull(key="process_log_dict")["loglocation"] }}',
'SPARK_CONFIG': '{"valueFrom": {"configMapKeyRef": {"key": "endpoint","name": "spark-config"}}}'
},
name=create_pod_name(),
# name= 'integrator',
task_id="decrypt-951",
retries=3,
retry_delay=timedelta(seconds=60),
is_delete_operator_pod=True,
volumes=[volume-a,volume_for_configuration],
volume_mounts=[volume_mount_a,volume_mount_config],
resources=pod_resource_specification,
startup_timeout_seconds=cons.K8_POD_TIMEOUT,
get_logs=True,
on_failure_callback=log_failure_unzip_decrypt,
dag=dag
)
然后尝试从我得到的 pod 打印变量,如下所示。请注意,其他 ENV_VARIABLE 值已被填充,除了我试图引用 configMap 的那个值。请在下面找到我们在生成 K8-Pod 时看到的日志输出。 [在下面的sn-p中,请关注参数'name': 'SPARK_CONFIG']。 env_variables 的其余部分似乎填充了我在上面的代码 sn-p 中使用 Jinga 模板提供的值。
'containers': [{'args': None,
'command': None,
'env': [{'name': 'FRT_ID',
'value': '20180902_01605',
'value_from': None},
{'name': 'FILE_NAME',
'value': 'transact_2018-09-02_0321_file_MAR.zip',
'value_from': None},
{'name': 'FILE_PATH',
'value': '/etc/data/app/trk0057.zip',
'value_from': None},
{'name': 'LOG_FILE',
'value': 'log-0057_2018-09.log',
'value_from': None},
{'name': 'SPARK_CONFIG',
'value': '{"valueFrom": {"configMapKeyRef": '
'{"key": "endpoint","name": '
'"spark-config"}}}',
'value_from': None}],
'env_from': None
...
...
...
...
重点是我们如何在 Apache Airflow kubernetes pod 操作符中形成环境变量时像 value_from 一样传递 ConfigMap 值
【问题讨论】:
-
@Grant T :希望您能在此查询上提供任何帮助。
标签: environment-variables kubernetes-pod airflow