перебирать сложные values.yaml, используя диапазон в диаграмме управления
Я новичок здесь, чтобы управлять миром. Я хочу сгенерировать манифест из моих значений и sample.yaml, поэтому я пытаюсь создать шаблон из моих файлов sample.yaml.
Values.yaml
prodapps:
alpha:
name: alpha
image: alpha.azurecr.io/alpha:latest
imagePullPolicy: IfNotPresent
resources:
requests:
memory: "10000Mi"
cpu: "150m"
limits:
memory: "800Mi"
cpu: 600m"
ingress:
enabled: true
annotations:
zap.ingress.kubernetes.io/rule-type: PathPrefixStrip
nginx.ingress.kubernetes.io/rewrite-target: /
path: /alpha/api
hosts:
- demo.jumboapps.com
beta:
name: beta
disable: true
image: beta.azurecr.io/beta:latest
imagePullPolicy: IfNotPresent
resources:
requests:
memory: "10000Mi"
cpu: "150m"
limits:
memory: "800Mi"
cpu: 600m"
ingress:
enabled: true
annotations:
zap.ingress.kubernetes.io/rule-type: PathPrefixStrip
nginx.ingress.kubernetes.io/rewrite-target: /
path: /beta/api
hosts:
- demo.jumboapps.com
Sample.yaml
apiVersion: v1
kind: Service
metadata:
name: "{{ .Values.prodapps.alpha.name }}-svc"
namespace: "{{ .Release.Namespace }}"
spec:
ports:
- port: 80
name: "http"
selector:
app: "{{ .Values.prodapps.alpha.name }}"
---
apiVersion: v1
kind: Service
metadata:
name: "{{ .Values.prodapps.beta.name }}-svc"
namespace: "{{ .Release.Namespace }}"
spec:
ports:
- port: 80
name: "http"
selector:
app: "{{ .Values.prodapps.beta.name }}"
Моя главная цель - создать шаблон моего sample.yaml.by и создать действительный файл Manifet. следуя документации по рулю . Но я не могу найти какой-либо разумный (мой понятный) синтаксис для цикла по файлам со сложными значениями.
Пожалуйста, помогите мне с этим.
1 ответ
Решение
You need to learn more about the usage of range and how k8s divides resources with '---' when applying resources.
You can imitate the following
Values.yaml
prodapps:
alpha:
name: alpha
image: alpha.azurecr.io/alpha:latest
imagePullPolicy: IfNotPresent
resources:
requests:
memory: "10000Mi"
cpu: "150m"
limits:
memory: "800Mi"
cpu: 600m"
beta:
name: beta
disable: true
image: beta.azurecr.io/beta:latest
imagePullPolicy: IfNotPresent
resources:
requests:
memory: "10000Mi"
cpu: "150m"
limits:
memory: "800Mi"
cpu: 600m"
service.yaml
{{ if .Values.prodapps }}
{{- range $k, $v := $.Values.prodapps }}
---
apiVersion: v1
kind: Service
metadata:
name: "{{ $v.name }}-svc"
namespace: "{{ .Release.Namespace }}"
spec:
ports:
- port: 80
name: "http"
selector:
app: "{{ $v.name }}"
{{- end }}
{{- end }}
deployment.yaml
{{ if .Values.prodapps }}
{{- range $k, $v := $.Values.prodapps }}
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: "{{ $v.name }}-dep"
namespace: "{{ .Release.Namespace }}"
spec:
template:
spec:
containers:
- name: {{ $v.Name }}
image: "{{ $v.image }}"
imagePullPolicy: {{ $v.imagePullPolicy }}
resources:
{{- toYaml $v.resources | nindent 12 }}
{{- end }}
{{- end }}