单个DB中的多个气流部署
#devops #database #airflow #backend

问题陈述:

气流部署当时只能使用一个DB。这是因为,在部署时,气流将在public架构中创建初始表,如图

所示

Image description

因此,我们无法创建同一DB中的另一个气流部署。

解决方案:

创建一个具有唯一用户凭据的新架构,授予用户凭证上的所有特权以访问新创建的架构。然后将新用户设置为新模式的搜索路径更改。最后,在气流yaml部署文件中使用DB用户凭据添加模式名称。

Image description

实现这一目标的步骤:

创建一个新的模式和用户凭据

CREATE SCHEMA airflow_ciapi;

CREATE USER nishok_ciapi WITH PASSWORD '***************';

授予特权查询

GRANT ALL PRIVILEGES ON DATABASE postgres to nishok_ciapi;

GRANT SELECT ON ALL SEQUENCES IN SCHEMA airflow_ciapi TO nishok_ciapi;
GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA airflow_ciapi TO nishok_ciapi;

GRANT ALL ON ALL TABLES IN SCHEMA airflow_ciapi TO nishok_ciapi;
GRANT ALL ON ALL SEQUENCES IN SCHEMA  airflow_ciapi TO nishok_ciapi;
GRANT ALL ON ALL FUNCTIONS IN SCHEMA airflow_ciapi TO s_ciapi;
nishok
GRANT CREATE ON SCHEMA airflow_ciapi TO nishok_ciapi;

更改搜索路径查询


ALTER USER nishok_ciapi SET search_path = airflow_ciapi;

同一db

中的两个架构

Image description

Image description

采样YAML文件以进行气流部署

airflow:
  service:
    type: NodePort
  image: ********.dkr.ecr.us-east-1.amazonaws.com/***********
  tag: GIT_SHA
  nodeselector: airflow
  config:
    dags_folder: /root/airflow/dags
    s3_url: s3://airflow
    base_url: airflow.xyz.com
    schema: airflow_ciapi