Проблема с Django template, не могу загрузить вложенные значения ​с помощью YAML template configuration

Я использую kapitan для создания config.yaml для своего проекта Django.
Содержание YAML template configuration:

kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: dev
  namespace: {{ inventory.parameters.namespace }}
subjects:
{% for groups in inventory.parameters.rbac.groups %}
  - kind: User
    name: {{ groups }}
    namespace: {{ inventory.parameters.namespace }}
{% endfor %}
roleRef:
  kind: Role
  name: dev
  apiGroup: rbac.authorization.k8s.io

Это содержание файла с переменными:

groups:
  beta:
    - test_user1
    - test_user2
  demo:
    - test_user3
    - test_user4

После компиляции я получаю такой результат в config.yaml:

kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: dev
  namespace: m-beta
subjects:
  - kind: User
    name: beta
    namespace: m-beta
  - kind: User
    name: demo
    namespace: m-beta
roleRef:
  kind: Role
  name: dev
  apiGroup: rbac.authorization.k8s.io

Как мне изменить эту строку:

name: {{ groups }}

так чтоб я получал имена юзеров: test_user1, test_user2, test_user3, test_user4, а не названия групп?

В результате config.yaml должен иметь такое содержание:

kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: dev
  namespace: mvideo-beta
subjects:
  - kind: User
    name: test_user1
    namespace: m-beta
  - kind: User
    name: test_user2
    namespace: m-beta
  - kind: User
    name: test_user3
    namespace: m-beta
  - kind: User
    name: test_user4
    namespace: m-beta
roleRef:
  kind: Role
  name: dev
  apiGroup: rbac.authorization.k8s.io

Благодарен за любую помощь!


Ответы (1 шт):

Автор решения: AnnaBazueva

Проблема в том, что вы копаете на поверхности.
Вместо этого вам нужно перебирать пользователей в каждой группе.

Требуется вложенный цикл:

kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: dev
  namespace: {{ inventory.parameters.namespace }}
subjects:
{% for group, users in inventory.parameters.rbac.groups.items() %}
  {% for user in users %}
  - kind: User
    name: {{ user }}
    namespace: {{ inventory.parameters.namespace }}
  {% endfor %}
{% endfor %}
roleRef:
  kind: Role
  name: dev
  apiGroup: rbac.authorization.k8s.io
→ Ссылка