我希望有人可以回答或分享一些灯光,
我目前正在尝试从GKE访问firestore数据,但是由于firestore仅具有多个区域,因此它与我们的集群位于不同的区域。
这是我正在使用的示例代码:
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
并将其安装到容器中,但还是没有运气。
非常感谢任何提示/帮助。
谢谢!
对于任何可能怀疑firestore的区域问题的人(因为一旦设置后就无法更改,并且它只有一个区域,等等),仍然可以从其他区域访问firestore数据。
我调试的步骤: