Я пытаюсь использовать менеджер секретов, а не переменные среды для паролей БД и так далее. Но меня беспокоит производительность во время инициализации контейнера, если каждый раз для извлечения секретов требуется вызов API.
Советы по облаку GCP говорит:
Поскольку экземпляры контейнера масштабируются по мере необходимости, типичным методом является полная инициализация среды выполнения. Этот вид инициализации называется «холодный старт». Если клиентский запрос запускает холодный запуск, запуск экземпляра контейнера приводит к дополнительной задержке.
...
Оптимизация скорости запуска службы сводит к минимуму задержку, которая задерживает экземпляр контейнера от обслуживания запросов.
и
В Cloud Run нельзя предполагать, что состояние службы сохраняется между запросами. Однако Cloud Run повторно использует отдельные экземпляры контейнеров для обслуживания текущего трафика c, поэтому вы можете объявить переменную в глобальной области видимости, чтобы ее значение можно было повторно использовать в последующих вызовах. Получит ли какой-либо отдельный запрос выгоду от такого повторного использования, неизвестно заранее.
Трудно сказать из следующего образца кода для менеджера секретов, хранится ли что-нибудь в глобальной переменной для производительности. Я попытался и не смог найти исходный код SecretManagerServiceClient на GitHub.
public static void AccessSecretVersion(string projectId, string secretId, string secretVersion)
{
SecretManagerServiceClient client = SecretManagerServiceClient.Create();
// Create the request.
var request = new AccessSecretVersionRequest
{
SecretVersionName = new SecretVersionName(projectId, secretId, secretVersion),
};
// Access the secret and print the result.
//
// WARNING: Do not print secrets in production environments. This
// snippet is for demonstration purposes only.
var version = client.AccessSecretVersion(request);
string payload = version.Payload.Data.ToStringUtf8();
Console.WriteLine($"Payload: {payload}");
}
Кто-нибудь знает, сохранятся ли секреты во всех экземплярах Cloud Run при их остановке и перезапуске?