很抱歉,如果这个案例已经涉及到了,我阅读了许多类似的问题/答案,但尽管它们有所帮助,但我还没有找到解决我的pb的方法。
我需要更新yaml值文件,以引入一个新的密钥networkpolicy,并在helm range循环中遍历它:
初始value.yaml文件:
calico:
spec:
egress:
- action: Allow
destination:
selector: app.kubernetes.io/name == 'test'
order: 10
types:
- Egress
spec:
egress:
- action: Allow
destination:
selector: app.kubernetes.io/name == 'test'
order: 10
types:
- Egress更新的value.yaml文件:
calico:
networkpolicy:
name: micro-zoning.allow-egress-from-p-to-bitbucket
spec:
egress:
- action: Allow
destination:
selector: app.kubernetes.io/name == 'test'
order: 10
types:
- Egress
networkpolicy:
name: micro-zoning.allow-egress-from-p-to-papi
spec:
egress:
- action: Allow
destination:
selector: app.kubernetes.io/name == 'p-api'
order: 10
types:
- Egress处理它的舵机模板是这样的:
{{- if .Values.calico -}}
{{- range .Values.calico.networkpolicy }}
apiVersion: crd.projectcalico.org/v1
kind: NetworkPolicy
metadata:
name: {{ $.Values.calico.networkpolicy.name | default (printf "micro-zoning.%s" (include "test.fullname" $)) }}
{{- include "test.globalMetadata" $ | nindent 2 }}
labels:
projectcalico.org/tier: micro-zoning
spec:
tier: micro-zoning
selector: app.kubernetes.io/name == "{{ include "test.name" $ }}"
{{- with $.Values.calico.networkpolicy.spec }}
{{- toYaml . | nindent 2 }}
{{- end }}
---
{{- end }}
{{- end }}它重复两次(如预期的那样),但生成的模板是相同的,即只打印来自第二字典的数据:
---
apiVersion: crd.projectcalico.org/v1
kind: NetworkPolicy
metadata:
name: micro-zoning.allow-egress-from-p-to-api
namespace: test
labels:
projectcalico.org/tier: micro-zoning
spec:
tier: micro-zoning
selector: app.kubernetes.io/name == "test"
egress:
- action: Allow
destination:
selector: app.kubernetes.io/name == 'p-api'
order: 10
types:
- Egress
---
apiVersion: crd.projectcalico.org/v1
kind: NetworkPolicy
metadata:
name: micro-zoning.allow-egress-from-p-to-api
namespace: test
labels:
projectcalico.org/tier: micro-zoning
spec:
tier: micro-zoning
selector: app.kubernetes.io/name == "test"
egress:
- action: Allow
destination:
selector: app.kubernetes.io/name == 'p-api'
order: 10
types:
- Egress
---你知道发生了什么吗?我想我的value.yaml文件的格式可能出了问题,但却搞不清楚是什么。
发布于 2021-12-30 13:36:09
这可能是由范围引起的。
$表示值的根。
在range循环中,应该使用.来表示当前元素。
模板
{{- if .Values.calico -}}
{{- range .Values.calico }}
apiVersion: crd.projectcalico.org/v1
kind: NetworkPolicy
metadata:
name: {{ .name | default (printf "micro-zoning.%s" (include "test.fullname" $)) }}
labels:
projectcalico.org/tier: micro-zoning
spec:
tier: micro-zoning
selector: app.kubernetes.io/name == "{{ include "test.name" $ }}"
{{- with .networkpolicy.spec }}
{{- toYaml . | nindent 2 }}
{{- end }}
---
{{- end }}
{{- end }}产出:
---
# Source: test/templates/calico.yaml
apiVersion: crd.projectcalico.org/v1
kind: NetworkPolicy
metadata:
name: micro-zoning.test
labels:
projectcalico.org/tier: micro-zoning
spec:
tier: micro-zoning
selector: app.kubernetes.io/name == "test"
egress:
- action: Allow
destination:
selector: app.kubernetes.io/name == 'test'
order: 10
types:
- Egress
---
# Source: test/templates/calico.yaml
apiVersion: crd.projectcalico.org/v1
kind: NetworkPolicy
metadata:
name: micro-zoning.test
labels:
projectcalico.org/tier: micro-zoning
spec:
tier: micro-zoning
selector: app.kubernetes.io/name == "test"
egress:
- action: Allow
destination:
selector: app.kubernetes.io/name == 'p-api'
order: 10
types:
- Egress
---Ps:values.yaml有一些语法错误,您提供了。
地图上不可能有两个相同的钥匙。您应该将它们写入数组中,以符合语法。如下所示:
初始value.yaml文件:
calico:
- spec:
egress:
- action: Allow
destination:
selector: app.kubernetes.io/name == 'test'
order: 10
types:
- Egress
- spec:
egress:
- action: Allow
destination:
selector: app.kubernetes.io/name == 'test'
order: 10
types:
- Egress更新的value.yaml文件:
calico:
- networkpolicy:
name: micro-zoning.allow-egress-from-p-to-bitbucket
spec:
egress:
- action: Allow
destination:
selector: app.kubernetes.io/name == 'test'
order: 10
types:
- Egress
- networkpolicy:
name: micro-zoning.allow-egress-from-p-to-papi
spec:
egress:
- action: Allow
destination:
selector: app.kubernetes.io/name == 'p-api'
order: 10
types:
- Egress发布于 2022-01-04 17:56:50
我终于解决了这个问题。我对yaml几乎没有经验,还犯了一些语法错误。
最后的yaml配置文件现在如下所示:
calico:
networkPolicy:
- name: networkpolicy1
spec:
selector: test
egress:
- action: Allow
destination:
selector: app.kubernetes.io/name == 'chartname'
order: 10
types:
- Egress
- name: networkpolicy2
spec:
selector: chartname
egress:
- action: Allow
destination:
selector: app.kubernetes.io/name == 'test2'
order: 10
types:
- Egress舵机模板的处理如下所示:
{{- if .Values.calico -}}
{{- range .Values.calico.networkPolicy }}
apiVersion: crd.projectcalico.org/v1
kind: NetworkPolicy
metadata:
name: {{ .name | default (printf "micro-zoning.%s" (include "chartname.fullname" $)) }}
{{- include "chartname.globalMetadata" $ | nindent 2 }}
labels:
projectcalico.org/tier: micro-zoning
spec:
tier: micro-zoning
selector: app.kubernetes.io/name == {{ .spec.selector | default ((include "chartname.name" $)) }}
{{- with .spec }}
{{- toYaml . | nindent 2 }}
{{- end }}
---
{{- end }}
{{- end }}注意:这个yaml教程提供了帮助。
https://stackoverflow.com/questions/70530721
复制相似问题