K8S 集群中的 Google FCM firebase-admin initializeApp() 错误

Posted

技术标签:

【中文标题】K8S 集群中的 Google FCM firebase-admin initializeApp() 错误【英文标题】:Google FCM firebase-admin initializeApp() error in K8S cluster 【发布时间】:2021-12-11 04:25:55 【问题描述】:

我正在构建 NodeJs 服务器并尝试利用 FCM 进行推送通知。本地一切正常,但在 K8S 集群中我收到以下错误

FirebaseAppError: Credential implementation provided to initializeApp() via the "credential" property failed to fetch a valid Google OAuth2 access token with the following error: "Error fetching access token: Missing error payload".

errorInfo: 
    code: 'app/invalid-credential',
    message: 'Credential implementation provided to initializeApp() via the "credential" property failed to fetch a valid Google OAuth2 access token with the following error: "Error fetching access token: Missing error payload".'
  ,
  codePrefix: 'app'

我尝试在没有参数 admin.initializeApp() 的情况下初始化应用程序,将 env var 与路径 json 键保存在配置对象中,路径有效,文件存在,env 打印正常。 我试过这样const firebase = admin.initializeApp( credential: admin.credential.applicationDefault(), );,这显然是同一件事。我尝试使用 json 证书显式传递凭证道具,例如 const firebase = initializeApp( credential: admin.credential.cert(cert) ); 证书存在。我什至尝试将 firebase-admin 从 10 降级到 9。 节点 12 请帮忙

【问题讨论】:

【参考方案1】:

我发现了一个问题。这是我的 K8S 集群的 DNS 设置。因此它无法正确访问外部世界(检查 pod 内的 /etc/resolv.conf) 必须像这样将 dns 设置添加到我的部署声明中

      containers:
        ...
      dnsPolicy: "None"
      dnsConfig:
        nameservers:
         - 10.96.0.10 // for inner services lookup
         - 8.8.8.8
        searches:
         - default.svc.cluster.local
         - svc.cluster.local
         - cluster.local

【讨论】:

以上是关于K8S 集群中的 Google FCM firebase-admin initializeApp() 错误的主要内容,如果未能解决你的问题,请参考以下文章

记二进制搭建k8s集群完成后,部署时容器一直在创建中的问题

google容器镜像代理

Docker发布第一个GitHub Action项目 / Google推出K8s游戏集群服务

5 秒创建 k8s 集群 - 每天5分钟玩转 Docker 容器技术(115)

我可以在没有通知权限的情况下使用 FCM 接收消息吗?

推送中的“FCM 通道”知识了解一下