我正在寻找一种方法,可以将env变量值注入configmap 因此,通过在我的部署中将LOG_SEVERITY定义为env变量,该值将自动注入到configmap中。
kind: ConfigMap
apiVersion: v1
data:
log.properties: |
timeout=10
severity=${LOG_SEVERITY}
答案 0 :(得分:0)
您将必须使用某种模板工具来处理YAML。头盔很流行(尽管它不能直接处理环境变量)。对于您的情况,我强烈建议envsubst,它将很好地处理此情况。
答案 1 :(得分:0)
与@coderanger一样,您可以使用envsubst
和Helm
。我将提供更多细节和另一种方式;)
环境
在您的config_map.yml
中,您将:
severity= $LOG_SEVERITY
然后只需创建新的环境变量并按以下方式执行kubectl
:
export LOG_SEVERITY="9"
envsubst < config_map.yml | kubectl apply -f -
头盔
创建一个template和calling 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。