0

ノードjs &を使用していますが、私のバケットにファイルをアップロードしたいと考えています。 service_accountは、私はすでに&それを設定し(自分のコンピュータ上で)ローカルでテストしてきたように私のGoogleクラウドストレージAPIへのアクセス権を持っているkubernetes内でGoogleのクラウドストレージを使用するにはどうすればよいですか?

NAME       TYPE         DATA  AGE 
cloudsql-oauth-credentials Opaque        1   5d 
default-token-dv9kj   kubernetes.io/service-account-token 3   5d 

:私は秘密のセットアップをしました。私はサービスアカウント jsonファイルの場所をどのように参照できるのかよく分かりません。ここで

は私のボリュームがマウントされ:私は私の内部でこれを使用したい場合は今

var gcs = require('@google-cloud/storage')({ 
    projectId: 'projectID-38838', 
    keyFilename: process.env.NODE_ENV == 'production' 
     ? JSON.parse(process.env.CREDENTIALS_JSON) // Parsing js doesn't work 
     : '/Users/james/auth/projectID-38838.json' // This works locally 
}); 
var bucket = gcs.bucket('bucket-name'); 

:ここ

"volumes": [{ 
    "name": "cloudsql-oauth-credentials", 
    "secret": { 
     "secretName": "cloudsql-oauth-credentials" 
    } 
} 

は、私はGoogleのクラウドストレージ変数を設定していたコードですkubernetesのdockerコンテナ、jsonファイルの場所を参照する必要があります...しかし、私はそれがどこにあるのか分かりませんか?

資格情報ファイルを環境変数として設定しようとしましたが、のkeyFilenameオブジェクトにjsオブジェクトを解析できません。私はファイルの場所を解析する必要があります。私はそうのようなENV変数を設定します。

{   
"name": "CREDENTIALS_JSON", 
    "valueFrom": { 
     "secretKeyRef": { 
      "name": "cloudsql-oauth-credentials", 
      "key": "credentials.json" 
     } 
    } 
}, 

は、どのように私は私のkubernetesポッド内service_accountのJSONファイルの場所を参照することができます!

答えて

4

セクション の秘密をポッドからのファイルとして使用

シークレットボリュームをマウントするときは、基本的に2つのことを指定する必要があります。あなたが持っているビット+いくつかの追加情報。 鍵に冗長性があるかもしれませんが、これは私がやることです。

秘密を作成し、キーとそれを作成します。次に
kubectl create secret generic cloudsql-oauth-credentials --from-file=creds=path/to/json

"volumes": [{ 
    "name": "cloudsql-oauth-credentials", 
    "secret": { 
     "secretName": "cloudsql-oauth-credentials" 
     "items": [{ 
      "key": "creds", 
      "path": "cloudsql-oauth-credentials.json" 
     }] 

    } 
} 

しかし、それはコンテナdefinitonに進み、その後も、ポッド、展開中(レプリケーションコントローラーを指定 - 使用するもの):

"spec": { 
    "containers": [{ 
     "name": "mypod", 
     "image": "myimage", 
     "volumeMounts": [{ 
      "name": "cloudsql-oauth-credentials", 
      "mountPath": "/etc/credentials", 
      "readOnly": true 
     }] 
}], 

ファイルがマップされます/etc/credentials/cloudsql-oauth-credentials.jsonになります。

関連する問題