我有一个使用
os.environ.get('env_var_name')
访问我的环境变量的脚本。我可以在本地运行它,但在 Openshift 中,我存储了我的 Secret,其中单个 Secret 包含多个数据值。例如,Test1
Secret 会将 env_var_1
、env_var_2
等作为数据存储在 Secret 中。
我的问题是,如何在 python 脚本中单独访问每个变量?我尝试过类似
os.environ.get(Test1/env_var_1)
和 os.environ.get(Test1.env_var_1)
之类的方法,但到目前为止都没有成功。如有任何帮助,我们将不胜感激!
正如您所说,您无法使用
os.environ.get()
访问它们,因为该方法从底层操作系统检索环境变量。这就是它在您的开发环境中工作的原因。但它并非来自 OpenShift Secrets。在openShift中,您需要使用OpenShift API或cli工具。在 Python 脚本中,您可以使用 subprocess 模块来运行 shell 命令并捕获输出。
这些内容应该对你有用
secret_name = "Test1"
env_var_name = "env_var_1"
command = f'oc get secret {secret_name} -o jsonpath={{.data.{env_var_name}}} | base64 -d'
result = subprocess.run(command, shell=True, check=True, text=True, capture_output=True)
value = result.stdout.strip()
print(f"The value of {env_var_name} is: {value}")
如果您还没有导入子流程模块,请记住导入。