在yaml文件中将环境变量用作整数

时间:2019-10-31 20:08:32

标签: kubernetes configmap

我在容器中有一个应用程序,该应用程序读取包含

之类的数据的YAML文件
              initializationCount=0
              port=980

现在,我想删除应用程序内的那些硬编码值并将其从容器中取出。因此,我使用所有配置值创建了一个configMap。部署Pod时,我将配置映射键用作环境变量。

我的问题是,如果要在yaml文件中使用这些环境变量,例如

            initializationCount=${iCount}
            port=${port}

读取此YAML文件的API会引发数字格式异常,因为env变量始终是字符串。我无法控制读取我的Yaml文件的API。

我尝试过

            initializationCount=!!int ${iCount} 

但是它不起作用。

1 个答案:

答案 0 :(得分:3)

不要在运行时将configmap值挂载为卷,而不是将configmap值作为环境变量引入。

configmap应该具有一个密钥,即您的YAML文件的名称。该键的值应该是文件的内容。

当pod初始化时,该数据将被安装到容器的文件系统中。这样,您的应用将以相同的方式读取配置YAML,但值将在configmap中被外部化。

类似这样的东西:

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
    - name: my-app
      image: my-app:latest
      volumeMounts:
      - name: config-volume
        mountPath: /etc/config
  volumes:
    - name: config-volume
      configMap:
        name: app-config
apiVersion: v1
kind: ConfigMap
metadata:
  name: app-config
data:
  config.yaml: |
    initializationCount=0
    port=980

Kubernetes文档here