如何从 Google 容器引擎连接 Google 云 SQL?
How to connect Google Cloud SQL from Google Container Engine?
我正在使用 Kubernetes 将 Rails 应用程序 部署到 Google 容器引擎.
数据库正在使用 Google 云 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, select 运行 db 然后点击link。从 Access Controler -> Authorization -> Authorized Networks,添加一个新项目并将该 IP 添加到那里。但是结果是一样的。
从看来,"using SSL connection with that 0.0.0.0/0 CIDR"似乎是推荐的解决方案。
你需要像 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
我正在使用 Kubernetes 将 Rails 应用程序 部署到 Google 容器引擎.
数据库正在使用 Google 云 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, select 运行 db 然后点击link。从 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