apache / airflow

Apache Airflow - A platform to programmatically author, schedule, and monitor workflows
https://airflow.apache.org/
Apache License 2.0
37.45k stars 14.36k forks source link

Invalid kube-config file. Expected key current-context in kube-config when using deferrable=True #34644

Closed tommyhutcheson closed 9 months ago

tommyhutcheson commented 1 year ago

Apache Airflow version

Other Airflow 2 version (please specify below)

What happened

Hello We are trying to use the deferrable option with the KubernetesPodOperator for the first time but we can't get past the error Invalid kube-config file. Expected key current-context in kube-config when using deferrable=True.

We run airflow via cloud composer in GCP and first upgraded to composer-2.3.2-airflow-2.5.1 but had the issue so upgraded again to composer-2.4.3-airflow-2.5.3 having seen some posts about a fix in version 7.0.0 but we're still faced with the issue.

I have stripping the DAG operator back to basics :

task1 = KubernetesPodOperator(
        name="hello-world",
        image="python:3.11-slim",
        cmds=['python', '-c'],
        arguments=["print('hello world')"],
        task_id="dummy_run",
        config_file="/home/airflow/composer_kube_config",
        deferrable=True
    )

operator is being imported from airflow.providers.cncf.kubernetes.operators.pod import KubernetesPodOperator

Error:

[2023-09-27, 08:48:03 UTC] {taskinstance.py:1778} ERROR - Task failed with exception
Traceback (most recent call last):
  File "/opt/python3.8/lib/python3.8/site-packages/airflow/providers/cncf/kubernetes/operators/pod.py", line 648, in execute_complete
    raise AirflowException(event["message"])
airflow.exceptions.AirflowException: Invalid kube-config file. Expected key current-context in kube-config

Cloud composer 2 guide states that we need to set the config_file to /home/airflow/composer_kube_config but the error we get seems to imply that the file is missing an expected key current-context. I raised this with google who suggested raisin this ticket here and stating that their product team confirmed that this issue is due to a problem with Airflow.

What you think should happen instead

Dag runs with deferrable=True parameter set, in this case printing hello world to the logs.

How to reproduce

Deploy the sample dag to airflow 2.5.3 if possible using cloud composer 2.4.3

from airflow.providers.cncf.kubernetes.operators.pod import KubernetesPodOperator
from airflow.providers.google.cloud.operators.kubernetes_engine import GKEStartPodOperator
import airflow
from airflow import DAG
from datetime import timedelta

default_args = {
    'start_date': airflow.utils.dates.days_ago(0),
    'retries': 1,
    'retry_delay': timedelta(minutes=5)
}

with DAG(
        'tommy_test_kub_simple_dag',
        default_args=default_args,
        description='liveness monitoring dag',
        schedule_interval='*/10 * * * *',
        max_active_runs=2,
        catchup=False,
        dagrun_timeout=timedelta(minutes=10),
) as dag:

    task1 = KubernetesPodOperator(
        name="hello-world",
        image="python:3.11-slim",
        cmds=['python', '-c'],
        arguments=["print('hello world')"],
        task_id="dummy_run",
        config_file="/home/airflow/composer_kube_config",
        deferrable=True
    )

task1

Operating System

debian:11-slim

Versions of Apache Airflow Providers

