我正在尝试从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。
如果你想看看,这是一个示例项目。
答案 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(不推荐)