2016-11-21 9 views
1

私のプロジェクトではGCP Container Engineを使用していますが、秘密で解決できるかどうかわからない問題があります。秘密についてのKubernetesとポッドでの消費方法

私のデプロイメントの1つにnode-jsアプリケーションサーバーがあります。そこには、入力としてGCPサービスアカウントキー(.jsonファイル)が必要なnpmモジュールを使用しています。 入力は、このjsonファイルが置かれているパスです。現在、私はそれを私のドッカーイメージの一部としてこのファイルを提供することによって動作させることができました。そして、コードではこのファイルへのパスを入れて、それは期待通りに動作します。問題は、サービスアカウントのキーが変更される可能性があるため(例:dev、test、prod)、私はnodejsイメージをサービスアカウントキーから切り離して再利用することができないため、良い解決策ではないと思います私の既存のイメージ(ビルドして別のレジストリにプッシュしない限り) このサービスアカウントのjsonファイルを秘密としてアップロードしてからポッド内で消費することができるかどうかを知りたかったのです。私はそれがファイルの秘密を作成することは可能ですが、私はそれがこのjsonファイルが格納されている場所へのパスを指定することが可能かどうかわからない。秘密では不可能な場合(多分秘密はファイルに保存されていないので...)、どうすれば(できれば)それを行うことができますか?

ありがとうございました!

答えて

1

にアプリをデプロイする際に、あなたのJSONは秘密のファイル作成し、あなたのポッドに消費することができ、以下の必要があります。秘密は、次のリンク(http://kubernetes.io/docs/user-guide/secrets/)を参照してください、私は次の要約ます:

まず、あなたのJSONファイルから秘密を作成します。

kubectl create secret generic nodejs-key --from-file=./key.json 

を今、あなたは秘密を作成したことを、あなたが消費することができますあなたのポッド(この例ではボリュームとして):あなたのポッドがスピンアップ時にように、ファイルが/etc/foo/key.jsonで「ファイルシステム」にドロップされます

{ 
"apiVersion": "v1", 
"kind": "Pod", 
    "metadata": { 
    "name": "nodejs" 
    }, 
    "spec": { 
    "containers": [{ 
     "name": "nodejs", 
     "image": "node", 
     "volumeMounts": [{ 
     "name": "foo", 
     "mountPath": "/etc/foo", 
     "readOnly": true 
     }] 
    }], 
    "volumes": [{ 
     "name": "foo", 
     "secret": { 
     "secretName": "nodejs-key" 
     } 
    }] 
    } 
} 

+0

こんにちは、正直言って...私は昨日自分で解決することができましたが、これはまさに私がやったことです。あなたの詳細な答えをありがとう! –

0

私はあなたがGKE/GCEにデプロイすると思いますが、キーは必要なく、うまくいくはずです。

私はGoogle Cloud Loggingでテストしましたが、他のサービスでも同じである可能性があります。

例:私はGKE/GCE

var loggingClient = logging({ 
    projectId: 'grape-spaceship-123' 
}); 
+0

こんにちは、私は知っているが、私の質問はとにかく私はそれを私自身で解決することができました。あなたの答えをありがとう! –

関連する問題