Running command: ['/usr/bin/bash', '-c', 'pip freeze']
 Output:
 absl-py @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/absl_py-1.4.0-py3-none-any.whl
 agate @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/agate-1.6.3-py2.py3-none-any.whl
 aiodebug @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/aiodebug-2.3.0-py3-none-any.whl
 aiofiles @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/aiofiles-23.2.1-py3-none-any.whl
 aiohttp @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/aiohttp-3.8.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
 aiosignal @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/aiosignal-1.3.1-py3-none-any.whl
 alembic @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/alembic-1.10.2-py3-none-any.whl
 amqp @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/amqp-5.1.1-py3-none-any.whl
 anyio @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/anyio-3.6.2-py3-none-any.whl
 apache-airflow @ file:///usr/local/lib/airflow
 apache-airflow-providers-amazon==8.2.0
 apache-airflow-providers-apache-beam @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/apache_airflow_providers_apache_beam-5.2.2-py3-none-any.whl
 apache-airflow-providers-cncf-kubernetes @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/apache_airflow_providers_cncf_kubernetes-7.3.0-py3-none-any.whl
 apache-airflow-providers-common-sql @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/apache_airflow_providers_common_sql-1.7.1-py3-none-any.whl
 apache-airflow-providers-dbt-cloud @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/apache_airflow_providers_dbt_cloud-3.2.3-py3-none-any.whl
 apache-airflow-providers-ftp @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/apache_airflow_providers_ftp-3.5.1-py3-none-any.whl
 apache-airflow-providers-google @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/apache_airflow_providers_google-10.7.0-py3-none-any.whl
 apache-airflow-providers-hashicorp @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/apache_airflow_providers_hashicorp-3.4.2-py3-none-any.whl
 apache-airflow-providers-http @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/apache_airflow_providers_http-4.5.1-py3-none-any.whl
 apache-airflow-providers-imap @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/apache_airflow_providers_imap-3.3.1-py3-none-any.whl
 apache-airflow-providers-mysql @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/apache_airflow_providers_mysql-5.2.0-py3-none-any.whl
 apache-airflow-providers-postgres @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/apache_airflow_providers_postgres-5.6.0-py3-none-any.whl
 apache-airflow-providers-sendgrid @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/apache_airflow_providers_sendgrid-3.2.2-py3-none-any.whl
 apache-airflow-providers-sftp==4.6.1
 apache-airflow-providers-sqlite @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/apache_airflow_providers_sqlite-3.4.3-py3-none-any.whl
 apache-airflow-providers-ssh @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/apache_airflow_providers_ssh-3.7.2-py3-none-any.whl
 apache-beam @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/apache_beam-2.50.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
 apispec @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/apispec-3.3.2-py2.py3-none-any.whl
 appdirs==1.4.4
 argcomplete @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/argcomplete-3.0.5-py3-none-any.whl
 asgiref @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/asgiref-3.7.2-py3-none-any.whl
 asn1crypto==1.5.1
 astronomer-providers==1.17.3
 astunparse @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/astunparse-1.6.3-py2.py3-none-any.whl
 async-timeout @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/async_timeout-4.0.2-py3-none-any.whl
 asyncssh==2.13.2
 attrs @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/attrs-22.2.0-py3-none-any.whl
 Babel @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/Babel-2.12.1-py3-none-any.whl
 backoff @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/backoff-2.2.1-py3-none-any.whl
 bcrypt @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/bcrypt-4.0.1-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
 beautifulsoup4==4.12.2
 billiard @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/billiard-3.6.4.0-py3-none-any.whl
 blinker @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/blinker-1.5-py2.py3-none-any.whl
 boto3==1.28.54
 botocore==1.31.54
 cachecontrol @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/cachecontrol-0.13.1-py3-none-any.whl
 cachelib @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/cachelib-0.9.0-py3-none-any.whl
 cachetools @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/cachetools-5.3.0-py3-none-any.whl
 cattrs @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/cattrs-22.2.0-py3-none-any.whl
 celery @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/celery-5.2.7-py3-none-any.whl
 certifi @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/certifi-2022.12.7-py3-none-any.whl
 cffi @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/cffi-1.15.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
 chardet @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/chardet-4.0.0-py2.py3-none-any.whl
 charset-normalizer @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
 click @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/click-8.1.3-py3-none-any.whl
 click-didyoumean @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/click_didyoumean-0.3.0-py3-none-any.whl
 click-plugins @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/click_plugins-1.1.1-py2.py3-none-any.whl
 click-repl @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/click_repl-0.2.0-py3-none-any.whl
 clickclick @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/clickclick-20.10.2-py2.py3-none-any.whl
 cloudpickle @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/cloudpickle-2.2.1-py3-none-any.whl
 colorama @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/colorama-0.4.6-py2.py3-none-any.whl
 colorlog @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/colorlog-4.8.0-py2.py3-none-any.whl
 ConfigUpdater @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/ConfigUpdater-3.1.1-py2.py3-none-any.whl
 connexion @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/connexion-2.14.2-py2.py3-none-any.whl
 crcmod @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/crcmod-1.7.tar.gz
 cron-descriptor @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/cron_descriptor-1.2.35.tar.gz
 croniter @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/croniter-1.3.8-py2.py3-none-any.whl
 cryptography @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/cryptography-39.0.2-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
 db-dtypes @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/db_dtypes-1.1.1-py2.py3-none-any.whl
 dbt-bigquery @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/dbt_bigquery-1.5.4-py3-none-any.whl
 dbt-core @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/dbt_core-1.5.4-py3-none-any.whl
 dbt-extractor @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/dbt_extractor-0.4.1-cp36-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.whl
 decorator @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/decorator-5.1.1-py3-none-any.whl
 Deprecated @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/Deprecated-1.2.13-py2.py3-none-any.whl
 diff-cover @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/diff_cover-7.7.0-py3-none-any.whl
 dill @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/dill-0.3.1.1.tar.gz
 distlib @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/distlib-0.3.6-py2.py3-none-any.whl
 dnspython @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/dnspython-2.3.0-py3-none-any.whl
 docopt @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/docopt-0.6.2.tar.gz
 docutils @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/docutils-0.19-py3-none-any.whl
 email-validator @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/email_validator-1.3.1-py2.py3-none-any.whl
 exceptiongroup @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/exceptiongroup-1.1.1-py3-none-any.whl
 fastavro @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/fastavro-1.8.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
 fasteners @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/fasteners-0.18-py3-none-any.whl
 filelock @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/filelock-3.10.7-py3-none-any.whl
 firebase-admin @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/firebase_admin-6.2.0-py3-none-any.whl
 Flask @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/Flask-2.2.5-py3-none-any.whl
 Flask-AppBuilder @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/Flask_AppBuilder-4.1.4-py3-none-any.whl
 Flask-Babel @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/Flask_Babel-2.0.0-py3-none-any.whl
 Flask-Bcrypt @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/Flask_Bcrypt-1.0.1-py3-none-any.whl
 Flask-Caching @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/Flask_Caching-2.0.2-py3-none-any.whl
 Flask-JWT-Extended @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/Flask_JWT_Extended-4.4.4-py2.py3-none-any.whl
 Flask-Login @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/Flask_Login-0.6.2-py3-none-any.whl
 Flask-Session @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/Flask_Session-0.4.0-py2.py3-none-any.whl
 Flask-SQLAlchemy @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/Flask_SQLAlchemy-2.5.1-py2.py3-none-any.whl
 Flask-WTF @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/Flask_WTF-1.1.1-py3-none-any.whl
 flatbuffers @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/flatbuffers-23.5.26-py2.py3-none-any.whl
 flower @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/flower-2.0.1-py2.py3-none-any.whl
 frozenlist @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/frozenlist-1.3.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
 fsspec @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/fsspec-2023.9.0-py3-none-any.whl
 future @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/future-0.18.3.tar.gz
 gast @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/gast-0.4.0-py3-none-any.whl
 gcloud-aio-auth @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/gcloud_aio_auth-4.2.1-py3-none-any.whl
 gcloud-aio-bigquery @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/gcloud_aio_bigquery-6.3.0-py3-none-any.whl
 gcloud-aio-storage @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/gcloud_aio_storage-8.3.0-py3-none-any.whl
 gcsfs @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/gcsfs-2023.9.0-py2.py3-none-any.whl
 google-ads @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/google_ads-21.3.0-py3-none-any.whl
 google-api-core @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/google_api_core-2.11.1-py3-none-any.whl
 google-api-python-client @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/google_api_python_client-2.98.0-py2.py3-none-any.whl
 google-apitools @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/google_apitools-0.5.32-py3-none-any.whl
 google-auth @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/google_auth-2.17.0-py2.py3-none-any.whl
 google-auth-httplib2 @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/google_auth_httplib2-0.1.0-py2.py3-none-any.whl
 google-auth-oauthlib @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/google_auth_oauthlib-1.0.0-py2.py3-none-any.whl
 google-cloud-access-context-manager @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/google_cloud_access_context_manager-0.1.16-py2.py3-none-any.whl
 google-cloud-aiplatform @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/google_cloud_aiplatform-1.32.0-py2.py3-none-any.whl
 google-cloud-appengine-logging @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/google_cloud_appengine_logging-1.3.1-py2.py3-none-any.whl
 google-cloud-asset @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/google_cloud_asset-3.19.1-py2.py3-none-any.whl
 google-cloud-audit-log @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/google_cloud_audit_log-0.2.5-py2.py3-none-any.whl
 google-cloud-automl @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/google_cloud_automl-2.11.2-py2.py3-none-any.whl
 google-cloud-batch @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/google_cloud_batch-0.16.0-py2.py3-none-any.whl
 google-cloud-bigquery @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/google_cloud_bigquery-3.11.4-py2.py3-none-any.whl
 google-cloud-bigquery-datatransfer @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/google_cloud_bigquery_datatransfer-3.12.0-py2.py3-none-any.whl
 google-cloud-bigquery-storage @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/google_cloud_bigquery_storage-2.22.0-py2.py3-none-any.whl
 google-cloud-bigtable @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/google_cloud_bigtable-2.21.0-py2.py3-none-any.whl
 google-cloud-build @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/google_cloud_build-3.20.0-py2.py3-none-any.whl
 google-cloud-common @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/google_cloud_common-1.2.0-py2.py3-none-any.whl
 google-cloud-compute @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/google_cloud_compute-1.14.0-py2.py3-none-any.whl
 google-cloud-container @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/google_cloud_container-2.30.0-py2.py3-none-any.whl
 google-cloud-core @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/google_cloud_core-2.3.3-py2.py3-none-any.whl
 google-cloud-datacatalog @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/google_cloud_datacatalog-3.15.0-py2.py3-none-any.whl
 google-cloud-datacatalog-lineage @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/google_cloud_datacatalog_lineage-0.1.7-py3-none-any.whl
 google-cloud-datacatalog-lineage-producer-client @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/google_cloud_datacatalog_lineage_producer_client-0.0.10-py3-none-any.whl
 google-cloud-dataflow-client @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/google_cloud_dataflow_client-0.8.4-py2.py3-none-any.whl
 google-cloud-dataform @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/google_cloud_dataform-0.5.2-py2.py3-none-any.whl
 google-cloud-dataplex @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/google_cloud_dataplex-1.6.2-py2.py3-none-any.whl
 google-cloud-dataproc @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/google_cloud_dataproc-5.5.0-py2.py3-none-any.whl
 google-cloud-dataproc-metastore @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/google_cloud_dataproc_metastore-1.12.0-py2.py3-none-any.whl
 google-cloud-datastore @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/google_cloud_datastore-2.18.0-py2.py3-none-any.whl
 google-cloud-dlp @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/google_cloud_dlp-3.12.2-py2.py3-none-any.whl
 google-cloud-documentai @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/google_cloud_documentai-2.18.0-py2.py3-none-any.whl
 google-cloud-filestore @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/google_cloud_filestore-1.6.1-py2.py3-none-any.whl
 google-cloud-firestore @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/google_cloud_firestore-2.11.1-py2.py3-none-any.whl
 google-cloud-kms @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/google_cloud_kms-2.19.1-py2.py3-none-any.whl
 google-cloud-language @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/google_cloud_language-2.11.0-py2.py3-none-any.whl
 google-cloud-logging @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/google_cloud_logging-3.6.0-py2.py3-none-any.whl
 google-cloud-memcache @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/google_cloud_memcache-1.7.2-py2.py3-none-any.whl
 google-cloud-monitoring @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/google_cloud_monitoring-2.15.1-py2.py3-none-any.whl
 google-cloud-orchestration-airflow @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/google_cloud_orchestration_airflow-1.9.1-py2.py3-none-any.whl
 google-cloud-org-policy @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/google_cloud_org_policy-1.8.2-py2.py3-none-any.whl
 google-cloud-os-config @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/google_cloud_os_config-1.15.2-py2.py3-none-any.whl
 google-cloud-os-login @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/google_cloud_os_login-2.10.0-py2.py3-none-any.whl
 google-cloud-pubsub @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/google_cloud_pubsub-2.18.3-py2.py3-none-any.whl
 google-cloud-pubsublite @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/google_cloud_pubsublite-0.6.1-py2.py3-none-any.whl
 google-cloud-redis @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/google_cloud_redis-2.13.1-py2.py3-none-any.whl
 google-cloud-resource-manager==1.10.1
 google-cloud-run @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/google_cloud_run-0.9.1-py2.py3-none-any.whl
 google-cloud-secret-manager @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/google_cloud_secret_manager-2.16.3-py2.py3-none-any.whl
 google-cloud-spanner @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/google_cloud_spanner-3.40.1-py2.py3-none-any.whl
 google-cloud-speech @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/google_cloud_speech-2.21.0-py2.py3-none-any.whl
 google-cloud-storage @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/google_cloud_storage-2.10.0-py2.py3-none-any.whl
 google-cloud-storage-transfer @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/google_cloud_storage_transfer-1.9.1-py2.py3-none-any.whl
 google-cloud-tasks @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/google_cloud_tasks-2.14.1-py2.py3-none-any.whl
 google-cloud-texttospeech @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/google_cloud_texttospeech-2.14.1-py2.py3-none-any.whl
 google-cloud-translate @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/google_cloud_translate-3.12.0-py2.py3-none-any.whl
 google-cloud-videointelligence @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/google_cloud_videointelligence-2.11.3-py2.py3-none-any.whl
 google-cloud-vision @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/google_cloud_vision-3.4.4-py2.py3-none-any.whl
 google-cloud-workflows @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/google_cloud_workflows-1.11.0-py2.py3-none-any.whl
 google-crc32c @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/google_crc32c-1.5.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
 google-pasta @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/google_pasta-0.2.0-py3-none-any.whl
 google-resumable-media @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/google_resumable_media-2.6.0-py2.py3-none-any.whl
 googleapis-common-protos @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/googleapis_common_protos-1.60.0-py2.py3-none-any.whl
 graphviz @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/graphviz-0.20.1-py3-none-any.whl
 greenlet @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/greenlet-2.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
 grpc-google-iam-v1 @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/grpc_google_iam_v1-0.12.6-py2.py3-none-any.whl
 grpcio @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/grpcio-1.57.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
 grpcio-gcp @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/grpcio_gcp-0.2.2-py2.py3-none-any.whl
 grpcio-status @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/grpcio_status-1.57.0-py3-none-any.whl
 gunicorn @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/gunicorn-20.1.0-py3-none-any.whl
 h11 @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/h11-0.14.0-py3-none-any.whl
 h5py @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/h5py-3.9.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
 hdfs @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/hdfs-2.7.2.tar.gz
 hologram @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/hologram-0.0.16-py3-none-any.whl
 httpcore @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/httpcore-0.16.3-py3-none-any.whl
 httplib2 @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/httplib2-0.22.0-py3-none-any.whl
 httpx @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/httpx-0.23.3-py3-none-any.whl
 humanize @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/humanize-4.6.0-py3-none-any.whl
 hvac @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/hvac-1.2.0-py3-none-any.whl
 idna @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/idna-3.4-py3-none-any.whl
 importlib-metadata @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/importlib_metadata-4.13.0-py3-none-any.whl
 importlib-resources @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/importlib_resources-5.12.0-py3-none-any.whl
 inflection @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/inflection-0.5.1-py2.py3-none-any.whl
 iniconfig @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/iniconfig-2.0.0-py3-none-any.whl
 isodate @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/isodate-0.6.1-py2.py3-none-any.whl
 itsdangerous @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/itsdangerous-2.1.2-py3-none-any.whl
 jaraco.classes @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/jaraco.classes-3.3.0-py3-none-any.whl
 jeepney @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/jeepney-0.8.0-py3-none-any.whl
 Jinja2 @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/Jinja2-3.1.2-py3-none-any.whl
 jmespath==1.0.1
 json-merge-patch @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/json-merge-patch-0.2.tar.gz
 jsonpath-ng==1.6.0
 jsonschema @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/jsonschema-4.19.0-py3-none-any.whl
 jsonschema-specifications @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/jsonschema_specifications-2023.7.1-py3-none-any.whl
 keras @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/keras-2.13.1-py3-none-any.whl
 keyring @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/keyring-24.2.0-py3-none-any.whl
 keyrings.google-artifactregistry-auth @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/keyrings.google_artifactregistry_auth-1.1.2-py3-none-any.whl
 kombu @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/kombu-5.2.4-py3-none-any.whl
 kubernetes @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/kubernetes-23.6.0-py2.py3-none-any.whl
 kubernetes-asyncio @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/kubernetes_asyncio-24.2.3-py3-none-any.whl
 lazy-object-proxy @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/lazy_object_proxy-1.9.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
 leather @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/leather-0.3.4-py2.py3-none-any.whl
 libclang @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/libclang-16.0.6-py2.py3-none-manylinux2010_x86_64.whl
 linkify-it-py @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/linkify_it_py-2.0.0-py3-none-any.whl
 lockfile @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/lockfile-0.12.2-py2.py3-none-any.whl
 Logbook @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/Logbook-1.5.3.tar.gz
 looker-sdk @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/looker_sdk-23.14.1-py3-none-any.whl
 lxml==4.9.3
 Mako @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/Mako-1.2.4-py3-none-any.whl
 Markdown @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/Markdown-3.4.3-py3-none-any.whl
 markdown-it-py @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/markdown_it_py-2.2.0-py3-none-any.whl
 MarkupSafe @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/MarkupSafe-2.1.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
 marshmallow @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/marshmallow-3.19.0-py3-none-any.whl
 marshmallow-enum @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/marshmallow_enum-1.5.1-py2.py3-none-any.whl
 marshmallow-oneofschema @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/marshmallow_oneofschema-3.0.1-py2.py3-none-any.whl
 marshmallow-sqlalchemy @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/marshmallow_sqlalchemy-0.26.1-py2.py3-none-any.whl
 mashumaro @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/mashumaro-3.6-py3-none-any.whl
 mdit-py-plugins @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/mdit_py_plugins-0.3.5-py3-none-any.whl
 mdurl @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/mdurl-0.1.2-py3-none-any.whl
 minimal-snowplow-tracker @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/minimal-snowplow-tracker-0.0.2.tar.gz
 more-itertools @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/more_itertools-9.1.0-py3-none-any.whl
 msgpack @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/msgpack-1.0.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
 multidict @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/multidict-6.0.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
 mypy-boto3-appflow==1.28.42
 mypy-boto3-rds==1.28.41
 mypy-boto3-redshift-data==1.28.36
 mypy-boto3-s3==1.28.52
 mysqlclient @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/mysqlclient-2.2.0.tar.gz
 networkx @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/networkx-2.8.8-py3-none-any.whl
 numpy @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/numpy-1.24.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
 oauth2client @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/oauth2client-4.1.3-py2.py3-none-any.whl
 oauthlib @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/oauthlib-3.2.2-py3-none-any.whl
 objsize @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/objsize-0.6.1-py3-none-any.whl
 opt-einsum @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/opt_einsum-3.3.0-py3-none-any.whl
 orjson @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/orjson-3.9.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
 overrides @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/overrides-6.5.0-py3-none-any.whl
 packaging @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/packaging-23.0-py3-none-any.whl
 pandas @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/pandas-1.5.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
 pandas-gbq @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/pandas_gbq-0.19.2-py2.py3-none-any.whl
 paramiko @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/paramiko-3.3.1-py3-none-any.whl
 parsedatetime @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/parsedatetime-2.4.tar.gz
 pathspec @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/pathspec-0.9.0-py2.py3-none-any.whl
 pendulum @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/pendulum-2.1.2-cp38-cp38-manylinux1_x86_64.whl
 pipdeptree @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/pipdeptree-2.13.0-py3-none-any.whl
 pkgutil-resolve-name @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/pkgutil_resolve_name-1.3.10-py3-none-any.whl
 platformdirs @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/platformdirs-3.2.0-py3-none-any.whl
 pluggy @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/pluggy-1.0.0-py2.py3-none-any.whl
 ply==3.11
 prison @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/prison-0.2.1-py2.py3-none-any.whl
 prometheus-client @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/prometheus_client-0.16.0-py3-none-any.whl
 prompt-toolkit @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/prompt_toolkit-3.0.38-py3-none-any.whl
 proto-plus @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/proto_plus-1.22.3-py3-none-any.whl
 protobuf @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/protobuf-4.23.4-cp37-abi3-manylinux2014_x86_64.whl
 psutil @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/psutil-5.9.4-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
 psycopg2 @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/psycopg2-2.9.7.tar.gz
 psycopg2-binary @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/psycopg2_binary-2.9.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
 pyarrow @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/pyarrow-11.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
 pyasn1 @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/pyasn1-0.4.8-py2.py3-none-any.whl
 pyasn1-modules @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/pyasn1_modules-0.2.8-py2.py3-none-any.whl
 pycparser @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/pycparser-2.21-py2.py3-none-any.whl
 pydata-google-auth @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/pydata_google_auth-1.8.2-py2.py3-none-any.whl
 pydot @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/pydot-1.4.2-py2.py3-none-any.whl
 Pygments @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/Pygments-2.16.1-py3-none-any.whl
 pyhcl @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/pyhcl-0.4.5-py3-none-any.whl
 PyJWT @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/PyJWT-2.6.0-py3-none-any.whl
 pymongo @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/pymongo-4.5.0-cp38-cp38-manylinux2014_x86_64.whl
 PyNaCl @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl
 pyOpenSSL @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/pyOpenSSL-23.2.0-py3-none-any.whl
 pyparsing @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/pyparsing-3.1.1-py3-none-any.whl
 pytest @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/pytest-7.4.1-py3-none-any.whl
 python-daemon @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/python_daemon-3.0.1-py3-none-any.whl
 python-dateutil @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/python_dateutil-2.8.2-py2.py3-none-any.whl
 python-http-client @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/python_http_client-3.3.7-py3-none-any.whl
 python-nvd3 @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/python-nvd3-0.15.0.tar.gz
 python-slugify @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/python_slugify-8.0.1-py2.py3-none-any.whl
 pytimeparse @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/pytimeparse-1.1.8-py2.py3-none-any.whl
 pytz @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/pytz-2023.3-py2.py3-none-any.whl
 pytzdata @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/pytzdata-2020.1-py2.py3-none-any.whl
 PyYAML @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/PyYAML-6.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl
 redis @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/redis-3.5.3-py2.py3-none-any.whl
 redshift-connector==2.0.914
 referencing @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/referencing-0.30.2-py3-none-any.whl
 regex @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/regex-2023.8.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
 requests @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/requests-2.28.2-py3-none-any.whl
 requests-oauthlib @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/requests_oauthlib-1.3.1-py2.py3-none-any.whl
 requests-toolbelt @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/requests_toolbelt-1.0.0-py2.py3-none-any.whl
 rfc3339-validator @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/rfc3339_validator-0.1.4-py2.py3-none-any.whl
 rfc3986 @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/rfc3986-1.5.0-py2.py3-none-any.whl
 rich @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/rich-13.3.3-py3-none-any.whl
 rpds-py @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/rpds_py-0.10.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
 rsa @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/rsa-4.9-py3-none-any.whl
 s3transfer==0.6.2
 scramp==1.4.4
 SecretStorage @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/SecretStorage-3.3.3-py3-none-any.whl
 sendgrid @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/sendgrid-6.10.0-py3-none-any.whl
 setproctitle @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/setproctitle-1.3.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
 Shapely @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/Shapely-1.8.5.post1-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
 six==1.16.0
 sniffio @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/sniffio-1.3.0-py3-none-any.whl
 soupsieve==2.5
 SQLAlchemy @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/SQLAlchemy-1.4.47-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
 sqlalchemy-bigquery @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/sqlalchemy_bigquery-1.8.0-py2.py3-none-any.whl
 SQLAlchemy-JSONField @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/SQLAlchemy_JSONField-1.0.1.post0-py3-none-any.whl
 sqlalchemy-redshift==0.8.14
 sqlalchemy-spanner @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/sqlalchemy_spanner-1.6.2-py3-none-any.whl
 SQLAlchemy-Utils @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/SQLAlchemy_Utils-0.40.0-py3-none-any.whl
 sqlfluff @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/sqlfluff-2.1.4-py3-none-any.whl
 sqllineage @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/sqllineage-1.4.7-py3-none-any.whl
 sqlparse @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/sqlparse-0.4.4-py3-none-any.whl
 sshtunnel @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/sshtunnel-0.4.0-py2.py3-none-any.whl
 starkbank-ecdsa @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/starkbank-ecdsa-2.2.0.tar.gz
 statsd @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/statsd-4.0.1-py2.py3-none-any.whl
 tabulate @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/tabulate-0.9.0-py3-none-any.whl
 tblib @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/tblib-2.0.0-py3-none-any.whl
 tenacity @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/tenacity-8.2.2-py3-none-any.whl
 tensorboard @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/tensorboard-2.13.0-py3-none-any.whl
 tensorboard-data-server @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/tensorboard_data_server-0.7.1-py3-none-manylinux2014_x86_64.whl
 tensorflow @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/tensorflow-2.13.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
 tensorflow-estimator @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/tensorflow_estimator-2.13.0-py2.py3-none-any.whl
 tensorflow-io-gcs-filesystem @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/tensorflow_io_gcs_filesystem-0.33.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
 termcolor @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/termcolor-2.2.0-py3-none-any.whl
 text-unidecode @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/text_unidecode-1.3-py2.py3-none-any.whl
 toml @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/toml-0.10.2-py2.py3-none-any.whl
 tomli @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/tomli-2.0.1-py3-none-any.whl
 tornado @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/tornado-6.2-cp37-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
 tqdm @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/tqdm-4.66.1-py3-none-any.whl
 typing-extensions @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/typing_extensions-4.5.0-py3-none-any.whl
 uc-micro-py @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/uc_micro_py-1.0.1-py3-none-any.whl
 unicodecsv @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/unicodecsv-0.14.1.tar.gz
 uritemplate @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/uritemplate-4.1.1-py2.py3-none-any.whl
 urllib3 @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/urllib3-1.26.15-py2.py3-none-any.whl
 vine @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/vine-5.0.0-py2.py3-none-any.whl
 virtualenv @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/virtualenv-20.21.0-py3-none-any.whl
 watchtower==2.0.1
 wcwidth @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/wcwidth-0.2.6-py2.py3-none-any.whl
 websocket-client @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/websocket_client-1.5.1-py3-none-any.whl
 Werkzeug @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/Werkzeug-2.2.3-py3-none-any.whl
 wrapt @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/wrapt-1.15.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
 WTForms @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/WTForms-3.0.1-py3-none-any.whl
 yarl @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/yarl-1.8.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
 zipp @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/zipp-3.15.0-py3-none-any.whl
 zstandard @ file:///usr/local/lib/airflow-pypi-dependencies-2.5.3/python3.8/zstandard-0.21.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Deployment

