c# - 我们可以读取 Azure Kubernetes Pod 上的环境变量吗?

标签 c# kubernetes .net-core azure-devops azure-aks

我们已经在 Azure Kubernetes 上部署了一些服务(例如 Web API)。当我们登录到 Azure Kubernetes Pod 并在终端上执行 printenv 时,它会在屏幕上显示环境变量,包括我们部署的服务

<SERVICENAME>_PORT=
<SERVICENAME>_HOST=`
.....

我们如何在 .Net 代码中读取上述变量值?我尝试了以下代码,但没有成功

 var builder = new ConfigurationBuilder();
            builder.AddJsonFile("appsettings_prod.json", true, true).AddEnvironmentVariables();
            Configuration = builder.Build();

var port =  Configuration["<SERVICENAME>_PORT"] 

最佳答案

要从 k8s pod 访问环境,您需要通过 pod 的 spec.containers[].env[] 提供这些环境。

apiVersion: v1
kind: Pod
metadata:
  name: demo-pod
spec:
  containers:
  - name: mycontainer
    image: demo/new-image
    env:
      # define env from k8s secret (used specially for credentials)
      - name: SECRET_USERNAME
        valueFrom:
          secretKeyRef:
            name: mysecret
            key: username
      # define env from configmap
      - name: SPECIAL_CREDENTIALS
          valueFrom:
            configMapKeyRef: 
              name: configmap-name
              key: config.json
      # define value directly 
      - name: DEMO_GREETING
        value: "Hello from the environment"

关于c# - 我们可以读取 Azure Kubernetes Pod 上的环境变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58090673/

相关文章:

kubernetes - 在数据库中存储Kubernetes CronJob日志

c# - Microsoft.EntityFrameworkCore.Tools - Azure Functions 与 .NET 5(独立)使用 HostBuilder 创 build 计时 DbContext

c# - 连接 ReadOnlySpan<char>

c# - DoWork 事件中的 LoadCompleted 事件

c# - VB.Net中的主要功能在哪里

c# - 与缓存交互时的线程安全

c# - .net core 控制台应用程序强类型配置

kubernetes - Kubernetes 中 CRD 的动态键/值输入属性

Kubernetes 入口 nginx 重定向域,也适用于所有重定向域的子域

c# - 如何在 C# 中将 IFormFile 转换为 byte[]?