Kubernetes 在yaml文件中将环境变量用作整数
我在一个容器中有一个应用程序,它读取一个YAML文件,其中包含如下数据Kubernetes 在yaml文件中将环境变量用作整数,kubernetes,configmap,Kubernetes,Configmap,我在一个容器中有一个应用程序,它读取一个YAML文件,其中包含如下数据 initializationCount=0 port=980 现在,我想删除应用程序中那些硬编码的值,并将它们从容器中取出。因此,我创建了一个包含所有配置值的configMap。在部署pod时,我使用配置映射键作为环境变量 我的问题是,如果我想在yaml文件中使用这些环境变量,比如 initializationCount=${iCount}
initializationCount=0
port=980
现在,我想删除应用程序中那些硬编码的值,并将它们从容器中取出。因此,我创建了一个包含所有配置值的configMap。在部署pod时,我使用配置映射键作为环境变量
我的问题是,如果我想在yaml文件中使用这些环境变量,比如
initializationCount=${iCount}
port=${port}
读取此YAML文件的API引发数字格式异常,因为env变量始终是字符串。我无法控制读取yaml文件的API
我试过了
initializationCount=!!int ${iCount}
但它不起作用。与其将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
Kubernetes文档我认为ConfigMap不能处理整数。来自k8文档-“ConfigMap类似于机密,但提供了一种处理不包含敏感信息的字符串的方法。”。但是,您可以使用helm模板化yml文件,并使用值文件将
初始化计数
和端口
值替换为整数。已发布答案。这更接近您的用例。我也建议用helm来做。你能展示一下你正在使用的YAML文件吗?那key=value
语法不是YAML。谢谢你的回答。“值将在configmap中外部化”的确切含义是什么。我知道我们在创建容器时正在将文件装入容器。是它还是别的什么?它只是意味着运行环境的配置不在源代码中。运行时配置在代码库外部。
apiVersion: v1
kind: ConfigMap
metadata:
name: app-config
data:
config.yaml: |
initializationCount=0
port=980