Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes 获取头盔图表中的文件夹列表_Kubernetes_Go Templates_Kubernetes Helm - Fatal编程技术网

Kubernetes 获取头盔图表中的文件夹列表

Kubernetes 获取头盔图表中的文件夹列表,kubernetes,go-templates,kubernetes-helm,Kubernetes,Go Templates,Kubernetes Helm,获得了驻留在templates文件夹之外的配置文件列表,我们将其输入到helm图表中,如下所示: ├── configs │   ├── AllEnvironments │   │   ├── Infrastructure │   │   └── Services │   │   ├── ConfigFile1 │   │   ├── ConfigFile2 │   ├── Apps │   │   ├── App1 │   │   ├── App2 │   │   └── Ap

获得了驻留在templates文件夹之外的配置文件列表,我们将其输入到helm图表中,如下所示:

├── 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想法起作用了。非常感谢!