为所有ConfigMap值注入env var

时间:2019-05-04 19:10:53

标签: kubernetes

我正在寻找一种方法,可以将env变量值注入configmap 因此,通过在我的部署中将LOG_SEVERITY定义为env变量,该值将自动注入到configmap中。

kind: ConfigMap
apiVersion: v1
data:
  log.properties: |
    timeout=10
    severity=${LOG_SEVERITY}

2 个答案:

答案 0 :(得分:0)

您将必须使用某种模板工具来处理YAML。头盔很流行(尽管它不能直接处理环境变量)。对于您的情况,我强烈建议envsubst,它将很好地处理此情况。

答案 1 :(得分:0)

@coderanger一样,您可以使用envsubstHelm。我将提供更多细节和另一种方式;)

环境

在您的config_map.yml中,您将:

severity= $LOG_SEVERITY

然后只需创建新的环境变量并按以下方式执行kubectl

export LOG_SEVERITY="9"
envsubst < config_map.yml | kubectl apply -f -

头盔

创建一个templatecalling it

kind: ConfigMap
apiVersion: v1
data:
  log.properties: |
    timeout=10
    severity= {{ .Values.logSeverity }}

您需要在severity内定义mychart/values.yaml的默认值

logSeverity: 1

并通过在舵机调用中添加--set标志来设置其他值。

helm install --set logSeverity=9 ./mychart

在Helm文档The Chart Template Developer’s Guide中对此进行了很好的解释。 请记住,仅使用helm作为Kubernetes文件的包装器,这种方法更为复杂。

固定

sed -i 's/$LOG_SEVERITY/9/g' input.txt

我建议阅读How to use sed to find and replace text in files in Linux / Unix shell