我有一个部署在GKE集群上的编写器环境,我的愿望是能够通过operators
检索该集群上的信息,例如,无需硬编码,或手动将其放在环境变量中。
我现在想要得到的相关信息:
COMPOSER_SERVICE_ACCOUNT = "<acc_name>@<project_id>.iam.gserviceaccount.com"
COMPOSER_BUCKET = "<bucket_name>"
COMPOSER_PROJECT = "<project_id_where_composer_is_deployed>"
COMPOSER_PYTHON_VERSION = "3.8.12"
COMPOSER_VERSION = "<relevant_v>"
COMPOSER_UI_URL = "<...>"
AIRFLOW_VERSION = "2.3.4"
...
我的直觉是通过BashOperator
使用gcloud
,但我希望有一个库能够更好地执行此任务。
您可以使用内置的CloudComposerGetEnvironmentOperator操作符:
get_env = CloudComposerGetEnvironmentOperator(
task_id="get_env",
project_id='project',
region='europe-west1',
environment_id='composer-env-name',
)
这个操作符显示所有的环境信息,相当于:
gcloud composer environments describe composer-env-name
--location europe-west1
如果需要,您可以使用xcom访问结果Dict
。
如果您不想硬编码参数,如project id
和Composer
environment name
,您可以使用预定义的Composer环境变量检索它们,例如:
PROJECT_ID = os.getenv("GCP_PROJECT")
COMPOSER_ENV_NAME = os.getenv("COMPOSER_ENVIRONMENT")
get_env = CloudComposerGetEnvironmentOperator(
task_id="get_env",
project_id=PROJECT_ID,
region='europe-west1',
environment_id=COMPOSER_ENV_NAME,
)