k8s的包管理工具(5)--读取文件内容

文章目录

一、概述

helm3中可通过.Files对象并结合方法获取文件内容,包含文件名称和文件具体内容。

通过这样的方式获取的文件内容不能是chart包创建后默认生成的文件内容,以下文件中的内容都无法获取到

复制代码
mychart/
├── charts/
├── templates/
├── Chart.yaml
└── values.yaml

在chart包内手动创建的文件夹,里面的文件内容可被获取

复制代码
mychart/
├── charts/
├── templates/
├── files/           # 只有这里的文件可以被 .Files.Get 访问
│   ├── config.json
│   └── data.txt
├── Chart.yaml
└── values.yaml

引用文件时,文件目录是相当路径,相当chart/

二、获取文件内容

1. 使用方法

获取文件内容的方法

yaml 复制代码
data: {{ .Files.Get "文件目录" }}   注意为相对目录

按找行获取文件内容

yaml 复制代码
data: {{ .Files.Lines "文件目录" }} 

获取文件路径和内容

yaml 复制代码
# 获取目录下所有文件路径
{{ .Files.Glob "目录/*" }}

## 递归匹配
{{ .Files.Glob "目录/**" }}

2. 示例

.Files.Get获取文件内容

创建chart包

bash 复制代码
[root@k8s-master m1]# helm create chart

[root@k8s-master m1]# cd chart/
[root@k8s-master chart]# rm -rf templates/*
[root@k8s-master chart]# echo "" > values.yaml 

创建文件

bash 复制代码
[root@k8s-master chart]# mkdir file
[root@k8s-master chart]# cat file/test.txt 
test

获取文件所有内容

bash 复制代码
[root@k8s-master chart]# cat templates/configmap.yaml 
apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ .Release.Name }}
data:
  file: {{ .Files.Get "file/test.txt" }}

试运行查看结果

bash 复制代码
# Source: chart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: chart
data:
  file: test

.Files.Lines获取文件内容

逐行遍历文件内容

yaml 复制代码
[root@k8s-master m1]# cat chart/templates/configmap.yaml 
apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ .Release.Name }}
data:
{{- range $index,$line := .Files.Lines "file/test.txt" }}
  {{ if $line }}
  {{ $index }}: {{ $line | quote }}
  {{- end }}
{{- end }}


[root@k8s-master m1]# cat chart/file/test.txt 
test1
test2
test3
test4

试运行结果

yaml 复制代码
# Source: chart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: chart
data:
  
  0: "test1"
  
  1: "test2"
  
  2: "test3"
  
  3: "test4"

.Files.Glob获取文件路径

bash 复制代码
[root@k8s-master m1]# touch chart/file/test{2..4}.txt
[root@k8s-master m1]# mkdir -p chart/file/file1/test{1..3}.txt

获取文件路径

yaml 复制代码
[root@k8s-master m1]# cat chart/templates/configmap.yaml 
apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ .Release.Name }}
data:
{{- range $path,$content := .Files.Glob "file/*" }}
  {{ $path }}: {{ $content }}
{{- end }}


# 如果只想要路径,可以如下
{{- range $path,$_ := .Files.Glob "file/*" }}
  path: {{ $path }}
{{- end }}

试运行结果

bash 复制代码
# Source: chart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: chart
data:
  file/test.txt: "test1\ntest2\ntest3\ntest4\n"
  file/test2.txt: ""
  file/test3.txt: ""
  file/test4.txt: ""

学习内容参考:helm3实战

相关推荐
可观测性用观测云6 分钟前
云原生网关 Ingress-Nginx 链路追踪实战:OpenTelemetry 采集与观测云集成方案
nginx·kubernetes
哈里谢顿19 小时前
Kubernetes Operator核心概念、实现原理和实战开发
云原生
阿里云云原生1 天前
你的 OpenClaw 真的在受控运行吗?
云原生
阿里云云原生1 天前
5 分钟零代码改造,让 Go 应用自动获得全链路可观测能力
云原生·go
Shanyoufusu121 天前
RKE2 单节点集群安装 Rancher+ 私有镜像仓库搭建 完整教程
云原生
阿里云云原生1 天前
Dify 官方上架 Higress 插件,轻松接入 AI 网关访问模型服务
云原生
AI攻城狮1 天前
OpenClaw Session 管理完全指南:Context 压缩、重置与持久化
人工智能·云原生·aigc
蝎子莱莱爱打怪2 天前
GitLab CI/CD + Docker Registry + K8s 部署完整实战指南
后端·docker·kubernetes
阿里云云原生5 天前
阿里云获评 Agentic AI 开发平台领导者,函数计算 AgentRun 赢下关键分!
云原生
蝎子莱莱爱打怪5 天前
Centos7中一键安装K8s集群以及Rancher安装记录
运维·后端·kubernetes