Azure Kubernetes - 使用Python读取ConfigMap?

5

我想将Python应用程序Docker化,并希望从configmap中读取配置设置。如何在Python中读取configmap?

2个回答

6
创建一个配置文件的configMap:
使用配置文件创建configMap:
$ kubectl create configmap my-config --from-file my-config.file

将configMap挂载到Pod的容器中并从应用程序中使用它:
        volumeMounts:
        - name: config
          mountPath: "/config-directory/my-config.file"
          subPath: "my-config.file"
      volumes:
        - name: config
          configMap:
            name: my-config

现在,您的配置文件将可在/config-directory/my-config.file中使用。您可以像下面这样从Python代码中读取它:

config = open("/config-directory/my-config.file", "r")

您可以使用configMap的数据作为容器的环境变量。- 使用configMap数据定义容器环境变量
config = os.environ['MY_CONFIG']

谢谢。我该如何在Python中读取这个配置文件? - One Developer
@KarthikeyanVijayakumar 与从本地目录或环境变量读取文件的方式相同。 - Kamol Hasan
@KamolHasan,您可以帮我解决这个问题吗:https://dev59.com/9r_qa4cB1Zd3GeqPNrfN - yguw

2
创建 Kubernetes 应用程序时,最好遵循十二要素应用程序原则。其中有一条关于配置的内容建议将特定于环境的应用程序设置存储为环境变量
在 Python 中,可以使用os.environ读取环境变量,例如:
import os
print(os.environ['DATABASE_HOST'])
print(os.environ['DATABASE_USER'])

您可以使用kubectl创建这些环境变量:
kubectl create configmap db-settings --from-literal=DATABASE_HOST=example.com,DATABASE_USER=dbuser

我建议您使用 kubectl kustomize 来处理环境设置,如 使用 Kustomize 声明性地管理 Kubernetes 对象 中所述,特别是使用 configmapGenerator 并使用以下命令将其应用于不同的环境:
kubectl apply -k <environment>/

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接