Dotnet Core 项目生产环境配置文件在K8s上的部署

一般来说生产环境的配置文件appsetting.Production.json不会放到源代码库中。传统方式下,该文件可以在项目发布后手动添加到生产环境下。在Docker环境下,镜像中不宜包含此类敏感信息,可以通过K8s的Secret和Volume或者env变量来实现.

  1. 首先修改项目的Startup.cs
    复制代码
     1 public class Startup
     2     {
     3         private IHostingEnvironment CurrentEnvironment { get; set; }
     4 
     5 
     6         public Startup(IConfiguration configuration,IHostingEnvironment env)
     7         {
     8 
     9             //Configuration = configuration;
    10 
    11             var builder = new ConfigurationBuilder()
    12                 .SetBasePath(env.ContentRootPath)
    13                 .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
    14                 .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
    15                 .AddJsonFile("secrets/appsettings.secrets.json", optional: true)
    16                 .AddEnvironmentVariables();
    17             Configuration = builder.Build();
    18 
    19             CurrentEnvironment = env;
    20 
    21         }
    22 }
    复制代码

     

  2. 运行以下命令创建secrete
    kubectl create secret generic secret-appsettings --from-file=./appsettings.secrets.json

     

  3. 编写pod.yml
    复制代码
    apiVersion: v1
    kind: Pod
    metadata:
        name: web
        labels:
            app: web
    spec:
        containers:
            - name: web
              image: xxx/project:latest
              ports:
              - containerPort: 80
              volumeMounts:
                - name: secrets
                  mountPath: /app/secrets
                  readOnly: true
              env:
                - name: "ASPNETCORE_ENVIRONMENT"
                  value: "Staging"
        imagePullSecrets:
          - name: regsecret
    
        volumes:
        - name: secrets
          secret:
            secretName: secret-appsettings
    复制代码

     

posted on   leonworld2011  阅读(690)  评论(1编辑  收藏  举报

编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示