首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >验证helm模板中路径值是否唯一

验证helm模板中路径值是否唯一
EN

Stack Overflow用户
提问于 2020-04-10 12:58:51
回答 1查看 897关注 0票数 0

我试图检查我的路径值是否是唯一的。这是我的value.yml示例:

代码语言:javascript
复制
 ingresses:
  - name: ingress-1
    path: /route2
    host: example.com
  - name: ingress-2
    path: /route2
    host: example.com

在本例中,我希望排除或连接第二条路由。这是我的ingress.yml模板:

代码语言:javascript
复制
{{- range $ingress := .Values.ingresses -}}
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: sampleName
  labels:
    app: sampleName
    deploymentStrategy: sampleStrategy
spec:
  rules:
    - host: "{{ $ingress.host }}"
      http:
        paths:
          - backend:
              serviceName: SampleName
              servicePort: 80
            path: /sampleApp/{{ $ingress.path }}
---
{{- end -}}

我在范围内,所以我不能再检查其他的入口了。你知道怎么做吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-10 13:07:51

因为(正如您注意到的)您不能在多个宏对象之间强制执行唯一性,我可能会接受“一个服务声明同一个端点”只是“同一个端点可以被多次声明”的一个特定情况,而什么也不做。

Helm模板可以访问一个名为小枝的支持库,它允许一些更通用的数据结构。如果您只想检查没有重复项,可以使用字典

代码语言:javascript
复制
{{- $paths := dict -}}
{{- range $ingress := .Values.ingresses -}}
{{- if hasKey $paths $ingress.path -}}
{{- printf "Duplicate ingress path %s" $ingress.path | fail -}}
{{- else -}}
{{- $_ := set $paths $ingress.path $ingress.path -}}
{{- end -}}
{{- end -}}

您可以使用类似的方法只发出具有给定路径的第一个include对象(如果存在密钥,则不要发出fail,请在set之后立即包含该对象的模板)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61140763

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档