Как определить, выполняется ли код в эмуляторе или в GKE при работе с хранилищем данных GCP - PullRequest
0 голосов
/ 29 мая 2018

Я не уверен, что мне не хватает, после выполнения инструкций, приведенных в https://cloud.google.com/datastore/docs/tools/datastore-emulator

Я не смог подключиться к локальному эмулятору, если я не создал Datastore явно с помощью DataStoreClient.

DatastoreDb db = DatastoreDb.Create(projectId, string.Empty, new DatastoreClientImpl(
                new Datastore.DatastoreClient(
                    new Channel("localhost", 8081, ChannelCredentials.Insecure)), new DatastoreSettings()));

вместо просто DatastoreDb.Create(projectId);

Если мы работаем в GKE для производства, нам нужно подключиться к реальному хранилищу данных, а не к эмулятору, как мы различаем две версии с одинаковой кодовой базой.

Есть ли способ проверить, выполняет ли код GKE, или это нужно сделать с помощью переменной окружения для достижения наилучших результатов.

1 Ответ

0 голосов
/ 30 мая 2018

Вы можете использовать класс Platform в пространстве имен Google.Api.Gax (в пакете Google.Api.Gax):

Platform platform = Platform.Instance();
switch (platform.Type)
{
    case PlatformType.Gae:
        // Code for AppEngine
        break;
    case PlatformType.Gce:
        // Code for Compute Engine
        break;        
    case PlatformType.Gke:
        // Code for Google Kubernetes Engine
        break;
    default:
        // Code for other contexts
        break;
}
...