Комплексное руководство: передача нескольких портов в файлеvalues.yaml Helm

При развертывании приложений с помощью Helm в Kubernetes обычно настраивают несколько портов для ваших сервисов. Файлvalues.yaml в Helm позволяет вам определять и настраивать эти конфигурации. В этой записи блога мы рассмотрим различные методы передачи нескольких портов в файлеvalues.yaml, а также примеры кода для каждого подхода.

Метод 1: использование списка
Один из способов передать несколько портов в файлеvalues.yaml — использовать список. Вот пример:

# values.yaml
ports:
  - name: http
    port: 80
  - name: https
    port: 443

В шаблоне развертывания вы можете перебирать этот список и создавать необходимые ресурсы службы Kubernetes. Вот пример фрагмента шаблона:

# deployment.yaml
{{- range .Values.ports }}
apiVersion: v1
kind: Service
metadata:
  name: {{ .name }}
spec:
  ports:
    - name: {{ .name }}
      port: {{ .port }}
{{- end }}

Метод 2: использование карты
Другой подход заключается в использовании карты для определения нескольких портов. Вот пример:

# values.yaml
ports:
  http: 80
  https: 443

В шаблоне развертывания вы можете перебирать карту и создавать ресурсы службы Kubernetes. Вот пример фрагмента шаблона:

# deployment.yaml
{{- range $name, $port := .Values.ports }}
apiVersion: v1
kind: Service
metadata:
  name: {{ $name }}
spec:
  ports:
    - name: {{ $name }}
      port: {{ $port }}
{{- end }}
# values.yaml
ports: "80,443"

В шаблоне развертывания вы можете разделить строку и создать ресурсы службы Kubernetes. Вот пример фрагмента шаблона:

# deployment.yaml
{{- $ports := split "," .Values.ports }}
{{- range $port := $ports }}
apiVersion: v1
kind: Service
metadata:
  name: port-{{ $port }}
spec:
  ports:
    - name: port-{{ $port }}
      port: {{ $port }}
{{- end }}

В этой записи блога мы рассмотрели три различных метода передачи нескольких портов в файлеvalues.yaml Helm. Вы можете выбрать тот подход, который лучше всего соответствует вашим требованиям. Независимо от того, используете ли вы список, карту или собственный разделитель, Helm обеспечивает гибкость и позволяет легко настроить несколько портов. Используя эти методы, вы можете эффективно развертывать свои приложения и управлять ими в Kubernetes с помощью Helm.