kubernetes — переменные окружения не работают с целыми числами

#docker #kubernetes #environment-variables #yaml #appsettings

#docker #kubernetes #переменные среды #yaml #настройки приложений

Вопрос:

У меня есть одно веб-приложение .netcore, запущенное в «docker». Поэтому начал кластеризовать его с помощью kubernetes. Имеет четыре конфигурации в appsettings.json, которые будут преобразованы переменными среды (все между «$ {}»):

    {
  "ConnectionSettings": [
    {
      "id": "${connectionSettings.connectionString.idMongoDb}",
      "databaseName": "${connectionSettings.connectionString.databaseName}",
      "connectionString": "${connectionSettings.connectionString.mongoDB}"
    }
  ],
    {
      "Key": "Token.Issuer",
      "Value": "${configuration.token.issuer}",
      "Description": "",
      "ModifiedDate": "2018-05-05 00:00:00.0000000",
      "ModifiedBy": "system",
      "AllowedProfiles": 1
    }
}
  

Это часть моего .yaml файла:

 apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp-dev-api-dep
  labels:
    app: myapp-dev-api-dep
    tier: app
    version: v1
spec:
  selector:
    matchLabels:
      app: myapp-dev-api
      tier: app
      version: v1
  replicas: 1
  template:
    metadata:
      labels:
        app: myapp-dev-api
        tier: app
        version: v1
    spec:
      containers:
        - name: myapp-dev-api
          image: 'myappapi_tstkube:latest'
          env:
            - name: connectionSettings.connectionString.mongoDB
              value: mongodb://192.168.20.99:27017
            - name: configuration.token.issuer
              value: '86400'
          ports:
            - name: http 
              containerPort: 80
              protocol: TCP
          livenessProbe:
            initialDelaySeconds: 30
            periodSeconds: 3600
            httpGet:
              path: /swagger/index.html
              port: 80
          resources:
            requests:
              cpu: 25m
              memory: 200Mi
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
          imagePullPolicy: IfNotPresent
      restartPolicy: Always
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 25%
      maxSurge: 25% 
  

Загляните в мои конфигурации:

введите описание изображения здесь

Переменная «connectionSettings.ConnectionString.MongoDB» работает. Но переменная «configuration.token.issuer» не может быть заменен при настройке приложения.

Провел несколько тестов. Я обнаружил проблему только с переменными чисел.

У кого-нибудь есть идея или у вас возникла проблема?

vlw

Комментарии:

1. Вы пробовали устанавливать переменную окружения configuration.token.issuer с использованием двойных кавычек в виде строки типа "86400" ?

2. ДА. Одна и две кавычки(«86400», ‘86400’).

Ответ №1:

Проблема заключалась в идентификационном коде yamls. У вас может возникнуть много проблем с пространством ошибок в файле yaml.

https://github.com/helm/helm/blob/master/docs/chart_template_guide/yaml_techniques.md

О числе. Оба ответа верны. Вы можете использовать одинарные кавычки ‘86400’ и ACII » x38 x36 x34 x30 x30″.

Спасибо всем

Ответ №2:

Вы должны использовать ASCII-коды для чисел. Итак, ваша спецификация развертывания будет выглядеть

 env:
  - name: connectionSettings.connectionString.mongoDB
    value: "mongodb://192.168.20.99:27017"
  - name: configuration.token.issuer
    value: "x38x36x34x30x30"
  

И проверьте переменные env:

 sukhoversha@sukhoversha:~/GCP$ kubectl  exec myapp-dev-api-dep-7948866b56-6cnmk  env | grep con
connectionSettings.connectionString.mongoDB=mongodb://192.168.20.99:27017
configuration.token.issuer=86400