Подключение к облачному экземпляру Google mysql из кластера GKE с использованием cloudsqlproxy - PullRequest
0 голосов
/ 25 ноября 2018

У меня есть два проекта в GCP, а именно.project1 и project2

У меня есть настройка mysql экземпляр в проекте 1.

У меня также есть настройки cloudsqlproxy (pod) и mypod в кластере GKE в project2. I want to access mysql instance from mypod through cloudsqlproxy`.

У меня есть следующий код для cloudmysqlproxy

apiVersion: v1
kind: Service
metadata:
  name: cloudsqlproxy-service-mainnet
  namespace: dev
spec:
  ports:
  - port: 3306
    targetPort: port-mainnet
  selector:
    app: cloudsqlproxy

---

apiVersion: apps/v1
kind: Deployment
metadata:
  name: cloudsqlproxy
  namespace: dev
spec:
  replicas: 1
  selector:
    matchLabels:
      app: cloudsqlproxy
  template:
    metadata:
      labels:
        app: cloudsqlproxy
    spec:
      containers:
       # Make sure to specify image tag in production
       # Check out the newest version in release page
       # https://github.com/GoogleCloudPlatform/cloudsql-proxy/releases
      - name: cloudsqlproxy
        image: b.gcr.io/cloudsql-docker/gce-proxy:latest
       # 'Always' if imageTag is 'latest', else set to 'IfNotPresent'
        imagePullPolicy: Always
        name: cloudsqlproxy
        command:
        - /cloud_sql_proxy
        - -dir=/cloudsql
        - -instances=project1:asia-east1:development=tcp:0.0.0.0:3306
        - -credential_file=/credentials/credentials.json
        ports:
        - name: port-mainnet
          containerPort: 3306
        volumeMounts:
        - mountPath: /cloudsql
          name: cloudsql
        - mountPath: /credentials
          name: cloud-sql-client-account-token
      volumes:
      - name: cloudsql
        emptyDir:
      - name: cloud-sql-client-account-token
        secret:
          secretName: cloud-sql-client-account-token

Я настроил cloud-sql-client-account-token следующим образом:

kubectl create secret cloud-sql-client-account-token --from-file=credentials.json=$HOME/credentials.json

Где я скачал файл credentials.json из учетной записи службы в project1.

Когда я пытаюсь получить доступ к экземпляру mysql из моего модуля, я получаю следующую ошибку:

mysql --host=cloudsqlproxy-service-mainnet.dev.svc.cluster.local --port=3306
ERROR 1045 (28000): Access denied for user 'root'@'cloudsqlproxy~35.187.201.86' (using password: NO)

И в журналах cloud-proxy я получаю следующее:

2018/11/25 00:35:31 Instance project1:asia-east1:development closed connection

Необходимо ли запускать экземпляр mysql в том же проекте (project2), что и модуль?Чего мне не хватает?

РЕДАКТИРОВАТЬ

Я могу получить доступ к прокси на моем локальном компьютере, настроив так

/cloud_sql_proxy -instances=project1:asia-east1:development=tcp:3306

, а затем подключиться к прокси с помощью mysqlклиент.

...