Google Cloud Composer

Deployment details

composer-2.4.3-airflow-2.5.3

Anything else

No response

Are you willing to submit PR?

Code of Conduct

boring-cyborg[bot] commented 1 year ago

Thanks for opening your first issue here! Be sure to follow the issue template! If you are willing to raise PR to address this issue please do so, no need to wait for approval.

hussein-awala commented 1 year ago

Expected key current-context in kube-config

Deferrable and no deferrable operators use the exact same method to load the kube config file since 7.0.0, I'm surprised that you have this exception only in deferrable mode.

Since your config file doesn't have the current-context (default context), I wonder if you added cluster_context to your K8S connection? You can also add it to your task if you want to test.

tommyhutcheson commented 1 year ago

Hi @hussein-awala

I have tried quite a few different configurations at this point but there just seems to be an issue here.

when running the below dag the only task that completes is the deferrable-false task, the other two look to be running the code and output hello-world with deferrable set and I see the dag status change to purple however the runs are failing still with the error below, I have checked the kube-config file and I can see there is a key contexts. I have re-opened by Google support case to asking their product team to test the dag themselves and install composer-2.4.3-airflow-2.5.3. If there is another suggests please let me know.

ERROR

[2023-10-13, 14:38:27 UTC] {standard_task_runner.py:100} ERROR - Failed to execute job 48004 for task deferrable-true-extended-conf (Invalid kube-config file. Expected key contexts in kube-config;
 743598)

