如何从Google容器引擎连接Google Cloud SQL?

3
我正在使用 Kubernetes 将一个 Rails 应用程序 部署到 Google Container Engine
数据库使用的是 Google Cloud SQL
我知道数据库的ip地址,并将其设置到我的Kubernetes配置文件中:
# web-controller.yml
apiVersion: v1
kind: ReplicationController
metadata:
  labels:
    name: web
  name: web-controller
spec:
  replicas: 2
  selector:
    name: web
  template:
    metadata:
      labels:
        name: web
    spec:
      containers:
      - name: web
        image: gcr.io/my-project-id/myapp:v1
        ports:
        - containerPort: 3000
          name: http-server
        env:
          - name: RAILS_ENV
            value: "production"
          - name: DATABASE_URL
            value: "mysql2://[my_username]:[my_password]@[database_ip]/myapp"

然后创建:
$ kubectl create -f web-controller.yml

从Pod日志中我看到:

$ kubectl logs web-controller-038dl
Lost connection to MySQL server at 'reading initial communication packet', system error: 0
/usr/local/bundle/gems/mysql2-0.3.20/lib/mysql2/client.rb:70:in `connect'
/usr/local/bundle/gems/mysql2-0.3.20/lib/mysql2/client.rb:70:in `initialize'
...

在Web服务部分的Kubernetes UI页面中,我可以看到负载均衡器(LoadBalancer Ingress)的IP地址。

在Google Developers控制台-〉存储-〉SQL中,选择正在运行的数据库并单击链接。然后从访问控制器-〉授权-〉授权网络中,添加一个新项目并将该IP添加到其中。但结果仍然相同。

2个回答

2

谢谢。我正在使用database_url连接远程mysql。所以也许我应该在我的url字符串后面附加它,例如:mysql2://[my_username]:[my_password]@[database_ip]/myapp?sslca=/path/to/mysql-ssl-ca-cert.pem - scho

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接