Google Cloud Composer и MS SQL с использованием облачного прокси

#airflow

#воздушный поток

Вопрос:

Я создаю облачный SQL (MS SQL Server) для интеграции с BigQuery, используя воздушный поток на GCP (Composer). Я настроил облачный SQL-прокси в кластере GKE, который работает нормально, ошибок нет:

 apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    run: cloud-sql-proxy
  name: cloud-sql-proxy
  namespace: cloud-sql-to-bq
spec:
  replicas: 1
  selector:
    matchLabels:
      run: cloud-sql-proxy
  strategy:
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 1
    type: RollingUpdate
  template:
    metadata:
      labels:
        run: cloud-sql-proxy
    spec:
      containers:
      - command:
        - /cloud_sql_proxy
        - -instances=[INSTANCE-NAME]=tcp:0.0.0.0:1433
        image: b.gcr.io/cloudsql-docker/gce-proxy:latest
        imagePullPolicy: IfNotPresent
        name: airflow-sqlproxy
        ports:
        - containerPort: 1433
          protocol: TCP
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
      nodeSelector:
        cloud.google.com/gke-nodepool: default-pool
      restartPolicy: Always
 

Моя база данных:

 dag = DAG('mssql-export-demo', catchup=False, default_args=default_args)
cloud_storage_bucket_name = 'mssql-export-test'


export_customers = MsSqlToGoogleCloudStorageOperator(
    task_id='export_analysis',
    sql='SELECT * FROM vwAnalysis;',
    bucket=cloud_storage_bucket_name,
    filename='data/customers/export.json',
    schema_filename='schemas/export.json',
    mssql_conn_id='cloud_sql_proxy_conn',
    dag=dag
)
 

Я также создал соединение в Airflow, чтобы указать на cloud_sql_proxy_conn.
Когда я запускаю DAG, я получаю следующую ошибку:

 [2020-11-28 01:59:20,555] {taskinstance.py:1153} ERROR - Connection to the database failed for an unknown reason.
Traceback (most recent call last)
  File "src/pymssql.pyx", line 636, in pymssql.connec
  File "src/_mssql.pyx", line 1964, in _mssql.connec
  File "src/_mssql.pyx", line 683, in _mssql.MSSQLConnection.__init_
_mssql.MSSQLDriverException: Connection to the database failed for an unknown reason
 

Другого сообщения об ошибке нет, что затрудняет отладку. У кого-нибудь есть опыт работы с MS SQL в Cloud SQL и Composer, чтобы помочь мне разобраться в этом?

Ответ №1:

Airflow теперь предоставляет CloudSqlInstanceExportOperator, что означает, что нет необходимости настраивать облачный SQL-прокси в GKE.