开发者社区> 问答> 正文

在没有独立的环境变量系统的情况下,如何从本地Helm中获取值?

我有一个使用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

展开
收起
kun坤 2019-12-28 14:22:26 507 0
1 条回答
写回答
取消 提交回答
  • 您可以采取的一个选项是继续允许环境变量,但是在没有设置环境变量的情况下提供一个默认值。您可以使用get()方法轻松做到这一点:

    if __name__ == '__main__':
        try:
        HOST = os.environ.get('HOST', 'http://host')
        PORT = int(os.environ.get('PORT', '1234'))
        connect_to_server(HOST, PORT)
    
    2019-12-28 14:22:32
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载