TESTING DAG

from airflow.providers.cncf.kubernetes.operators.pod import KubernetesPodOperator
import airflow
from airflow import DAG
from datetime import timedelta

default_args = {
    'start_date': airflow.utils.dates.days_ago(0),
    'retries': 1,
    'retry_delay': timedelta(minutes=5)
}

with DAG(
        'tommy_test_kub_simple_dag',
        default_args=default_args,
        description='liveness monitoring dag',
        schedule_interval='*/10 * * * *',
        max_active_runs=2,
        catchup=False,
        dagrun_timeout=timedelta(minutes=10),
) as dag:
    task1 = KubernetesPodOperator(
        name="deferrable-true",
        image="python:3.11-slim",
        cmds=['python', '-c', "print('hello world')"],
        task_id="deferrable-true",
        config_file="/home/airflow/composer_kube_config",
        deferrable=True,
        in_cluster=False
    )

    task2 = KubernetesPodOperator(
        name="deferrable-false",
        image="python:3.11-slim",
        cmds=['python', '-c', "print('hello world')"],
        task_id="deferrable-false",
        config_file="/home/airflow/composer_kube_config",
        deferrable=False,
        in_cluster=False
    )

    task3 = KubernetesPodOperator(
        name="deferrable-true-extended-conf",
        image="python:3.11-slim",
        cmds=['python', '-c', "print('hello world')"],
        task_id="deferrable-true-extended-conf",
        kubernetes_conn_id="kubernetes_default",
        deferrable=True,
        in_cluster=False,
        cluster_context="gke_my_orchestrater_id",
        config_file="/home/airflow/composer_kube_config",
    )

    task1
    task2
    task3
