我需要重构一个K8s Python应用程序,以便它从远程Giltab项目获得一些配置,因为出于各种原因,我们希望将应用程序设置与管道/部署环境解耦。
在我的功能测试中,这是有效的:
import configparser
config = configparser.ConfigParser()
config_file = "config.ini" # local file for testing
config.read(config_file)
[' config.ini ']
然而,当我试图从远程文件(我们的要求)读取配置时,这不起作用:
import requests
import os
token = os.environ.get('GITLAB_TOKEN')
headers = {'PRIVATE_TOKEN': token}
params = { 'ref' : 'master' }
response = requests.get('https:/path/to/corp/gitlab/file/raw', params=params,
headers=headers
config = configparser.ConfigParser()
configfile = response.content.decode('utf-8')
print(configfile) # this is good!
config.read(configfile) # this fails to load the contents into configparser
[]
我得到一个空列表。我可以创建一个文件,或者从请求中打印configfile
对象的内容。Get call, ini数据看起来不错。config.read()
似乎无法将其作为对象加载到内存中,似乎只能通过从磁盘读取文件来工作。好像是在写请求的内容。使用本地的.ini文件会破坏使用远程配置库的全部目的。
是否有一种好方法从远程读取该配置文件,并在容器运行时配置解析器访问它?
我得到了这个工作:
config.read_string(configfile)