Cloud SQL Connection with Kubernetes/Proxy Side Car

6/8/2018

Ive got a Pod with a Golang binary running an REST API. There's a side car in the pod for the gce cloud SQL proxy.

I'm constantly getting a "dial tcp 127.0.0.1:3306: connect: connection refused" error

The Proxy to CloudSQL connectivity is working, I can successfully connect via the cloud shell with the same credentials.

In the pod, I've also added the mysql client and I can connect to my database, so I think the credentials and everything are OK, I've proved the proxy to cloudsql connection works and can query the database

I have the following;

  • Golang binary from 1.10
  • Kubernetes Engine on Google Cloud
  • Cluster Version: 1.10.2-gke.3
  • Binary runs on top of an alpine:latest container
  • Current SQL Libary is https://github.com/go-sql-driver/mysql
  • GCE Cloud Proxy Latest and 1.11
  • Credentials added as environment variables are correct user:password@tcp:host:port/DATABASE
  • code uses get os.Getenv for env variables
  • Used this as the reference: https://cloud.google.com/sql/docs/mysql/connect-kubernetes-engine
  • Cloud SQL instance is up and running
  • secrets are created in kube and mounted as volumes too

The only change prior to this working a few months back during an previous test was the addition of services to the kubernetes deployment, and running the deployment and everything in a namespace called alpha, not default. The credential are created and everything in the name space.

-- Bonn93
cloud-sql-proxy
go
google-cloud-sql
google-kubernetes-engine
kubernetes

0 Answers