【问题标题】:How to make connection with Google Cloud SQL using Google Container Engine?如何使用 Google Container Engine 与 Google Cloud SQL 建立连接?
【发布时间】:2018-03-03 18:05:36
【问题描述】:

我正在使用 Node JS 并在 Google Container Engine 中使用 Kubernetes 部署它。但我无法连接到 MySQL

这是我的 node JS 连接

var pool =  mysql.createPool({
 connectionLimit : 100, 
 user : process.env.DB_USER,
 password : process.env.DB_PASSWORD,
 database : process.env.DB_NAME,
 multipleStatements : true, 
 socketPath : '/cloudsql/' + process.env.INSTANCE_CONNECTION_NAME
})

我将它用于我的 Google App Engine 及其工作。现在我需要转移到 GKE,它发送了一个错误,上面写着 mySQL is not defined

这是我的app-frontend.yaml

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
 name: app-frontend
labels:
 app: app
spec:
 replicas: 1
 template:
  metadata:
   labels:
    app: app
    tier: frontend
spec:
  containers:
  - name: app
    image: gcr.io/app-12345/app:1.0 
    env :
      - name : DB_HOST
        value : 127.0.0.1:3306
      - name : DB_USER 
        valueFrom:
            secretKeyRef:
              name: cloudsql-db-credentials
              key: username
      - name : DB_PASSWORD
        valueFrom:
            secretKeyRef:
              name: cloudsql-db-credentials
              key: password

    ports:
    - name: http-server
      containerPort: 8080
    imagePullPolicy: Always

  - image: gcr.io/cloudsql-docker/gce-proxy:1.09
    name: cloudsql-proxy
    imagePullPolicy: Always
    command: 
    - /cloud_sql_proxy 
    - --dir=/cloudsql 
    - --instances=mulung=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
      # [END proxy_container]
    ports:
    - name: portdb
      containerPort: 3306

    # [START volumes]
  volumes:
    - name: cloudsql-instance-credentials
      secret:
        secretName: cloudsql-instance-credentials
    - name: ssl-certs
      hostPath:
        path: /etc/ssl/certs
    - name: cloudsql
      emptyDir:

我应该怎么做才能解决它?谢谢你们。

【问题讨论】:

    标签: mysql node.js kubernetes google-cloud-platform google-kubernetes-engine


    【解决方案1】:

    你能检查一下命令部分吗

        command: ["/cloud_sql_proxy", "--dir=/cloudsql",
            "-instances=CLOUD_SQL_INSTANCE_NAME",
            "-credential_file=/secrets/cloudsql/credentials.json"]
    

    这是来自我的一个后端应用程序的有效 deployment.yaml

    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
      name: <appname>
    spec:
      replicas: 2
      template:
        metadata:
          labels:
            app: <appname>
        spec:
          containers:
          - image: gcr.io/<some_name>/cloudsql-docker/gce-proxy:1.05
            name: cloudsql-proxy
            command: ["/cloud_sql_proxy", "--dir=/cloudsql",
                "-instances=CLOUD_SQL_INSTANCE_NAME",
                "-credential_file=/secrets/cloudsql/credentials.json"]
            volumeMounts:
              - name: cloudsql-oauth-credentials
                mountPath: /secrets/cloudsql
                readOnly: true
              - name: ssl-certs
                mountPath: /etc/ssl/certs
              - name: cloudsql
                mountPath: /cloudsql
          - name: <appname>
            image: IMAGE_NAME
            ports:
            - containerPort: 8888
            readinessProbe:
              httpGet:
                path: /<appname>/health
                port: 8888
              initialDelaySeconds: 30
              periodSeconds: 30
              timeoutSeconds: 30
              successThreshold: 1
              failureThreshold: 5
            env:
                - name: PROJECT_NAME
                  value: <some_name>
                - name: PROJECT_ZONE
                  value: <some_name>
                - name: INSTANCE_NAME
                  value: <some_name>
                - name: INSTANCE_PORT
                  value: <some_name>
                - name: CONTEXT_PATH
                  value: <appname>
            volumeMounts:
              - name: application-config
                mountPath: /opt/config-mount
          volumes:
            - name: cloudsql-oauth-credentials
              secret:
                secretName: cloudsql-oauth-credentials
            - name: ssl-certs
              hostPath:
                path: /etc/ssl/certs
            - name: cloudsql
              emptyDir:
            - name: application-config
              secret:
                secretName: <appname>-ENV_NAME-config
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-18
      • 1970-01-01
      • 1970-01-01
      • 2014-07-19
      • 2020-06-07
      相关资源
      最近更新 更多