Cloud Composer не может подключиться к службе Cloud SQL Proxy - PullRequest
0 голосов
/ 15 ноября 2018

Мы запустили кластер Cloud Composer и хотим использовать его для перемещения данных из Cloud SQL (Postgres) в BQ. Я следил за примечаниями об этом, упомянутыми на этих двух ресурсах:

Google Cloud Composer и Google Cloud SQL

https://cloud.google.com/sql/docs/postgres/connect-kubernetes-engine

Мы запускаем модуль, на котором запущен cloud_sql_proxy, и запускаем сервис для его раскрытия. Проблема в том, что Cloud Composer не может увидеть сервис, сообщающий об ошибке при попытке использовать специальный запрос для проверки:

cloud not translate host name "sqlproxy-service" to address: Name or service not known"

Попытка использовать IP-адрес службы приводит к тайм-ауту страницы.

-instances передается работе cloud_sql_proxy при использовании в локальной среде или облачной оболочке. Похоже, что файлы журналов указывают на то, что соединение никогда не предпринималось

me@cloudshell:~ (my-proj)$ kubectl logs -l app=sqlproxy-service
me@2018/11/15 13:32:59 current FDs rlimit set to 1048576, wanted limit is 8500. Nothing to do here.

    2018/11/15 13:32:59 using credential file for authentication; email=my-service-account@service.iam.gserviceaccount.com
    2018/11/15 13:32:59 Listening on 0.0.0.0:5432 for my-proj:my-ds:my-db
    2018/11/15 13:32:59 Ready for new connections

Я вижу здесь комментарий https://stackoverflow.com/a/53307344/1181412, что, возможно, это даже не поддерживается?

Расход воздуха

enter image description here

YAML

apiVersion: v1
kind: Service
metadata:
  name: sqlproxy-service
  namespace: default
  labels:
    app: sqlproxy
spec:
  ports:
  - port: 5432
    protocol: TCP
    targetPort: 5432
  selector:
    app: sqlproxy
  sessionAffinity: None
  type: ClusterIP
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: sqlproxy
  labels:
    app: sqlproxy
spec:
  selector:
    matchLabels:
      app: sqlproxy
  template:
    metadata:
      labels:
        app: sqlproxy
    spec:
      containers:
        - name: cloudsql-proxy
          ports:
          - containerPort: 5432
            protocol: TCP
          image: gcr.io/cloudsql-docker/gce-proxy:latest
          imagePullPolicy: Always
          command: ["/cloud_sql_proxy",
                    "-instances=my-proj:my-region:my-db=tcp:0.0.0.0:5432",
                    "-credential_file=/secrets/cloudsql/credentials.json"]
          securityContext:
            runAsUser: 2  # non-root user
            allowPrivilegeEscalation: false
          volumeMounts:
            - name: cloudsql-instance-credentials
              mountPath: /secrets/cloudsql
              readOnly: true
      volumes:
        - name: cloudsql-instance-credentials
          secret:
            secretName: cloudsql-instance-credentials

1 Ответ

0 голосов
/ 21 марта 2019

Информация, которую вы нашли в ответе, который вы связали, верна - специальные запросы от веб-сервера Airflow к внутренним службам кластера в среде Composer не поддерживаются.Это связано с тем, что веб-сервер работает на App Engine flex, используя свою собственную отдельную сеть (не подключенную к кластеру GKE), что можно увидеть на диаграмме архитектуры Composer .

, поскольку этоВ этом случае ваш SQL-прокси должен быть открыт на общедоступном IP-адресе, чтобы веб-сервер Composer Airflow мог подключиться к нему.Для любых служб / конечных точек, прослушивающих адреса RFC1918 в кластере GKE (т. Е. Не выставленных на общедоступный IP-адрес), вам потребуется дополнительная конфигурация сети для приема внешних подключений.

Если это для вас основной блокировщик, рассмотритепод управлением веб-сервера Airflow с автономным управлением .Поскольку этот веб-сервер будет работать в том же кластере, что и настроенный вами прокси-сервер SQL, проблем с разрешением имен больше не будет.

...