当前位置:  开发笔记 > 编程语言 > 正文

多个K8S容器通过代理连接到Google Cloud SQL

如何解决《多个K8S容器通过代理连接到GoogleCloudSQL》经验,为你挑选了1个好方法。

我想将我的Kubernetes集群连接到Google Cloud SQL.

我有至少10个不同部署的pod,目前使用JDBC url +用户名/密码连接到MySQL [部署到k8s的docker镜像].

是否可以使用单个Google Cloud SQL Proxy实例并通过此代理将所有pod连接到Cloud SQL数据库?理想情况下,我想用代理替换容器中运行的mysql.

我宁愿不必在每个部署中运行代理.我发现的唯一样本似乎表明需要在每个部署中声明代理.



1> Hylton Peime..:

我找到了解决方案.

使用下面的yml部署代理,并将部署公开为服务.最重要的是,让代理监听0.0.0.0,而不是默认127.0.0.1.根据Google Cloud sql文档的所有秘密

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: mysql
spec:
  replicas: 1
  template:
    metadata:
      name: mysql
      labels:
        name: mysql
    spec:
      containers:
         - image: b.gcr.io/cloudsql-docker/gce-proxy:1.05
           name: cloudsql-proxy
           command: ["/cloud_sql_proxy", "--dir=/cloudsql",
                     "-instances=MYSQL:ZONE:DATABASE_INSTANCE=tcp:0.0.0.0:3306",
                     "-credential_file=/secrets/cloudsql/credentials.json"]
           volumeMounts:
             - name: cloudsql-oauth-credentials
               mountPath: /secrets/cloudsql
               readOnly: true
             - name: ssl-certs
               mountPath: /etc/ssl/certs
           ports:
             - containerPort: 3306
               name: mysql
      volumes:
        - name: cloudsql-oauth-credentials
          secret:
            secretName: cloudsql-oauth-credentials
        - name: ssl-certs
          hostPath:
            path: /etc/ssl/certs

该解决方案比在与客户端软件相同的部署中使用代理稍微昂贵,因为存在额外的TCP连接.

但是有很多好处:

更简单,不需要修改现有的K8S部署文件

允许将实现切换到MySQL Docker容器或使用Google Cloud SQL代理,而无需对客户端配置进行任何修改.

推荐阅读
吻过彩虹的脸_378
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有