You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Kubernetes中创建Secret时如何保留Matomo配置文件格式?

解决Kubernetes中Matomo配置Secret的格式保留问题

问题根源

你的YAML清单写法有误:

  • data字段要求值必须是base64编码的单行字符串,直接写入多行文本会被YAML解析为嵌套结构,导致挂载后格式混乱。
  • 之前尝试stringData未生效,核心原因是没正确使用YAML的多行文本语法。

正确解决方案

方案1:使用stringData(推荐,无需手动编码)

Kubernetes 1.19及以上版本支持stringData字段,可直接写入明文多行内容,Kubernetes会自动完成base64编码。关键是用YAML的**块样式标量(|符号)**保留所有换行和缩进:

apiVersion: v1
kind: Secret
metadata:
  name: matomo-config
  labels:
    app: matomo
type: Opaque
stringData:
  config: |
    [database]
    host = "matomodb.com"
    username = "${supersecret_secret}"
    password = "${supersecret_secret}"

    [Plugins]
    Plugins[] = "CorePluginsAdmin"
    Plugins[] = "CoreAdminHome"
    Plugins[] = "CoreHome"
    Plugins[] = "WebsiteMeasurable"
    Plugins[] = "Diagnostics"
    Plugins[] = "CoreVisualizations"
    Plugins[] = "Proxy"
    Plugins[] = "API"
    Plugins[] = "Widgetize"
    Plugins[] = "Transitions"
    Plugins[] = "LanguagesManager"
    Plugins[] = "Actions"
    Plugins[] = "Dashboard"
    Plugins[] = "MultiSites"
    Plugins[] = "Referrers"

|符号会完整保留配置文件的换行、空格等格式,完全匹配Matomo的要求。

方案2:使用data字段(需手动base64编码)

若你的Kubernetes版本低于1.19,只能使用data字段,需先将配置文件内容转成无换行的base64编码:

  1. 执行编码命令(以config.ini.php为例):
cat config.ini.php | base64 -w 0
  1. 将编码后的单行字符串填入data.config字段:
apiVersion: v1
kind: Secret
metadata:
  name: matomo-config
  labels:
    app: matomo
type: Opaque
data:
  config: W2RhdGFiYXNlXQpob3N0ID0gIm1hdG9tb2RiLmNvbSIKdXNlcm5hbWUgPSAiJHtzdXBlcnNlY3JldF9zZWNyZXR9IgpwYXNzd29yZCA9ICR7c3VwZXJzZWNyZXRfc2VjcmV0fQoKW1BsdWdpbnNdClBsdWdpbnNbXSA9ICJDb3JlUGx1Z2luc0FkbWluIgpQbHVnaW5zW10gPSAiQ29yZUFkbWluSG9tZSIKUGx1Z2luc1tdID0gIkNvcmVIb21lIgpQbHVnaW5zW10gPSAiV2Vic2l0ZU1lYXN1cmFibGUiClBsdWdpbnNdWSA9ICJEaWFnbm9zdGljcyIKUGx1Z2luc1tdID0gIkNvcmVWaXN1YWxpemF0aW9ucyIKUGx1Z2luc1tdID0gIlByb3h5IgpQbHVnaW5zW10gPSJBUEkiClBsdWdpbnNdWSA9ICJXaWRnaXRpemUiClBsdWdpbnNdWSA9ICJUcmFuc2l0aW9ucyIKUGx1Z2luc1tdID0gIkxhbmd1YWdlc01hbmFnZXIiClBsdWdpbnNdWSA9ICJBY3Rpb25zIgpQbHVnaW5zW10gPSJEYXNjaG9hbCIKUGx1Z2luc1tdID0gIk11bHRpU2l0ZXMiClBsdWdpbnNdWSA9ICJSZWZlcnJlcnM=

注意:-w 0参数确保编码结果是单行,避免YAML解析错误。

挂载验证

创建Secret后,通过以下方式挂载到Pod,确保配置文件路径匹配Matomo的要求:

apiVersion: v1
kind: Pod
metadata:
  name: matomo
  labels:
    app: matomo
spec:
  containers:
  - name: matomo
    image: matomo:latest
    volumeMounts:
    - name: config-volume
      mountPath: /var/www/html/config/config.ini.php
      subPath: config
  volumes:
  - name: config-volume
    secret:
      secretName: matomo-config

内容的提问来源于stack exchange,提问作者Artur Ferfecki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 00:25:56