【问题标题】:kubernetes - environment variables not works with integerskubernetes - 环境变量不适用于整数
【发布时间】:2019-08-11 19:11:20
【问题描述】:

我有一个在“docker”中运行的 .netcore Web 应用程序。于是开始用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”不能在 appsetting 上替换。

做了一些测试。我只发现数字变量的问题。

有什么想法或者你有问题吗?

vlw

【问题讨论】:

  • 您是否尝试过设置环境变量configuration.token.issuer 使用双引号作为字符串,如"86400"
  • 是的。一个和两个引号(“86400”,“86400”)。

标签: docker kubernetes environment-variables yaml appsettings


【解决方案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: "\x38\x36\x34\x30\x30"
    

    并检查环境变量:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-02-02
      • 2014-12-18
      • 2021-08-03
      • 1970-01-01
      • 2018-10-15
      • 2017-09-16
      • 2021-03-11
      • 1970-01-01
      相关资源
      最近更新 更多