我们已经在 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/