Проблема с подключением к базе данных в процессе сборки Google Cloud Build - PullRequest
0 голосов
/ 19 февраля 2020

Похоже на эту проблему. (я опишу ссылку более подробно ниже)

Проблема: при запуске Google Cloud Build появляется сообщение об ошибке:

django.db.utils.OperationalError: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/cloudsql/sample-kubernetes-268320:us-west1:cloud-build-staging/.s.PGSQL.3306"

Я следую за решением , опубликованным здесь сотрудником. Они предоставляют образец cloudbuild.yaml, за которым я следовал без особой удачи.

Работа cloudbuild.yaml

steps:
  - id: proxy-install
    name: alpine:3.10
    entrypoint: sh
    args:
      - -c
      - 'wget -O /workspace/cloud_sql_proxy https://storage.googleapis.com/cloudsql-proxy/v1.16/cloud_sql_proxy.linux.386 &&  chmod +x /workspace/cloud_sql_proxy'
    waitFor: ['-']
  - id: execute-with-proxy
    name: python:3.7
    timeout: 100s
    entrypoint: sh
    args:
      - -c
      - '(/workspace/cloud_sql_proxy -dir=/workspace -instances=[INSTANCE_CONNECTION_NAME] & sleep 2) && (pip install -r requirements.txt && python test_sql.py)'
    waitFor: ['proxy-install']

Мой cloudbuild.yaml

steps:
  - id: proxy-install
    name: alpine:3.10
    entrypoint: sh
    args:
      - -c
      - 'wget -O /workspace/cloud_sql_proxy https://storage.googleapis.com/cloudsql-proxy/v1.16/cloud_sql_proxy.linux.386 &&  chmod +x /workspace/cloud_sql_proxy'
    waitFor: ['-']
  - id: Test
    name: 'python:3.7.6-buster'
    env:
      - "CLOUDBUILD_TEST=True"
    timeout: 100s
    entrypoint: /bin/sh
    args:
      - -c
      - '(/workspace/cloud_sql_proxy -dir=/workspace -instances=sample-kubernetes-268320:us-west1:cloud-build-staging & sleep 2) && (pip install -r requirements.txt && cd fastestfollowup && python3 manage.py test)'
    waitFor: ['proxy-install']

Шаги I ' для отладки:

  1. Я добавил Cloud Build Service в качестве облака SQL Admin
  2. Я убедился, что имя моего экземпляра правильное, используя gcloud sqlinstances describe cloud-build-staging и копирование "имя соединения"

Редактировать: я изменил свой файл cloudbuild.yaml с

    args:
      - -c
      - '(/workspace/cloud_sql_proxy -dir=/workspace -instances=sample-kubernetes-268320:us-west1:cloud-build-staging & sleep 2) && (pip install -r requirements.txt && cd fastestfollowup && python3 manage.py test)'

на:

    args:
      - -c
      - '(/workspace/cloud_sql_proxy -dir=/cloudsql -instances=sample-kubernetes-268320:us-west1:cloud-build-staging & sleep 2) && (pip install -r requirements.txt && cd fastestfollowup && python3 manage.py test)'

Без эффекта.

1 Ответ

1 голос
/ 19 февраля 2020

Похоже, вы запустили прокси с -dir=/workspace, но затем попытались подключиться к /cloudsql. Вам потребуется либо обновить прокси-сервер, либо обновить путь, используемый вашим приложением для подключения.

Строка:

args:
      - -c
      - '(/workspace/cloud_sql_proxy -dir=/workspace -instances=sample-kubernetes-268320:us-west1:cloud-build-staging & sleep 2) && (pip install -r requirements.txt && cd fastestfollowup && python3 manage.py test)'

Следует прочитать:

args:
      - -c
      - '(/workspace/cloud_sql_proxy -dir=/cloudsql -instances=sample-kubernetes-268320:us-west1:cloud-build-staging & sleep 2) && (pip install -r requirements.txt && cd fastestfollowup && python3 manage.py test)'

Другие ошибки включают в себя:

  1. Слушать неправильно порт. В ваших журналах вы увидите порт, который прослушивает ваша база данных. По умолчанию postgres составляет 5432, ваше - 3306.

  2. Убедитесь, что у вашей службы Cloud Build есть правильные разрешения. Добавьте [projectnumber] @ cloudbuild.gserviceaccount.com в качестве «Cloud SQL Admin» через панель управления IAM.

...