Helm在values.yaml无对应配置时如何挂载ConfigMap
Helm values配置覆盖不足时的自定义定制方案(以Authelia挂载ConfigMap为例)
场景说明
部署Authelia服务时使用官方提供的Helm Chart,需要将自定义ConfigMap挂载到容器内指定路径,但该挂载配置未作为模板化参数在values.yaml中开放。
这类问题属于Helm使用中的通用场景:当Chart官方提供的values.yaml配置项无法满足个性化需求时,直接导出全量YAML手动修改再部署的方案维护成本极高,后续Chart升级时需要重复修改配置,不属于最优实践。
实现步骤
采用Helm标准部署加Kubernetes声明式补丁的方案实现,全程不需要修改官方Chart的原始模板,具体操作如下:
1. 编写用户数据库配置文件
创建users_database.yml,用于文件认证模式的用户存储:
############################################################### # Users Database # ############################################################### # 未对接LDAP时可使用该文件维护用户列表 users: admin: displayname: "admin" password: "redacted" email: admin@redacted groups: - admins - dev
2. 编写工作负载补丁文件
创建patches/authelia_users_database.yaml,定义需要追加到Authelia工作负载的卷和挂载规则:
spec: template: spec: containers: - name: authelia volumeMounts: - name: authelia-users-database mountPath: /etc/config volumes: - name: authelia-users-database configMap: name: authelia-users-database
3. 调整Helm values配置
在自定义的values配置文件中开启文件认证,指定用户数据库的挂载路径,注意保持正确的YAML缩进:
authentication_backend: file: enabled: true path: /etc/config/users_database.yml
4. 执行部署命令
按顺序执行以下命令完成全流程部署:
# 添加Authelia Helm仓库并更新本地索引 helm repo add authelia https://charts.authelia.com helm repo update # 安装或升级Authelia实例 helm upgrade --install authelia authelia/authelia --values values/authelia.yaml --version 0.8.34 # 创建存储用户数据库的ConfigMap kubectl create configmap authelia-users-database --from-file=users_database.yml --dry-run -o yaml | kubectl apply -f - # 为Authelia工作负载打补丁,追加自定义卷挂载配置 kubectl patch daemonset authelia --patch-file patches/authelia_users_database.yaml
方案优势
- 无侵入:不需要修改官方Chart的任何模板代码,不需要单独fork维护自定义Chart版本
- 可追溯:所有自定义配置、补丁规则均为声明式文件,可直接纳入Git做版本管理
- 易升级:后续升级Chart版本时,只要工作负载基础结构无破坏性变更,原有补丁可直接复用,不需要重复调整配置
内容的提问来源于stack exchange,提问作者user3753342
相关产品推荐
相关产品推荐

