I have one .netcore Web App running in "docker". So started to cluster it with kubernetes. Has four configs on the appsettings.json that will be converted by environment variables(all between "${}"):
{
"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
}
}
It's a bit of my .yaml file:
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%
Take a look in my configs:
The variable "connectionSettings.connectionString.mongoDB" works. But the variable "configuration.token.issuer" can't substituted on the appsetting.
Made some tests. I found the problem only with variables of numbers.
Has somebody an idea or have you had the problem?
vlw
You have to use ASCII codes for numbers. So your deployment spec will look like
env:
- name: connectionSettings.connectionString.mongoDB
value: "mongodb://192.168.20.99:27017"
- name: configuration.token.issuer
value: "\x38\x36\x34\x30\x30"
And check env variables:
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
The problem was in the yamls identification code. You may have many problems with the error space in the yaml file.
https://github.com/helm/helm/blob/master/docs/chart_template_guide/yaml_techniques.md
About the number. Both answers are right. You can use single quotation marks '86400' and ACII "\ x38 \ x36 \ x34 \ x30 \ x30".
Thank you everybody