apilaskowski commented 1 year ago

@tommyhutcheson what do you think about avoiding those files and providing Kube Config in JSON, i think it should be possible. Having blocking operations (eg. files handling) in deferrable mode is in most cases a bad design, and I think community should aim to avoid that everywhere. Let me know if it was possible for you to provide this configuration via JSON.

functicons commented 1 year ago

I created a BashOperator which prints the kube config in the composer env. The log shows it actually has current-context. So it is not really a problem with the kube config itself, but somehow the config was not used correctly in async mode.

from datetime import datetime
from airflow import DAG
from airflow.operators.bash import BashOperator

dag = DAG('print_kube_config', description='Print Kube Config', schedule_interval='@once', start_date=datetime(2023, 8, 17))

bash_operator = BashOperator(task_id='print_kube_config_task', bash_command='cat /home/airflow/composer_kube_config', dag=dag)

bash_operator
functicons commented 1 year ago

I reproduced the problem with the following DAG. Very interesting, the pod / container actually succeeded, we can see Container logs: hello world deferrable=true in the log but the error happened after that. In other words, the problem is that pod succeeded, but task failed.

DAG:

from airflow.providers.cncf.kubernetes.operators.pod import KubernetesPodOperator
import airflow
from airflow import DAG
from datetime import timedelta

