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

Use an environment variable as integer in yaml file

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

这样的数据
              initializationCount=0
              port=980

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

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

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

读取此 YAML 文件的 API 抛出数字格式异常,因为环境变量始终是字符串。我无法控制读取我的 yaml 文件的 API。

我试过了

            initializationCount=!!int ${iCount} 

但它不起作用。

与其将 configmap 值作为环境变量引入,不如尝试在运行时将 configmap 安装为卷。

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

当 pod 初始化时,这些数据将被挂载到容器的文件系统。这样您的应用程序将以与以前相同的方式读取配置 YAML,但值将在配置映射中外部化。

像这样:

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