2017-08-11 2 views
0

Ainsi, pour une raison quelconque, je ne parviens pas à me connecter à l'instance SQL via cloud_sql_proxy.Impossible de se connecter au cloud SQL depuis le conteneur à l'aide de cloud_sql_proxy


J'ai essayé de faire un telnet 127.0.0.1 3306 sur le récipient wordpress (via kubectl exec ...):

bash-4.3# telnet 127.0.0.1 3306 
Connection closed by foreign host 

Même si je kubectl exec.. dans le récipient cloudsql-proxy je reçois le même comportement que ci-dessus. Cependant, cette opération fonctionne correctement au niveau local.


Comment est-ce que je peux diagnostiquer ce problème, et quelle peut être la cause?


Voici ma config de conteneurs (dans un déploiement):

containers: 
    - image: eu.gcr.io/abcxyz/wordpress:initial 
     name: wordpress 
     imagePullPolicy: "Always" 
     env: 
     - name: WORDPRESS_HOST 
      value: localhost 
     - name: WORDPRESS_DB_USERNAME 
      valueFrom: 
      secretKeyRef: 
       name: cloudsql-db-credentials 
       key: username 
     volumeMounts: 
     - name: wordpress-persistent-storage 
      mountPath: /var/www/html 
    - image: eu.gcr.io/abcxyz/nginx:initial 
     name: nginx 
     imagePullPolicy: "Always" 
     ports: 
     - containerPort: 80 
      name: nginx 
     volumeMounts: 
     - name: wordpress-persistent-storage 
      mountPath: /var/www/html 
    - image: gcr.io/cloudsql-docker/gce-proxy:1.09 
     name: cloudsql-proxy 
     command: ["/cloud_sql_proxy", "--dir=/cloudsql", 
       "-instances=abcxyz:europe-west1:wordpressdb=tcp:3306", 
       "-credential_file=/secrets/cloudsql/credentials.json"] 
     volumeMounts: 
     - name: cloudsql-instance-credentials 
      mountPath: /secrets/cloudsql 
      readOnly: true 
     - name: ssl-certs 
      mountPath: /etc/ssl/certs 
     - name: cloudsql 
      mountPath: /cloudsql 

Si obtenir les journaux de la cloudsql-proxy je vois ce qui suit:

2017/08/11 12:55:03 New connection for "abcxyz:europe-west1:wordpressdb" 
    2017/08/11 12:55:03 couldn't connect to "abcxyz:europe-west1:wordpressdb": ensure that the account has access to "abcxyz:europe-west1:wordpressdb" (and make sure there's no typo in that name). Error during createEphemeral for abcxyz:europe-west1:wordpressdb: googleapi: Error 403: The client is not authorized to make this request., notAuthorized 

Le compte de service en question a l'autorisation Cloud SQL Admin.

Répondre

1

Je devais ajouter l'autorisation Cloud SQL Client au compte de service.

Mise à jour: J'ai encore rencontré ce problème et, pour une raison quelconque, un compte de service continuerait à fonctionner dans l'erreur ci-dessus. J'ai dû créer un autre compte de service qui a fonctionné ...