default_args = {
    'start_date': airflow.utils.dates.days_ago(0),
    'retries': 1,
    'retry_delay': timedelta(minutes=5)
}

with DAG(
        'kpo',
        default_args=default_args,
        description='KPO',
        schedule_interval='@once',
        max_active_runs=2,
        catchup=False,
        dagrun_timeout=timedelta(minutes=10),
) as dag:
    task1 = KubernetesPodOperator(
        name="deferrable-true",
        image="python:3.11-slim",
        cmds=['python', '-c', "print('hello world deferrable=true')"],
        task_id="deferrable-true",
        config_file="/home/airflow/composer_kube_config",
        deferrable=True,
        in_cluster=False
    )

    task1

Logs:

...
Running: ['airflow', 'tasks', 'run', 'kpo', 'deferrable-true', 'scheduled__2023-11-17T00:00:00+00:00', '--job-id', '5896', '--raw', '--subdir', 'DAGS_FOLDER/kpo.py', '--cfg-path', '/tmp/tmp5vwp6_0t']
...
Container logs: hello world deferrable=true
2023-11-17 05:03:48.808 UTC
Container logs: 
2023-11-17 05:03:48.826 UTC
Pod deferrable-true-b6ju3o4y has phase Pending
2023-11-17 05:03:50.852 UTC
Deleting pod: deferrable-true-b6ju3o4y
2023-11-17 05:03:51.075 UTC
Task failed with exception Traceback (most recent call last):   File "/opt/python3.8/lib/python3.8/site-packages/airflow/providers/cncf/kubernetes/operators/pod.py", line 648, in execute_complete     raise AirflowException(event["message"]) airflow.exceptions.AirflowException: Invalid kube-config file. Expected key current-context in kube-config
2023-11-17 05:03:51.083 UTC
Marking task as FAILED. dag_id=kpo, task_id=deferrable-true, execution_date=20231117T000000, start_date=20231117T050342, end_date=20231117T050351
2023-11-17 05:03:51.121 UTC
Failed to execute job 5896 for task deferrable-true (Invalid kube-config file. Expected key current-context in kube-config; 1262793)

Anybody knows the possible reason? Or is there a way to enable debug logs in KubernetesPodTrigger?

functicons commented 1 year ago

@hussein-awala, any idea about the observations above?

functicons commented 1 year ago

I feel like the error messages and logs need to be improved. The current ones are not sufficient to figure out what went wrong in the trigger/hook.

