Отправка настроек приложения .Net Core в модули kubernetes в качестве переменных среды - PullRequest
0 голосов
/ 16 октября 2018

Я размещаю некоторые вещи как AppService в Azure и использую переменные среды, чтобы различать настройки для разных слотов (test, dev и т. Д.).

Если файл AppSettings.json содержит структуру, такую ​​как:

{
   "ConnectionString": {
      "MyDb": "SomeConnectionString"
   }
}

Я могу установить для переменной среды "ConnectionString: MyDb" значение "SomeConnectionString", и .Net Core поймет, что : означает дочерний уровень.

Но в Куберне я не могу использовать : как часть ключа среды.Есть ли другой способ обработки иерархии или мне нужно переключиться на плоские настройки?

1 Ответ

0 голосов
/ 16 октября 2018

Я полагаю, вы ссылаетесь на env в определении контейнера для Pod.С точки зрения YAML / JSON я не вижу проблемы с указанием : в ключе для переменной среды.Вы также можете поместить его в кавычки, и оно должно быть действительным. JSON / YAML:

# convert.yaml
apiVersion: v1
kind: Pod
metadata:
  name: envar-demo
  labels:
    purpose: demonstrate-envars
spec:
  containers:
  - name: envar-demo-container
    image: dotnetapp
    env:
    - name: ConnectionString:Mydb
      value: ConnectionString

То же самое в JSON:

$ kubectl convert -f convert.yaml -o=json
{
    "kind": "Pod",
    "apiVersion": "v1",
    "metadata": {
        "name": "envar-demo",
        "creationTimestamp": null,
        "labels": {
            "purpose": "demonstrate-envars"
        }
    },
    "spec": {
        "containers": [
            {
                "name": "envar-demo-container",
                "image": "dotnetapp",
                "env": [
                    {
                        "name": "ConnectionString:Mydb",
                        "value": "ConnectionString"
                    }
                ],
                "resources": {},
                "terminationMessagePath": "/dev/termination-log",
                "terminationMessagePolicy": "File",
                "imagePullPolicy": "Always"
            }
        ],
        "restartPolicy": "Always",
        "terminationGracePeriodSeconds": 30,
        "dnsPolicy": "ClusterFirst",
        "securityContext": {},
        "schedulerName": "default-scheduler"
    },
    "status": {}
}

Однако похоже, что это известная проблема с Windows /.NET приложения.Попытка исправить это была опробована и исключена из-за того, что это недопустимо в Bash.Но похоже, что они решили использовать __ вместо : обходного пути

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...