Как передать несколько docker изображений через values.yml в template.yml в Helm - PullRequest
0 голосов
/ 05 апреля 2020

Я пытаюсь запустить приложение, которое имеет около 40 микросервисов. Как передать 40 различных docker изображений из файла values.yml в файл template.yml.

файл шаблона

      name:{{ .values.name }}
spec:
   containers:
      - image: {{ .values.container.image }}

файл значений

name:A
 container:
     image:A
name :B
  container :
       image:B

У меня есть еще 40 docker изображений, как, как передать все эти изображения в шаблон. И будет ли такой переход создавать 40 разных стручков ?, потому что нам потребуется 40 разных стручков. Любое руководство высоко ценится.

1 Ответ

0 голосов
/ 08 апреля 2020

Сосредоточив внимание только на изображениях и шаблонах , вы можете создать шаблон руля, который будет порождать 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

Пожалуйста, обратите внимание на дополнительные ресурсы:

...