Сосредоточив внимание только на изображениях и шаблонах , вы можете создать шаблон руля, который будет порождать X стручков:
- Создание
Chart.yaml
файла - Создание
values.yaml
файла с переменной, в которой хранятся все имена изображений - Создание шаблона с директивой
{{ range }}
- Тестирование
Ниже приведен структура файлов и каталогов:
❯ tree helm-dir
helm-dir
├── Chart.yaml
├── templates
│ └── pod.yaml
└── values.yaml
1 directory, 3 files
Создать Chart.yaml
файл
Ниже приведен файл Chart.yaml
:
apiVersion: v2
name: helm-templates
description: A Helm chart for spawning pods from images
version: 0.1.0
Создать файл values.yaml
с переменной, в которой хранятся все имена изображений
Ниже приведен простой файл values.yaml
с разными именами изображений, который будет использоваться с шаблоном:
different_images:
- ubuntu
- nginx
Создайте шаблон с директивой {{ range }}
Этот шаблон хранится в каталоге templates
с именем pod.yaml
Ниже YAML
определение будет шаблоном для всех pods:
{{- range .Values.different_images }}
apiVersion: v1
kind: Pod
metadata:
name: {{ . }}
labels:
app: {{ . }}
spec:
restartPolicy: Never
containers:
- name: {{ . }}
image: {{ . }}
imagePullPolicy: Always
command:
- sleep
- infinity
---
{{- end }}
{{- range .Values.different_images }}
будет перебирать переменную different_images
и заменять {{ . }}
именем изображения е.
Тест
Запустите команду ниже из каталога helm-dir
, чтобы проверить, правильно ли созданы определения шлема YAML
:
$ helm install NAME . --dry-run --debug
Вы должны получить выходные данные с определением нескольких модулей, которые выглядят примерно так, как показано ниже:
# Source: helm-templates/templates/pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: ubuntu
labels:
app: ubuntu
spec:
restartPolicy: Never
containers:
- name: ubuntu
ports:
- containerPort: 3000
image: ubuntu
imagePullPolicy: Always
command:
- sleep
- infinity
resources:
requests:
memory: 500Mi
cpu: 500m
Теперь вы можете запустить: $ helm install NAME .
и проверить, правильно ли были созданы модули с помощью $ kubectl get pods
:
NAME READY STATUS RESTARTS AGE
nginx 1/1 Running 0 8s
ubuntu 1/1 Running 0 8s
Пожалуйста, обратите внимание на дополнительные ресурсы: