我有一个使用Helm和Kubernetes部署的Python应用程序。我想从main.py中取出硬编码的变量,并使它们在Helm中可配置。问题是如果我把它们从main.py中取出,那么我就失去了用python3 main.py运行代码的能力。然后我就失去了快速测试和迭代的能力,因为我需要在3-4个地方为每个参数维护两个独立的系统。
HOST = "http://host"
PORT = 1234
if __name__ == '__main__':
connect_to_server(HOST, PORT)
host: "http://host"
port: "1234"
使用字符串作为环境变量整数作为每个Helm文档。
env:
- name: HOST
value: {{ required "host is required!" .Values.host | quote }}
- name: PORT
value: {{ required "port is required!" .Values.port | quote }}
if __name__ == '__main__':
try:
HOST = os.environ['HOST']
PORT = int(os.environ['PORT'])
connect_to_server(HOST, PORT)
except IndexError as e:
print("Unable to run app! No env vars defined outside Helm!")
raise e
如果我保持上面的设置不变,那么当我执行python main.py时,它将不会运行。如果我想使用普通的python3 main.py来运行它,那么我需要建立一个完全独立和并行的系统来本地管理我的环境变量。这是不太理想的,感觉就像一个超级痛苦的管理。我希望能够继续在本地快速测试,而不需要在整个应用程序中为环境变量添加大量try/catch异常。我知道我可以通过各种方式导入env vars,但我不想用相同的信息来维护两个不同的系统。如何在本地的Python应用程序中保持敏捷的同时,在Helm Charts中添加env变量?是否有办法导入我的本地值。并将它们设置为与cronjob中相同名称的环境变量。yaml(即。、主机)?或者还有其他我不知道的解决方案吗? 问题来源StackOverflow 地址:/questions/59380375/how-to-get-values-from-helm-locally-without-separate-environment-variable-system
您可以采取的一个选项是继续允许环境变量,但是在没有设置环境变量的情况下提供一个默认值。您可以使用get()方法轻松做到这一点:
if __name__ == '__main__':
try:
HOST = os.environ.get('HOST', 'http://host')
PORT = int(os.environ.get('PORT', '1234'))
connect_to_server(HOST, PORT)
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。