Я надеюсь, что кто-то может ответить или поделиться некоторыми источниками света,
В настоящее время я пытаюсь получить доступ к данным пожарного хранилища из GKE, однако, поскольку у пожарного хранилища есть только несколько регионов, поэтому в настоящее время он находится в другом регионе, чем наш кластер. .
- GKE: asia-east1
- Firestore: aisa-east2
Вот пример кода, который я использую:
import (
"cloud.google.com/go/firestore"
"context"
"golang.org/x/oauth2/google"
"google.golang.org/api/option"
)
func main() {
ctx := context.Background()
cred, err := google.FindDefaultCredentials(ctx, "https://www.googleapis.com/auth/datastore")
if err != nil {
log.Error(err, "failed to get cred")
}
client, err = firestore.NewClient(ctx, PROJECT_ID, option.WithCredentials(cred))
if err != nil {
log.Error(err, "Failed to connect firestore: %s")
return nil, err
}
// I can retrieve data for docs with local environment, but in GKE it's always empty
docs := client.Collection(COLLECT_NAME).Doc(id).Get(ctx)
...
}
Я могу получить данные для docs
в локальной среде, но в GKE он всегда пуст. Я подозреваю, что это связано с регионом, так как я вижу сообщение об ошибке, если есть какие-либо проблемы с разрешениями. Есть ли способ принудительно установить регион для клиента? Я не смог найти способ установить регион, или есть какие-то обходные пути?
Обратите внимание, что разрешения kubernetes уже включены для Cloud Datastore
, а также для пула узлов. Я также попытался установить GOOGLE_APPLICATION_CREDENTIALS
и установить его для контейнера, но все равно не повезло.
Любые советы / подсказки очень приветствуются.
Спасибо !!