Connect to Google Cloud SQL from Container Engine with Java App

11/11/2016

I'm having a tough time connecting to a Cloud SQL Instance from a Java App running in a Google Container Engine Instance.

I whitelisted the external instance IP from the Access Control of CloudSQL. Connecting from my local machine works well, however I haven't managed to establish a connection from my App yet.

I'm configuring the Container as (cloud-deployment.yaml):

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: APPNAME
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: APPNAME
    spec:
      imagePullSecrets:
        - name: APPNAME.com
      containers:
        - image: index.docker.io/SOMEUSER/APPNAME:latest
          name: web
          env:
            - name: MYQL_ENV_DB_HOST
              value: 111.111.111.111 # the cloud sql instance ip
            - name: MYQL_ENV_MYSQL_PASSWORD
              value: THEPASSWORD
            - name: MYQL_ENV_MYSQL_USER
              value: THEUSER
          ports:
            - containerPort: 9000
              name: APPNAME

using the connection url jdbc:mysql://111.111.111.111:3306/databaseName, resulting in:

Error while executing: Access denied for user 'root'@'ip adress of the instance' (using password: YES)`

I can confirm that the Container Engine external IP is set on the SQL instance.

I don't want to use the Cloud Proxy Image for now as I'm still in development stage.

Any help is greatly appreciated.

-- lean der
gcloud
google-cloud-sql
google-kubernetes-engine
kubernetes

1 Answer

11/12/2016

You must use the cloud SQL proxy as described here: https://github.com/GoogleCloudPlatform/cloudsql-proxy/blob/master/README.md

-- Eric Tune
Source: StackOverflow