平台配置文件管理

需要知道平台配置文件放在哪、本地与线上分别在哪改、改完怎么生效(升级/重启)时读这篇

04-运维管理 / 配置
config.pyentrypoint.shproject.pykubeconfigconfigmapkubeflow-dashboard-configkustomizeoverlaysdocker-compose配置文件升级配置挂载infra命名空间configMapGenerator

平台配置文件管理

平台运行依赖 4 个核心配置文件。它们在「本地 docker-compose」和「线上 kustomize/k8s」两种部署形态下存在于不同位置,但内容(尤其是 config.py)应保持一致。

文件 作用
config.py 平台主配置(数据库、Redis、Celery、鉴权方式、特性开关、集群信息、存储路径等)
entrypoint.sh 容器启动脚本(初始化软链、编译翻译、建库、db upgrade、创建 admin、按 STAGE 启动服务)
project.py 用户自定义模块(自定义登录中转 / SSO 跳转、推送等)
kubeconfig 平台要纳管的 k8s 集群的 kubeconfig 文件(多集群时多份)

说明:config.py 三处位置(本地、kustomize overlays、线上 configmap)内容相同,改一处后需同步到其余位置。


一、本地开发(docker-compose)

启动方式:在 install/docker/ 目录下执行 docker-compose up(详见 02-部署安装 / docker-compose 本地部署)。

配置文件源在 install/docker/ 下,由 docker-compose.yml 以挂载(volume)方式注入容器:

宿主机源文件(install/docker/ 容器内挂载路径
config.py /home/myapp/myapp/config.py
entrypoint.sh /entrypoint.sh
project.py /home/myapp/myapp/project.py
kubeconfig/(目录) /home/myapp/kubeconfig

依据:install/docker/docker-compose.yml:71-74

install/docker/kubeconfig/ 下已带多份示例:dev-kubeconfigprod-kubeconfigcloud-kubeconfignpu-kubeconfigconfig.py 里通过 CLUSTERS 配置引用,例如 "KUBECONFIG": '/home/myapp/kubeconfig/dev-kubeconfig'(见 install/docker/config.pyCLUSTERS 段)。

本地改配置后,重启对应容器即可生效(挂载方式,无需重建镜像)。


二、线上部署(kustomize overlays)

启动方式:在 install/kubernetes/ 目录下执行 kubectl apply -k cube/overlays(或 kustomize build cube/overlays | kubectl apply -f -,详见 02-部署安装)。

2.1 config.py / entrypoint.sh / project.py → configmap kubeflow-dashboard-config

源文件目录:install/kubernetes/cube/overlays/config/,包含 config.pyentrypoint.shproject.py

install/kubernetes/cube/overlays/kustomization.ymlconfigMapGenerator 把这三个文件打包成 infra 命名空间下的 configmap kubeflow-dashboard-config

# install/kubernetes/cube/overlays/kustomization.yml
namespace: infra
configMapGenerator:
- name: kubeflow-dashboard-config
  files:
  - config/config.py
  - config/entrypoint.sh
  - config/project.py

后端 Pod 把该 configmap 挂载到容器(install/kubernetes/cube/base/deploy-backend.yaml:103-111,均用 subPath 单文件挂载):

configmap key 容器内路径
config.py /home/myapp/myapp/config.py
entrypoint.sh /entrypoint.sh
project.py /home/myapp/myapp/project.py

注意:kustomize 的 configMapGenerator 默认会给 configmap 名字追加一段内容哈希后缀,集群里实际名字形如 kubeflow-dashboard-config-xxxxxxx,并会自动滚动更新引用它的 Deployment。kustomization.yml 注释里给出了不带哈希、手动创建的等价命令:

kubectl delete configmap kubeflow-dashboard-config -n infra
kubectl create configmap kubeflow-dashboard-config --from-file=config -n infra

2.2 kubeconfig → 单独的 configmap kubernetes-config

线上 kubeconfig 不属于 kubeflow-dashboard-config,而是单独打成 configmap kubernetes-config。源目录为 install/kubernetes/kubeconfig/,部署脚本据此在多个命名空间创建该 configmap(install/kubernetes/start.sh:146-153):

kubectl delete configmap kubernetes-config -n infra
kubectl create configmap kubernetes-config --from-file=kubeconfig -n infra
# 同样在 pipeline、automl 命名空间各创建一份

后端 / worker / watch Pod 都把 kubernetes-config 挂载到 /home/myapp/kubeconfiginstall/kubernetes/cube/base/deploy-backend.yaml:118-119 等)。

注意:仓库中的 install/kubernetes/kubeconfig/ 目录当前为空,start.sh:10 会用 mkdir -p kubeconfig && echo "" > kubeconfig/dev-kubeconfig 占位(已核对)。实际部署时需把目标集群真实的 kubeconfig 放进该目录后再创建 configmap,见 install/kubernetes/start.sh:10,146-153


三、配置升级(改完怎么生效)

线上有两种等价的更新方式:

  1. 改源文件后重新部署

    • install/kubernetes/cube/overlays/config/ 下的 config.py / entrypoint.sh / project.py
    • 改 kubeconfig 则改 install/kubernetes/kubeconfig/
    • install/kubernetes/ 下重新执行 kubectl apply -k cube/overlays(kubeconfig 用 start.sh 里的 create configmap kubernetes-config 命令重建)。
  2. 直接改线上 configmap 后重启 Pod

    • 直接编辑 infra 命名空间下的 kubeflow-dashboard-config*(或 kubernetes-config)configmap;
    • 改完重启 infra 命名空间下 kubeflow-dashboard* 相关 Pod 使其重新读取。

本地(docker-compose)改完源文件后,重启对应容器即可。


相关

配置项繁多,具体字段含义以源码 install/docker/config.py / install/kubernetes/cube/overlays/config/config.py 为准,本篇仅作位置与升级方式导航。

最后更新 2026-06-30完整文档以官方仓库为准:GitHub Wiki