2017-11-02 2 views
0

bis gestern konnte ich auf GCP eine Anwendung ausführen, PubSub zuhören und Daten in BigTable schreiben, aber ab heute scheint ich keine gültige Authentifizierung mehr zu haben.GCP-Dienstkontoanmeldeinformationen ignoriert?

Hier ist, wie ich vorgehen:

  1. ich auf dem ein Dienstkonto fliegen erstellen:

gcloud iam service-accounts create ${SERVICE_ACCOUNT} \ --display-name "$(whoami) dev account" --project ${PROJECT_ID}

  1. ich eine JSON Schlüsseldatei für dieses Konto:

gcloud iam service-accounts keys create \ "auth-${SERVICE_ACCOUNT}@${PROJECT_ID}.json" --iam-account=${IAM_ACCOUNT} \ --project ${PROJECT_ID}

  1. ich einen kubectl Schlüssel aus dieser JSON-Datei:

kubectl create secret generic ingester-key \ --from-file=key.json="auth-${SERVICE_ACCOUNT}@${PROJECT_ID}.json"

  1. ich dieses Konto Admin-Rollen binden :

bindings: - members: - serviceAccount:[email protected] - serviceAccount:[email protected]com role: roles/bigtable.admin - members: - serviceAccount:[email protected] role: roles/bigtable.user - members: - serviceAccount:[email protected]com role: roles/container.serviceAgent - members: - serviceAccount:[email protected] - serviceAccount:[email protected] - serviceAccount:[email protected] role: roles/editor - members: - user:[email protected] role: roles/owner - members: - serviceAccount:[email protected]com role: roles/pubsub.admin - members: - serviceAccount:[email protected] role: roles/pubsub.editor - members: - serviceAccount:[email protected] role: roles/storage.admin - members: - serviceAccount:[email protected] role: roles/storage.objectAdmin - members: - serviceAccount:[email protected] role: roles/storage.objectCreator - members: - serviceAccount:[email protected] role: roles/storage.objectViewer

  1. Ich erhalte Cluster Anmeldeinformationen für kubectl:

gcloud container clusters get-credentials ingester-cluster --zone us-east1-b --project noisy-turtle-20171031

Dann habe ich die Kubernetes Cluster (hier nicht dargestellten Kürze halber) starten und im Logfile ich die Zugangsdaten auszudrucken Ich verwende, um sicherzustellen, dass die Dienstkonto korrekt ist:

"Account: ServiceAccountCredentials{clientId\u003d117494744145141605372, clientEmail\[email protected], privateKeyId\u003dad79da59c0a75c2b358d530d63d9a8898523f3cb, transportFactoryClassName\u003dcom.google.auth.oauth2.OAuth2Utils$DefaultHttpTransportFactory, tokenServerUri\u003dhttps://accounts.google.com/o/oauth2/token, scopes\u003d[], serviceAccountUser\u003dnull}"

und finden, dass die clientSpiele mit meinem Dienstkonto. später

Ein paar Zyklen, die Anwendung abstürzt:

Exception in thread "main" java.io.IOException: Failed to listTables ... Caused by: io.grpc.StatusRuntimeException: PERMISSION_DENIED: Access denied. Missing IAM permission: bigtable.tables.list.

Irgendwelche Ideen?

Antwort

0

ich den fehlenden Teil gefunden: nach dem Schritt 2 müssen Sie das Dienstkonto Schlüssel aktivieren:

gcloud auth activate-service-account ${IAM_ACCOUNT} --key-file="auth-${SERVICE_ACCOUNT}@${PROJECT_ID}.json"