1

I'm writing a service (Golang) that is meant to access a CloudSQL database.

The recommended way to connect to the CloudSQL instance is to use the cloud_sql proxy - to authenticate with the database and handle the SSL.

However, for performance and few other reasons I would like to access the database directly using a Golang package that handles the authentication.

Currently, using the database/sql package to initiate a connection to the database won't work because I need to whitelist the machine IP with CloudSQL. But given that I'm using Kubernetes to deploy my application, the origin IP could change at any moment.

I'd love to know if anyone knows what would be the best way of going about solving this problem.

Dcompoze
  • 853
  • 1
  • 11
  • 19

1 Answers1

0

If you're on Postgresql you can use their go library: https://cloud.google.com/sql/docs/postgres/connect-external-app#go

For MySQL see this document: https://cloud.google.com/sql/docs/mysql/connect-external-app#go

Haven't tested this approach (that would vendor lock me to gcloud) but their documentation tends to be reliable and up to date.

defectus
  • 1,947
  • 2
  • 16
  • 21
  • Thanks, I have found the `github.com/GoogleCloudPlatform/cloudsql-proxy/proxy/dialers/mysql` library which does exactly what I want. – Dcompoze Dec 19 '17 at 16:41
  • You mentioned concerns with performance in your original question -- the performance using the library will be about the same as using the proxy through UNIX sockets. – Vadim Dec 20 '17 at 00:13