You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#项目本地与Kubernetes环境统一访问密钥方案咨询

解决方案:C#项目本地与Kubernetes环境统一读取密钥

首先修正你的Kubernetes配置错误:你当前环境变量引用中填写的key: MAIL_HOST是错误的,需改为OPENAI_KEY,才能正确从app-secrets Secret中读取对应值并注入为环境变量:

valueFrom:
  secretKeyRef:
    name: app-secrets
    key: OPENAI_KEY

以下是两种无需修改代码即可实现跨环境统一读取密钥的方案:

方案一:统一使用分层配置键(OpenAi:Key)

  • 本地环境:保持现有secrets.json不变,保留OpenAi:Key结构。
  • Kubernetes环境:二选一即可:
    1. 修改Secret的data字段,将键名改为OpenAi__Key(双下划线替代冒号,.NET配置系统会自动识别为分层键OpenAi:Key):
      apiVersion: v1
      kind: Secret
      metadata:
        name: app-secrets
        namespace: <namespace>
      type: Opaque
      data:
        OpenAi__Key: <Key Base64 encoded>
      
    2. 在Pod的环境变量配置中,将Secret的OPENAI_KEY映射为环境变量OpenAi__Key:
      env:
        - name: OpenAi__Key
          valueFrom:
            secretKeyRef:
              name: app-secrets
              key: OPENAI_KEY
      
  • 代码读取:统一使用builder.Configuration["OpenAi:Key"],本地和Kubernetes环境均可生效。

方案二:统一使用环境变量键(OPENAI_KEY)

  • 本地环境:二选一即可:
    1. 修改secrets.json,将键改为OPENAI_KEY:
      {
        "OPENAI_KEY": "<Key>"
      }
      
    2. 不修改secrets.json,在launchSettings.json的环境变量配置中添加OPENAI_KEY:
      "profiles": {
        "YourApp": {
          "commandName": "Project",
          "environmentVariables": {
            "ASPNETCORE_ENVIRONMENT": "Development",
            "OPENAI_KEY": "<你的本地密钥>"
          }
        }
      }
      
  • Kubernetes环境:确保Pod环境变量引用的key为OPENAI_KEY(已修正的配置)。
  • 代码读取:统一使用builder.Configuration["OPENAI_KEY"],两边环境均可正常获取密钥。

补充说明

关于Environment.GetEnvironmentVariable("OPENAI_KEY")不生效的问题:

  • 本地环境:未设置系统/launchSettings环境变量,自然无法读取;
  • Kubernetes环境:之前的配置错误导致环境变量未正确注入,修正后该方法也能生效,但推荐使用builder.Configuration,它整合了JSON、环境变量、Secret等所有配置源,更符合.NET配置规范。

内容的提问来源于stack exchange,提问作者Jonas Pamminger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 20:38:18