Хелм шаблон с сервисом kubernetes с несколькими портами - PullRequest
1 голос
/ 03 апреля 2019

У меня есть служба 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.

Существует ли элегантный способ создания шаблона управления для службы с несколькими портами?

Ответы [ 2 ]

0 голосов
/ 15 апреля 2019

Мой вопрос связан с плохим знанием руля.Многие файлы являются необязательными в структуре файла рулевой диаграммы, и NOTES.txt является одним из них.

Когда вы начинаете с helm create, как я, он создает структуру каталогов (с дополнительными файлами), предварительно сконфигурировавшаблоны развертывания, обслуживания и входа и значения по умолчанию в values.yaml.Если вам нужно что-то более конкретное, как я, с моими двумя сервисными портами, вам нужно отредактировать шаблон, values.yaml и все файлы, на которые ссылается один сервисный порт.Если эти файлы являются дополнительными, вы также можете просто удалить их.

0 голосов
/ 04 апреля 2019

Глядя на ошибку, которую я предполагаю в NOTES.txt, вы ссылаетесь на тип как .Values.service.type.Это не удастся, так как в values.yaml корневым объектом для типа является serviceweb или servicetcp.

. Возможно, вам потребуется заменить строку на .Values.serviceweb.type или .Values.servicetcp.type в соответствии с вашим вариантом использования, а затемпопробовать.

...