Azure kubernetes - python 读取 configmap?

Azure kubernetes - python to read configmap?

我正在尝试对 python 应用程序进行 Dockerize,并希望从 configmap 中读取配置设置。如何读取 python 中的配置映射?

使用配置文件创建一个configMap:

$ kubectl create configmap my-config --from-file my-config.file

在您的 Pod 容器中安装 configMap 并在您的应用程序中使用它:

        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 的数据作为容器的环境 - Define container environment variables using configMap data

config = os.environ['MY_CONFIG']

在为 Kubernetes 创建应用程序时,最好遵循 The Twelve Factor App principles. There is one item about Config 建议将特定于环境的应用程序设置存储为 环境变量

在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 处理您的环境设置,如 Declarative Management of Kubernetes Objects Using Kustomize, especially with the configmapGenerator 中所述,并将它们应用于不同的环境:

kubectl apply -k <environment>/