我有一个ASP Net Core项目,我正在kubernetes集群中的linux容器内部署它。我的机密安装在容器的/ secrets文件夹中,我发现https://github.com/aspnet/Configuration/tree/master/src/Config.KeyPerFile并尝试使用builder.AddKeyPerFile("/secrets", false);
来加载机密。但这行不通。 configuration [“ File1”]返回空,其中File1是“ / secrets”文件夹中的文件,其中包含一个秘密。
当我在服务代码中执行以下操作时,我就能读取机密。
List<KeyValuePair<string, string>> secrets =
new List<KeyValuePair<string, string>>();
foreach (var secretFile in Directory.GetFiles("/secrets", "*.*", System.IO.SearchOption.AllDirectories))
{
secrets.Add(
new KeyValuePair<string, string>(
Path.GetFileName(secretFile), File.ReadAllText(secretFile)));
}
我正在尝试找出如何使用builder.AddKeyPerFile扩展方法。
答案 0 :(得分:2)
我正在使用.Net Core 3.1,它可以工作。
new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile("appsettings.Development.json", optional: true)
.AddKeyPerFile("/secret/", optional: true)
.Build();
所以我可以通过以下方式访问存储的机密:
var file1 = configuration["File1"];
我还没有尝试使用.Net Core的旧版本,但是肯定可以在3.1版本上使用。我碰到的唯一事情是路径必须是绝对的。