Как подключиться к облаку sql из загрязненного приложения в gcloud? - PullRequest
0 голосов
/ 14 марта 2019

Я использую GCloud, у меня есть кластер kubernate и экземпляр облака SQL.

У меня есть простое приложение node.js, которое использует базу данных.Когда я развертываю с gcloud app deploy, у него есть доступ к базе данных.Однако, когда я создаю dockerimage и открываю его, он не может получить доступ к базе данных.

  1. Я открываю приложение Docker следующим образом: https://cloud.google.com/kubernetes-engine/docs/tutorials/hello-app
  2. В облачных SQL-приложениях не включен частный IP,Я подключаюсь, используя облачный прокси-сервер
  3. В app.yaml я указываю base_settings:cloud_sql_instances.Я использую то же значение в socketPath config для подключения mysql.
  4. Ошибка в журналах докера:

    (узел: 1) UnhandledPromiseRejectionWarning: Ошибка: подключить ENOENT / cloudsql /x-alcove-224309: европа-запад1: обучение в PipeConnectWrap.afterConnect [as oncomplete] (net.js: 1097: 14)

Не могли бы вы объяснить, как подключиться к облакуsql из приложения докеризованного узла.

Ответы [ 2 ]

1 голос
/ 14 марта 2019

Как правило, лучший способ - подключить контейнер с коляской внутри того же модуля, что и ваше приложение.Примеры можно найти на странице «Соединение с Google Kubernetes Engine» здесь .Здесь также есть кодовая метка , которая более углубленная и может быть полезной.

1 голос
/ 14 марта 2019

Когда вы развертываете свое приложение на App Engine с gcloud app deploy, платформа запускает его в контейнере вместе с контейнером-коляской, отвечающим за запуск cloud_sql_proxy (вы запрашиваете его, указывая base_settings:cloud_sql_instances в своем приложении.yaml file).

Kubernetes Engine не использует файл app.yaml и не предоставляет вам этот контейнер с коляской, поэтому вам придется его настроить.В общедоступном документе показано, как это сделать, создавая секреты для учетных данных вашей базы данных и обновляя файл развертывания с помощью конфигурации контейнера для дополнительного автомобиля.Пример, показанный в документе, будет выглядеть так:

...
- name: cloudsql-proxy
  image: gcr.io/cloudsql-docker/gce-proxy:1.11
  command: ["/cloud_sql_proxy",
            "-instances=<INSTANCE_CONNECTION_NAME>=tcp:3306",
            "-credential_file=/secrets/cloudsql/credentials.json"]
  securityContext:
    runAsUser: 2  # non-root user
    allowPrivilegeEscalation: false
  volumeMounts:
    - name: cloudsql-instance-credentials
      mountPath: /secrets/cloudsql
      readOnly: true
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...