我在容器中有一个应用程序,该应用程序读取包含
之类的数据的YAML文件 initializationCount=0
port=980
现在,我想删除应用程序内的那些硬编码值并将其从容器中取出。因此,我使用所有配置值创建了一个configMap。部署Pod时,我将配置映射键用作环境变量。
我的问题是,如果要在yaml文件中使用这些环境变量,例如
initializationCount=${iCount}
port=${port}
读取此YAML文件的API会引发数字格式异常,因为env变量始终是字符串。我无法控制读取我的Yaml文件的API。
我尝试过
initializationCount=!!int ${iCount}
但是它不起作用。
答案 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