web-dev-qa-db-ja.com

gcloud docker Pushの結果、「denied:トークンの交換がプロジェクト 'gcp-project-id-example'で失敗しました。」

gcloud auth logingcloud auth configure-dockergcloud components install docker-credential-gcrgcloud config set project gcp-project-id-exampleを実行しました。

以前にこのリポジトリにプッシュしたことがあるので、現在機能していないことに少し驚いていますか?私はgcloud auth loginで認証されており、ユーザーには完全な編集者権限があります。

Sudo gcloud docker -- Push eu.gcr.io/gcp-project-id-example/pipelinebuild:latest
WARNING: `gcloud docker` will not be supported for Docker client versions above 18.03.

As an alternative, use `gcloud auth configure-docker` to configure `docker` to
use `gcloud` as a credential helper, then use `docker` as you would for non-GCR
registries, e.g. `docker pull gcr.io/project-id/my-image`. Add
`--verbosity=error` to silence this warning: `gcloud docker
--verbosity=error -- pull gcr.io/project-id/my-image`.

See: https://cloud.google.com/container-registry/docs/support/deprecation-notices#gcloud-docker

The Push refers to repository [eu.gcr.io/gcp-project-id-example/pipelinebuild]
09a1efc2708d: Preparing
484c62332bc0: Preparing
737446294222: Preparing
5330921097a0: Preparing
898d09fcad4e: Preparing
8ebe2c7c93e3: Waiting
2d360789868b: Waiting
43c7850e5ceb: Waiting
212ad79ba733: Waiting
b12c0a65bf50: Waiting
2ec89235b54b: Waiting
770a49082d40: Waiting
2a4ee56ebd9d: Waiting
f38582ca1d15: Waiting
3cc68fcb53a4: Waiting
577d10d964a3: Waiting
96e5efb05969: Waiting
aae94198c5bb: Waiting
9e5b0f110abc: Waiting
bddf843523ce: Waiting
6ab9447934c9: Waiting
9cc1209e0dce: Waiting
072f13fb321e: Waiting
0926f7bf84b3: Waiting
cdb414de0edf: Waiting
eceffb9b1d52: Waiting
6219baf3e782: Waiting
c9189dccc6a7: Waiting
93715b5af77e: Waiting
032237575276: Waiting
5f70bf18a086: Waiting
0d81735d8272: Waiting
982549bd6b32: Waiting
8698b31c92d5: Waiting
denied: Token exchange failed for project 'gcp-project-id-example'. Caller does not have permission 'storage.buckets.get'. To configure permissions, follow instructions at: https://cloud.google.com/container-registry/docs/access-control

私も試しました:

docker login -u _json_key --password-stdin https://eu.gcr.io < aysc.json

WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

ただし、gcloud docker -- Push ...またはdocker Push ...だけでも同じ動作が得られます。


まったく新しいGCPプロジェクトをゼロから作成しましたが、まだ同じ動作をしています。私のシステムで何かを再構成する必要があると思います。

このエラーが発生するのはなぜですか?

13

gcloud auth configure-dockerを通常のユーザーとして実行すると、構成ファイルが~/.docker/config.jsonに保存されます。このファイルは、rootユーザーまたはSudoを介して実行する場合、後で使用されません。 ..

簡単な回避策はSudo -u $USER docker Push gcr.io/example/example:latestです

1

Keyfile.jsonを作成してダウンロードした後、GOOGLE_APPLICATION_CREDENTIALSをファイルの場所にエクスポートします

export GOOGLE_APPLICATION_CREDENTIALS=/var/lib/jenkins/gcp/keyfile.json

これは私のために働いた私がしたことです:

docker login -u _json_key -p "`cat ${GOOGLE_APPLICATION_CREDENTIALS}`" https://gcr.io

それが役に立てば幸い

4
Maoz Zadok

Sudo(私のマシンのdockerにアクセスする必要がある)の使用にいくつかの問題があるようです。

ルートから直接実行すると問題なく動作しました...おそらくバグです。

同じ名前の以前のサービスアカウントのキャッシュが原因であると思います(こちらをご覧ください https://github.com/kubernetes/kubernetes/issues/34395 )。

1

問題はSudoにあるのではないかと思います。 Sudoを使用しなくても、gcr.io/some-registry/some-imageに「docker Push」を実行できました。その後、突然、同じ「docker Push」コマンドを実行できなくなり、「denied:トークン交換がmy-gcp-projectで失敗しました。

1
Gilbert L

このコマンドを実行して、トークンを再度アクティブにします-

gcloud auth print-access-token | docker login -u oauth2accesstoken --password-stdin https://gcr.io

礼儀

0
Gautam Khurana