如何在linux容器中使用AddKeyPerFile加载秘密。

问题描述 投票:2回答:1

我有一个asp net core项目,我在kubernetes集群的linux容器内部署。我的秘密被挂载在容器中的秘密文件夹中,我找到了 https:/github.comaspnetConfigurationtreemastersrcConfig.KeyPerFile。 并试图使用 builder.AddKeyPerFile("/secrets", false); 配置["File1"]返回空,其中File1是 "secret "文件夹内的文件,其中包含一个秘密。配置["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 扩展方法。

c# asp.net-core configuration-files
1个回答
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版本肯定能用。我唯一遇到的问题是,路径需要是绝对的。

© www.soinside.com 2019 - 2024. All rights reserved.