如何在Kuberentes群集中使用Firebase

时间:2016-11-07 20:30:28

标签: firebase firebase-realtime-database kubernetes

我正在尝试从Kubernetes集群内部访问Firebase数据库,我唯一想到的是使用类型为externalName的k8s服务。所以我尝试使用以下配置。

Kuberentes服务:

kind : Service
apiVersion: v1
metadata :
  name : firebase-database-service
  labels :
    app : firebase-database-service
  spec:
    type : ExternalName
    externalName : myapp.firebaseio.com
    ports:
      - port : 443
        targetPort: 443

以下是我演示的简单节点应用程序。

var firebase        = require('firebase');
var os              = require("os");
var co              = require('co');
var hostName        = os.hostname();

var config = {
    apiKey: "API_KEY",
    databaseURL: "https://firebase-database-service",
};

var dashboard   = firebase.initializeApp(config, 'Dashboard');
dashboard.auth().signInWithEmailAndPassword("username", "password");
let uid = hostName.split('.').join('_') + "_" + process.pid;
let ref = "/data/"+ uid;

setInterval(co.wrap(function* (){
    try {
        dashboard.database().ref(ref + '/loadavg').set(os.loadavg());
    } catch (e) {
        console.error(e);
    }
}), 3000);

我最后得到了以下错误。

FIREBASE FATAL ERROR: Cannot parse Firebase url. Please use https://<YOUR FIREBASE>.firebaseio.com 
at Error (native)
at xc (/Users/AAravindan/dev/realtime-screener/projects/test-kube-firebase/node_modules/firebase/database-node.js:55:277)
at yc (/Users/AAravindan/dev/realtime-screener/projects/test-kube-firebase/node_modules/firebase/database-node.js:57:20)
at Object.firebase.INTERNAL.registerService.Reference [as database] (/Users/AAravindan/dev/realtime-screener/projects/test-kube-firebase/node_modules/firebase/database-node.js:255:241)
at P.N (/Users/AAravindan/dev/realtime-screener/projects/test-kube-firebase/node_modules/firebase/app-node.js:18:94)
at Timeout.<anonymous> (/Users/AAravindan/dev/realtime-screener/projects/test-kube-firebase/index.js:19:19)
at next (native)
at onFulfilled (/Users/AAravindan/dev/realtime-screener/projects/test-kube-firebase/node_modules/co/index.js:65:19)
at /Users/AAravindan/dev/realtime-screener/projects/test-kube-firebase/node_modules/co/index.js:54:5
at Timeout.co (/Users/AAravindan/dev/realtime-screener/projects/test-kube-firebase/node_modules/co/index.js:50:10)

有没有办法从kubernetes集群访问firebase。

如果你想看看,这是一个示例项目。

Sample Project

2 个答案:

答案 0 :(得分:1)

目前(2016年11月8日),无法使用javascript SDK。

我创建了一个错误,这是来自firebase支持的回复。

目前,没有办法指定要与JS SDK一起使用的数据库而不是文字网址,其格式为:“https://.firebaseio.com”,如错误所示。

虽然,我已经创建了一个关于这个问题的错误,并引起了我们工程师的注意。我会在这个帖子上通知你任何更新。

答案 1 :(得分:0)

试试kubectl get services,您将获得

的服务列表
NAME           CLUSTER-IP      EXTERNAL-IP   PORT(S)             AGE

使用CLUSTER-IP代替externalName

如果仍然无法连接到您的服务,请运行kubeclt describe <service_name_above>并检查您服务的ENTRYPOINT(如果您的ENTRYPOINT=<None>,您的服务似乎无法正常运行) 尝试使用ENTRYPOINT而不是CLUSTER-IP(不推荐)