У меня есть служба kubernetes, предоставляющая 2 порта, которыми я хочу управлять с помощью helm:
apiVersion: v1
kind: Service
metadata:
name: myproject-svc
spec:
type: ClusterIP
ports:
- name: myproject-web
port: 80
protocol: TCP
targetPort: 8181
- name: myproject-tcp
port: 61616
protocol: TCP
targetPort: 61616
selector:
app: myproject-dev
Я создал шаблон kubernetes-helm:
apiVersion: v1
kind: Service
metadata:
name: {{ .Values.project }}-svc
spec:
type: ClusterIP
ports:
- name: {{ .Values.project }}-web
port: {{ .Values.serviceweb.port }}
protocol: TCP
targetPort: {{ .Values.serviceweb.targetPort }}
- name: {{ .Values.project }}-tcp
port: {{ .Values.servicetcp.port }}
protocol: TCP
targetPort: {{ .Values.servicetcp.targetPort }}
selector:
app: {{ .Values.project }}-{{ .Values.environment }}
А по моему values.yaml
:
project: activemq
serviceweb:
type: ClusterIP
port: 8161
servicetcp:
type: ClusterIP
port: 61616
Когда я выполняю команду пробного запуска, кажется, что helm не устраивает, если .Values.service
не определен:
helm install --dry-run --set environment=dev --name myproject --debug myproject/;
Error: render error in "myproject/templates/NOTES.txt": template: myproject/templates/NOTES.txt:8:39: executing "myproject/templates/NOTES.txt" at <.Values.service.type>: can't evaluate field type in type interface {}
Я видел, что .Values.service
также упоминается в templates/tests/test-connection.yaml
. Эти файлы содержат исходные значения после их генерации с помощью команды helm create
.
Существует ли элегантный способ создания шаблона управления для службы с несколькими портами?