Kubernetes 获取头盔图表中的文件夹列表
获得了驻留在templates文件夹之外的配置文件列表,我们将其输入到helm图表中,如下所示:Kubernetes 获取头盔图表中的文件夹列表,kubernetes,go-templates,kubernetes-helm,Kubernetes,Go Templates,Kubernetes Helm,获得了驻留在templates文件夹之外的配置文件列表,我们将其输入到helm图表中,如下所示: ├── configs │ ├── AllEnvironments │ │ ├── Infrastructure │ │ └── Services │ │ ├── ConfigFile1 │ │ ├── ConfigFile2 │ ├── Apps │ │ ├── App1 │ │ ├── App2 │ │ └── Ap
├── configs
│ ├── AllEnvironments
│ │ ├── Infrastructure
│ │ └── Services
│ │ ├── ConfigFile1
│ │ ├── ConfigFile2
│ ├── Apps
│ │ ├── App1
│ │ ├── App2
│ │ └── App3
│ ├── ManagementEnvironments
│ │ ├── Database
│ │ │ ├── DbFile1
│ │ │ └── DbFile2
│ │ ├── Infrastructure
│ ├── TestEnvironments
│ │ ├── Pipeline
│ │ │ └── Pipeline1
│ │ ├── Database
│ │ │ ├── Pipeline2
│ ├── Console
│ │ ├── Console1
│ │ ├── Console2
到目前为止,这对我们很有好处。现在,我们需要解析这些文件夹,并获得配置下所有不以环境结尾的文件夹的列表。因此,在本例中,基本上是一个包括应用程序和控制台的范围
执行以下操作时,我会重复3次应用程序,因为它下面有很多文件,并且还会重复2次控制台应用程序
我想得到一个文件夹列表,这些文件夹不以环境结束,只结束一次
我试着看看围棋模板和一些掌舵图工具包,但我没有围棋方面的经验,这似乎是实现这一目标的必要条件,我可能会在未来几天内采取行动。但现在我陷入困境,所以任何帮助都是感激的
{{- range $path, $bytes := $.Files.Glob "configs/**" }}
{{- if not (or (dir $path | regexFind "configs.*Environments.*") (dir $path | regexFind "configs$")) }}
{{ base (dir $path) }}
{{- end }}
{{- end }}
如果对其他人有帮助,这里有一种方法: 头盔图表使用Go模板和Sprig库。因此,使用Sprig中的dict,我们可以保留列出的文件夹的上一个值,并且只有当当前文件夹与上一个不同时,我们才打印出来。现在这项工作是因为文件按字母顺序列出,所以同一文件夹中的文件将是连续的。如果不按顺序阅读,这些方法将不起作用
{{- $localDict := dict "previous" "-"}}
{{- range $path, $bytes := $.Files.Glob "configs/**" }}
{{- if not (or (dir $path | regexFind "configs.*Environments.*") (dir $path | regexFind "configs$")) }}
{{- $folder := base (dir $path) }}
{{- if not (eq $folder $localDict.previous)}}
{{$folder -}}
{{- end }}
{{- $_ := set $localDict "previous" $folder -}}
{{- end }}
{{- end }}
今天,使用Helm v3.3,您仍然无法使用位于图表文件夹之外的文件 这是一个大问题,您可以在这里遵循:
为什么要将
previous
存储在字典中而不仅仅是一个变量?我的var想法不起作用,而你的dict想法起作用了。非常感谢!