#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