Можем ли мы прочитать переменную среды в Azure Kubernetes Pod? - PullRequest
3 голосов
/ 25 сентября 2019

Мы развернули некоторые службы (например, веб-API) в Azure Kubernetes.Когда мы вошли в Azure Kubernetes Pods и выполнили 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"] 

Ответы [ 3 ]

2 голосов
/ 25 сентября 2019

Чтобы получить доступ к env из модулей k8s, вам необходимо предоставить эти env через 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"
модуля.
1 голос
/ 25 сентября 2019

Если вы хотите передать переменную среды в код, вы можете использовать значение config map kubernetes.он установит значение в окружении операционной системы и в коде, где вы можете получить его оттуда.

для защищенных данных вы можете использовать secret.

0 голосов
/ 25 сентября 2019

Вы также можете использовать downward-api для предоставления информации о контейнерах контейнерам.

...