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

Kubernetes 在yaml文件中将环境变量用作整数,kubernetes,configmap,Kubernetes,Configmap,我在一个容器中有一个应用程序,它读取一个YAML文件,其中包含如下数据 initializationCount=0 port=980 现在,我想删除应用程序中那些硬编码的值,并将它们从容器中取出。因此,我创建了一个包含所有配置值的configMap。在部署pod时,我使用配置映射键作为环境变量 我的问题是,如果我想在yaml文件中使用这些环境变量,比如 initializationCount=${iCount}

我在一个容器中有一个应用程序,它读取一个YAML文件,其中包含如下数据

              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