github-actions[bot] commented 1 year ago

This issue has been automatically marked as stale because it has been open for 14 days with no response from the author. It will be closed in next 7 days if no further activity occurs from the issue author.

functicons commented 1 year ago

Friendly ping!

apilaskowski commented 1 year ago

@potiuk @hussein-awala can you please chime in?

tommyhutcheson commented 12 months ago

Issue ongoing keeping ticket open with author comment.

potiuk commented 11 months ago

The lack of more details seems to be because the message is not coming from airflow but from the POD. The message is "just" displayed by the airflow's KPO and the error is somewhere on the POD.

There are likely two ways you can address your problem @tommyhutcheson:

However, I'd urge you to upgrade everything you can first. Many of our users experience problems that have long been solved and in this case there are quite many issues implemented since your version. You can either attempt it in the way that you want to be sure that you should upgrade (in which case I advise you to do detailed analysis of the changelog) or just upgrade and see if you still experience the problem. The latter is usually faster, and takes less time - both for you and volunteers here who have no time to go through detailed list of changelog just to make sure partcular problems have been fixed. This is an open-source project, so people here help when they have time (they are not paid for it) and in cases like that, it's quite a bit on the user to make sure to make the effort to ugprade to latest version in case they experience problems in later versions - especially in case there were many fixes since.

potiuk commented 11 months ago

Please let us know after you investigate and (hopefully) upgrade how the things go, so that we can (hopefully) close the ticket - in the meantime I mark it as pending response.

hussein-awala commented 11 months ago

Sorry for the delay. I will try to reproduce it and implement a fix before the next providers' release wave.

hussein-awala commented 11 months ago

Could you provide the Kubernetes conn you are using in your operator? (you can hide the confidential information)

hussein-awala commented 11 months ago

I tested KubernetesPodTrigger and AsyncKubernetesHook with many configuration combinations, and they both worked as expected.

I was able to reproduce the exception in only one case; are you sure the Kubernetes configuration file exists in the Triggerer pod and in the same path as the worker? In all the reports you provided, you confirmed that the config file is present in the worker (for example, when you tested with BashOperator). Still, no one mentioned the Triggerer in his investigation.

functicons commented 11 months ago

@hussein-awala thanks for your input! I will double check whether the config exists in the triggerer pod. But if that was the cause, do you know why in my previous repro, the operator container/pod succeeded with log hello world deferrable=true, since the trigger should have failed to trigger it.

hussein-awala commented 11 months ago

@hussein-awala thanks for your input! I will double check whether the config exists in the triggerer pod. But if that was the cause, do you know why in my previous repro, the operator container/pod succeeded with log hello world deferrable=true, since the trigger should have failed to trigger it.

It could work with a version < 7.0.0, but since https://github.com/apache/airflow/issues/31322, the behavior was changed by stopping converting the file to dict and providing it to the Trigger, instead, we provide the config file path and we load it in the Trigger. This PR was a bug fix, also there was another reason for it (will explain more later).

potiuk commented 11 months ago

It could work with a version < 7.0.0, but since #31322, the behavior was changed by stopping converting the file to dict and providing it to the Trigger, instead, we provide the config file path and we load it in the Trigger. This PR was a bug fix, also there was another reason for it (will explain more later).

That would certainly explain the behaviour .. Nice one @hussein-awala :)

functicons commented 11 months ago

It could work with a version < 7.0.0, but since #31322 ...

It doesn't seem to be related, because the original problem occurred with 7.3.0, and I also reproduced the error with 7.9.0 in composer-2.5.2-airflow-2.6.3. I'm still trying to figure out how to verify the file exists in Trigger Pod. I'd appreciate if someone can provide a sample code for that!

hussein-awala commented 11 months ago

It doesn't seem to be related, because the original problem occurred with 7.3.0, and I also reproduced the error with 7.9.0 in composer-2.5.2-airflow-2.6.3.

I said that deferrable mode works fine in a version <7.0.0 without adding the config file to the triggerer; reproducing the problem with 7.3.0 and 7.9.0 does not contradict what I said.

I'm still trying to figure out how to verify the file exists in Trigger Pod. I'd appreciate if someone can provide a sample code for that!

Quickly checking, I would say that providing extra files to the triggerer is impossible. I recommend contacting the support team of GCP to check with them if this is possible or not, and how they can support it if it's not supported.

bjankie1 commented 11 months ago

Before https://github.com/apache/airflow/pull/29498 the flow was as following:

  1. In the operator config_file was read and deserialized to a map.
  2. Serialized config was passed to the trigger as argument.,

This way 2 things were achieved:

  1. Reading file in the trigger which is a blocking operation.
  2. Dependency on the file synchronization between components that run trigger and operator. Which means consistency.

@hussein-awala Why has this process been reverted in https://github.com/apache/airflow/pull/29498 ?

github-actions[bot] commented 10 months ago

This issue has been automatically marked as stale because it has been open for 14 days with no response from the author. It will be closed in next 7 days if no further activity occurs from the issue author.

hussein-awala commented 10 months ago

This PR was a bug fix, also there was another reason for it (will explain more later).

For the second reason, here is it: https://www.cve.org/CVERecord?id=CVE-2023-51702

We're working on an improvement for the trigger data stored in the database, once it's released, we will check how can we fix this issue.

github-actions[bot] commented 9 months ago

This issue has been automatically marked as stale because it has been open for 14 days with no response from the author. It will be closed in next 7 days if no further activity occurs from the issue author.

github-actions[bot] commented 9 months ago

This issue has been closed because it has not received response from the issue author.

MCMcCallum commented 1 month ago

I am experiencing the same issue today, it appears there is no clear resolution in the comments above. Was this issue resolved? If so, how?

raphaelauv commented 1 month ago

same problem with

airflow==2.10.2 apache-airflow-providers-cncf-kubernetes==9.0.0

kind 0.24.0

kind get kubeconfig --internal > conf/kube_conf

airflow connection

  "kubernetes_default": {
    "conn_type": "kubernetes",
    "extra": "{\"extra__kubernetes__in_cluster\": false, \"extra__kubernetes__kube_config_path\": \"/opt/airflow/include/.kube/config\", \"extra__kubernetes__namespace\": \"default\", \"extra__kubernetes__cluster_context\": \"kind-kind\", \"extra__kubernetes__disable_verify_ssl\": false, \"extra__kubernetes__disable_tcp_keepalive\": false, \"xcom_sidecar_container_image\": \"alpine:3.16.2\"}"
  }
