Helm:如何使用“.Files.Get”将 json 导入到配置映射中

Har*_*lak 5 kubernetes-helm

我尝试将 json 文件导入到 configmap 中,但该映射不包含该文件。

我的 ConfigMap 模板:

apiVersion: v1
kind: ConfigMap
metadata:
  name: serilog-configmap
data:
  serilog.json: |-
{{ .Files.Get "serilog.json" | indent 4}}
Run Code Online (Sandbox Code Playgroud)

serilog.json 位于项目的根路径中,有一个包含图表和模板的子目录(来自 helm create )。

我也试过“../../serilog.json”和完整路径作为文件名,但当我运行 helm install --debug --dry-run 时,它总是以相同的结果结束。

---
# Source: hellowebapi/templates/serilogConfigMap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: serilog-configmap
data:
  serilog.json: |-
---
Run Code Online (Sandbox Code Playgroud)

我希望:

---
# Source: hellowebapi/templates/serilogConfigMap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: serilog-configmap
data:
  serilog.json: |-
{
    "Serilog": {
        "Using": [
            "Serilog.Sinks.ColoredConsole"
        ],
...
---
Run Code Online (Sandbox Code Playgroud)

谁能告诉我我哪里出错了?

小智 15

尝试这个 :

---
apiVersion: v1
kind: ConfigMap
metadata:
  name: serilog-configmap
data:
  serilog.json: |-
    {{- $.Files.Get "configurations/serilog.json"  | nindent 6 -}}
Run Code Online (Sandbox Code Playgroud)

带有 json 文件的相对路径 ( hellowebapi/configurations/serilog.json)

它将产生:

---
# Source: serilog/templates/test.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: serilog-configmap
data:
  serilog.json: |-
      {
          "apiVersion": "v1",
          "kind": "Pod",
          "metadata": {
              "annotations": {
Run Code Online (Sandbox Code Playgroud)


edb*_*ead 1

你的json文件应该位于您的图表目录中。

\n

访问模板内的文件

\n
\xce\xbb ls\nChart.yaml  charts/  serilog.json  templates/  values.yaml\n\n\xce\xbb helm template .\n---\n# Source: templates/configmap.yaml\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: serilog-configmap\ndata:\n  serilog.json: |-\n    {\n      "Serilog": {\n        "Using": [\n            "Serilog.Sinks.ColoredConsole"\n        ]\n      }\n    }\n
Run Code Online (Sandbox Code Playgroud)\n