ruby-on-rails - 如何从 Google Container Engine 连接 Google Cloud SQL?

标签 ruby-on-rails google-cloud-sql kubernetes google-kubernetes-engine

我正在使用 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 Console -> Storage -> SQL,选择正在运行的数据库并点击链接。从 Access Controler -> Authorization -> Authorized Networks,添加一个新项目并将该 IP 添加到那里。但结果是一样的。

最佳答案

你需要像 Yu-Ju Hong 说的那样创建 SSL 证书,然后你必须告诉 ruby​​ 在连接时使用证书,比如

http://makandracards.com/makandra/1701-use-ssl-for-amazon-rds-mysql-and-your-rails-app

关于:

sslca:/path/to/mysql-ssl-ca-cert.pem

关于ruby-on-rails - 如何从 Google Container Engine 连接 Google Cloud SQL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33773448/

相关文章:

java - Kubernetes 卷挂载路径

kubernetes - kube-dns服务发现无法发现服务的端口号

ruby-on-rails - 如何测试也定义为辅助方法的 ApplicationController 方法?

mysql - Google Cloud SQL 分片

mysql - 当表有索引时,LOAD DATA 的速度呈指数减慢

Kubernetes 端口转发 - 错误监听 tcp4 127.0.0.1 :88: bind: permission denied

ruby-on-rails - ActiveRecord::Base.logger 与 Rails logger 不同吗?

ruby-on-rails - 我应该在 Ruby on Rails 还是 Node.js (meteor) 中制作我的下一个应用程序?

ruby-on-rails - 虚拟属性 Rails - 未知属性错误

google-app-engine - 在谷歌云 SQL 中更改全局隔离级别