如何解决掌舵,在values.yaml
我有以下变量JVM_ARGS
base-values.yaml
app:
env:
PORT: 8080
...
JVM_ARGS: >
-Dspring.profiles.active=$(SPRING_PROFILE),test
-Dspring.config.additional-location=/shared
-javaagent:/app/dd-java-agent.jar
service-x-values.yaml
app:
env:
SPRING_PROFILE: my-local-profile
值文件的评估顺序如下:
- base-values.yaml
- service-x-values.yaml
我需要根据SPRING_PROFILE对JVM_ARGS进行评估,到目前为止,我无法使其正常工作。 做这样的事情的最好方法是什么?
我是掌舵人和Kubernetes的新手,感觉自己缺少一些基本知识。
我尝试了什么: 定义JVM_ARGS并用双引号引起来,而没有双引号。
UPD: 问题是我有一些由其他开发人员构建的自定义Helm图表,而我对这些图表的工作原理一无所知。我只处理应用于图表模板的值文件。
我希望通过掌舵解决该财产
-Dspring.profiles.active=my-local-profile,vault
最后,我决定看看Spring Boot本身是如何解析属性的,并提出了以下建议:
-Dspring.profiles.active=${SPRING_PROFILE},vault
由于spring.profiles.active是常规属性,因此可以在其中使用env变量,Spring会在对我有用的运行时解析该属性。
解决方法
- 我有点困惑:您是在指环境变量(如问题标题中那样)还是在掌舵值上?
- Helm不评估值文件中的环境变量。
$(SPRING_PROFILE)
被视为文字字符串,没有被屏蔽。 - 实际上,Helm不评估值文件中的任何内容。它们是数据源,而不是模板。占位符(实际上是GO templates)仅在模板文件中求值。
- 由于第3点,您不能从另一个引用一个helm变量。
如果您确实需要从Linux环境变量中获取Spring Profiles,则可以通过在调用helm install之类的方法时设置Helm变量来实现(尽管使用--set被认为是不好的做法):
helm install --set app.env.spring_profile=$SPRING_PROFILE ...
尽管app.env.spring_profile
甚至无法在base-values.yaml
内部进行评估。您需要将其直接移到您的模板文件中,例如:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
...
template:
...
spec:
containers:
- name: my-app
...
env:
SPRING_PROFILES_ACTIVE: {{- .Values.app.env.spring_profile }},test
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。