[2024-10-30, 16:03:51 UTC] {base.py:84} INFO - Retrieving connection 'kubernetes_default'
[2024-10-30, 16:03:51 UTC] {pod.py:1138} INFO - Building pod airflow-test-pod-xb472z6z with labels: {'dag_id': 'kubernetes_dag', 'task_id': 'task-one', 'run_id': 'manual__2024-10-30T160350.5676190000-e2f6ac7ec', 'kubernetes_pod_operator': 'True', 'try_number': '1'}
[2024-10-30, 16:03:51 UTC] {taskinstance.py:288} INFO - Pausing task as DEFERRED. dag_id=kubernetes_dag, task_id=task-one, run_id=manual__2024-10-30T16:03:50.567619+00:00, execution_date=20241030T160350, start_date=20241030T160351
[2024-10-30, 16:03:51 UTC] {taskinstance.py:340} ▼ Post task execution logs
[2024-10-30, 16:03:51 UTC] {local_task_job_runner.py:260} INFO - Task exited with return code 100 (task deferral)
[2024-10-30, 16:03:51 UTC] {local_task_job_runner.py:245} ▲▲▲ Log group end
[2024-10-30, 16:03:52 UTC] {pod.py:160} INFO - Checking pod 'airflow-test-pod-xb472z6z' in namespace 'default'.
[2024-10-30, 16:03:52 UTC] {base.py:84} INFO - Retrieving connection 'kubernetes_default'
[2024-10-30, 16:03:52 UTC] {kube_config.py:515} WARNING - Config not found: /home/airflow/.kube/config
[2024-10-30, 16:03:52 UTC] {triggerer_job_runner.py:631} INFO - Trigger kubernetes_dag/manual__2024-10-30T16:03:50.567619+00:00/task-one/-1/1 (ID 10) fired: TriggerEvent<{'name': 'airflow-test-pod-xb472z6z', 'namespace': 'default', 'status': 'error', 'message': 'Invalid kube-config file. Expected key contexts in kube-config', 'stack_trace': 'Traceback (most recent call last):\n  File "/home/airflow/.local/lib/python3.12/site-packages/airflow/providers/cncf/kubernetes/triggers/pod.py", line 162, in run\n    state = await self._wait_for_pod_start()\n            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File "/home/airflow/.local/lib/python3.12/site-packages/airflow/providers/cncf/kubernetes/triggers/pod.py", line 223, in _wait_for_pod_start\n    pod = await self.hook.get_pod(self.pod_name, self.pod_namespace)\n          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File "/home/airflow/.local/lib/python3.12/site-packages/airflow/providers/cncf/kubernetes/hooks/kubernetes.py", line 754, in get_pod\n    async with self.get_conn() as connection:\n               ^^^^^^^^^^^^^^^\n  File "/usr/local/lib/python3.12/contextlib.py", line 210, in __aenter__\n    return await anext(self.gen)\n           ^^^^^^^^^^^^^^^^^^^^^\n  File "/home/airflow/.local/lib/python3.12/site-packages/airflow/providers/cncf/kubernetes/hooks/kubernetes.py", line 741, in get_conn\n    kube_client = await self._load_config() or async_client.ApiClient()\n                  ^^^^^^^^^^^^^^^^^^^^^^^^^\n  File "/home/airflow/.local/lib/python3.12/site-packages/airflow/providers/cncf/kubernetes/hooks/kubernetes.py", line 711, in _load_config\n    await async_config.load_kube_config(\n  File "/home/airflow/.local/lib/python3.12/site-packages/kubernetes_asyncio/config/kube_config.py", line 603, in load_kube_config\n    loader = _get_kube_config_loader_for_yaml_file(\n             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File "/home/airflow/.local/lib/python3.12/site-packages/kubernetes_asyncio/config/kube_config.py", line 567, in _get_kube_config_loader_for_yaml_file\n    return KubeConfigLoader(\n           ^^^^^^^^^^^^^^^^^\n  File "/home/airflow/.local/lib/python3.12/site-packages/kubernetes_asyncio/config/kube_config.py", line 150, in __init__\n    self.set_active_context(active_context)\n  File "/home/airflow/.local/lib/python3.12/site-packages/kubernetes_asyncio/config/kube_config.py", line 162, in set_active_context\n    self._current_context = self._config[\'contexts\'].get_with_name(\n                            ~~~~~~~~~~~~^^^^^^^^^^^^\n  File "/home/airflow/.local/lib/python3.12/site-packages/kubernetes_asyncio/config/kube_config.py", line 448, in __getitem__\n    raise ConfigException(\nkubernetes_asyncio.config.config_exception.ConfigException: Invalid kube-config file. Expected key contexts in kube-config\n'}>
[2024-10-30, 16:03:54 UTC] {local_task_job_runner.py:123} ▼ Pre task execution logs
from airflow import DAG
from airflow.utils.dates import days_ago
from airflow.providers.cncf.kubernetes.operators.pod import KubernetesPodOperator

dag = DAG(
    dag_id="kubernetes_dag",
    schedule_interval=None,
    start_date=days_ago(1),
)

with dag:
    cmd = "echo toto && sleep 30 && echo finish && exit 1"

    KubernetesPodOperator(
        task_id="task-one",
        namespace="default",
        image_pull_policy="Never",
        kubernetes_conn_id="kubernetes_default",
        name="airflow-test-pod",
        image="alpine:3.16.2",
        cmds=["sh", "-c", cmd],
        deferrable=True,
        poll_interval=100,
        do_xcom_push=True,
    )
potiuk commented 1 month ago

@MCMcCallum @raphaelauv -> when you encounter closed issue (Especially closed months ago) with similar description, the best course of action is to open a new one - and describe your circumstances and case - ideally referring to the old issue as related.

This allows to focus on your issue. Which might or might not be related - even if error message is similar. And you have a chance to restart the issue, focusing on - likely - much more fresh circumstances - your Airflow version, your K8s provider version etc. When you add "another" set of things to existing closed issue, it's entirely unclear for anyone who is looking at it - how to reproduce it. Is it the same issue? Or different? Should I look at the original report or a new one? etc.

Also by opening the isssue You own it as an author - and when maintainer ask questions or mark it as "needs more information" it's clear that it's you who should provide it - not the original author, and it's also much more likely that you will do, because it is "fresh".

So I heartily recommend to do so.