Как вы можете запустить `kubectl -f apply <file.yaml>` из DAG, используя оператор bash в Cloud Composer? - PullRequest
1 голос
/ 04 июля 2019

Я пытаюсь применить файл конфигурации для создания POD из Cloud Compose с помощью BashOperator

Сначала я попытался использовать PodOperator, но он не позволяет передать файл спецификации, он просто собирается из образа.

Я пытался использовать BashOperator, поскольку рабочий уже включает gcloud, kubectl и т. Д. https://cloud.google.com/composer/docs/how-to/using/writing-dags#bashoperator

Но каждый раз, когда я запускаю команду, я получаю сообщение об ошибке с аргументами или с gcloud sdk.

Я попытался запустить отдельные команды kubectl, и kubectl действительно установлен на рабочем месте.

Я уже пытался настроить конфигурацию для кластера, но я также получил ошибки при этом вызове.

job = BashOperator(
    task_id='start',
    bash_command='kubectl apply -f
/home/airflow/gcs/dags/.../spec.yaml',
    env=prodigy_env
    )

Я ожидаю, что модуль будет эффективно создан с помощью файла конфигурации, но фактический результат будет

{bash_operator.py:124} INFO - unable to recognize - Path to file

* Если вы запускаете cat / path, файл действительно существует

1 Ответ

0 голосов
/ 21 июля 2019

Содержимое корзины DAG Buckets/<your bucket>/dags/ копируется в '/ home / airflow / gcsfuse / dags /', сохраняя структуру папок.

Если ваш spec.yaml хранится в вашей корзине DAG, как это Buckets/<your bucket>/dags/<subfolder1>/spec.yaml, тогда файл должен быть доступен по следующему пути /home/airflow/gcsfuse/dags/<subfolder1>/spec.yaml.

...