0

kubernetesクラスタにfirebase-admin sdkを統合しようとしていますが、私のポッドに次のエラーが表示されています。クラスタにはアクセス許可が必要です。Nodejs firebase-adminはGoogle Kubernetesエンジンのアプリケーションのデフォルトの認証情報で認証します

FIREBASE WARNING: Provided authentication credentials for the app named 
"[DEFAULT]" are invalid. This usually indicates your app was not 
initialized correctly. Make sure the "credential" property provided to 
initializeApp() is authorized to access the specified "databaseURL" and 
is from the correct project. 

初期化コード:私の開発環境の初期化で

var admin = require("firebase-admin"); 

admin.initializeApp({ 
    credential: admin.credential.applicationDefault(), 
    databaseURL: "https://<DATABASE_NAME>.firebaseio.com" 
}); 

は、このような罰金を動作します。 gcloudは私のプロジェクトに対して認証されています。

アプリケーションのデフォルトの認証情報がKubernetesエンジンに対してどのように有効になっていますか?

ありがとうございます。

+1

これは、通常、資格情報が関連付けられているプロジェクトが、データベースURLが関連付けられているプロジェクトと異なることを示します。 Kubernetes環境で使用されているプロジェクトを見つける必要があります。あなたの 'GOOGLE_APPLICATION_CREDENTIALS'変数は何を指していますか? –

+0

ありがとうございます。あなたのコメントから、私のGoogle CloudプロジェクトはFirebaseプロジェクトとは異なることに気付きました。だから私はfirebaseを接続するためにサービスアカウントを使用する必要があります。 – mikzaaa

答えて

1

あなたのデータベース/他のGoogle Cloud Platformサービスを認証するためにKubernetes/Containerクラスタ内にサービスアカウントを設定しましたか?

サービスアカウントは、Google Cloud Platform APIを使用するために必要な認可を提供するためだけに使用することはできませんが、Kubernetes/Container Engineアプリもこれらを使用して他のサービスを認証することができます。

サービスアカウントによって作成された資格情報をコンテナクラスタにインポートして、Kubernetesで実行するアプリケーションがそれらを使用できるようにすることができます。

Kubernetes Secretリソースタイプを使用すると、資格情報/キーをコンテナクラスター内に格納して、クラスターにデプロイされたアプリケーションで直接使用することができます。

Hiranyaがコメントで指摘したように、GOOGLE_APPLICATION_CREDENTIALS環境変数はキーをポイントする必要があります。

これを行う方法の詳細については、pageを参照してください。特に手順3,4,5を参照してください。

関連する問題