Próbuję zbudować 2 mikrovices (w bagażniku Java Spring), aby komunikować się ze sobą za pomocą GCP Pub / Sub.

Po pierwsze, przetestowałem programy (w Eclipse) pracując jako epXicted w moim lokalnym laptopie (http: // localhost), tj. Jedna mikrovice Opublikowano wiadomość, a drugi odebrał go pomyślnie przy użyciu tematu / subskrybenta utworzonego w GCP (jak również poświadczający klucz prywatny: MyPubsub.json).

Następnie wdrożyłem te same programy do uruchomienia GCP i podążałem za błędami:

- 2020-03-21 15:53:16.831 WARN 1 --- [bsub-publisher2] o.s.c.g.p.c.p.PubSubPublisherTemplate : Publishing to json-payload-sample-topic topic failed
- com.google.api.gax.rpc.PermissionDeniedException: io.grpc.StatusRuntimeException: PERMISSION_DENIED: Request had insufficient authentication scopes. at com.google.api.gax.rpc.ApiExceptionFactory

Co zrobiłem, aby wdrożyć programy (w kontenerze), aby uruchomić na silniku GCP / Kubernetes:

  1. Zaloguj się skorupę w chmurze po przełączeniu do mojego projektu na testowanie Pubsub
  2. Git Clone Moje programy, które testowane w Eclipse
  3. Przenieś plik mypubsub.json do Under / Home / My_user_id
  4. Eksport Google_application_Credentials = "/ Home / My_user_id / MP6Key.json"
  5. Uruchom "MVN Clean Package", aby zbudować programy Miscrovice
  6. Uruchom "Docker Build", aby utworzyć pliki obrazów
  7. Uruchom "Docker Push", aby nacisnąć pliki obrazów do GCCR.IO Repo
  8. Uruchom "Kubectl Utwórz", aby utworzyć wdrożenia i narażać usługi

Po wystąpieniu 2 mikrovices wdrożonych i odsłoniętych, kiedy próbowałem uzyskać do nich dostęp do nich w przeglądarce, ten, który publikował komunikat pracował dobrze, aby pobrać dane z bazy danych i przetworzyć dane, a następnie nie powiodło się z powyższymi błędami podczas próby uzyskania dostępu do interfejsu API Pubsuba GCP opublikuj wiadomość

Czy ktoś może przedstawić wskazówkę, co chcesz sprawdzić, aby rozwiązać problem?

0
Roy Hu 21 marzec 2020, 20:12

1 odpowiedź

Najlepsza odpowiedź

Problem został rozwiązany, postępując zgodnie z przewodnikiem:

https://cloud.google.com/kubernetes-Engine/docs/tutorials/authentication-to-Coud-platform.

W skrócie rozwiązaniem jest dodanie kolejnych linii w wdrażaniu.Yaml, aby załadować klucz pośrednictwa:

        - name: google-cloud-key
          secret:
            secretName: pubsub-key
        containers:
        - name: my_container
          image: gcr.io/my_image_file
          volumeMounts:
          - name: google-cloud-key
            mountPath: /var/secrets/google
          env:
          - name: GOOGLE_APPLICATION_CREDENTIALS
            value: /var/secrets/google/key.json
2
Roy Hu 22 marzec 2020, 17:38