ошибка при установке рулевой диаграммы с условиями - PullRequest
1 голос
/ 03 марта 2020

Мне нужно развернуть три разных сертификата в разных пространствах имен, используя helm chart. Я создаю шаблон для сертификата в том же файле и добавляю условия для каждого из них, чтобы развернуть только необходимый сертификат, который я передаю в качестве параметра в моей команде установки helm. Мой secret.yaml выглядит следующим образом:

{{- if eq .Values.val "paris_turf_support" }}
{{- range .Values.namespaces.paris_turf_support }}
{{- $ns := . -}}

apiVersion: v1
kind: Secret
type: kubernetes.io/tls
metadata:
name: "tls-paris-turf.support"
namespace: {{ $ns }}
data:
    tls.crt: {{ $.Files.Get "tls-paris-turf.support.crt" | b64enc }}
    tls.key: {{ $.Files.Get "tls-paris-turf.support.key" | b64enc }}
{{- end }}

{{ else if eq .Values.val "geny_sports" }}
{{- range .Values.namespaces.geny_sports }}
{{- $ns := . -}}

apiVersion: v1
kind: Secret
type: kubernetes.io/tls
metadata:
    name: "tls-geny-sports.com"
    namespace: {{ $ns }}
data:
    tls.crt: {{ $.Files.Get "tls-geny-sports.com.crt" | b64enc }}
    tls.key: {{ $.Files.Get "tls-geny-sports.com.key" | b64enc }}
{{- end }}

{{ else if eq .Values.val "paris_turf_com" }}
{{- range .Values.namespaces.paris_turf_com }}
{{- $ns := . -}}

apiVersion: v1
kind: Secret
type: kubernetes.io/tls
metadata:
    name: "tls-paris-turf.com"
    namespace: {{ $ns }}
data:
    tls.crt: {{ $.Files.Get "tls-paris-turf.com.crt" | b64enc }}
    tls.key: {{ $.Files.Get "tls-paris-turf.com.key" | b64enc }}
{{- end }}
{{- end }}

когда я запускаю эту команду для установки диаграммы управления: helm install secret-rel ./secret --values=./secret/values/dev.yaml --namespace=secret --set val="paris_turf_com"

Я получаю эту ошибку: Ошибка: ошибка синтаксического анализа YAML для secret / templates / secret.yaml: ошибка преобразования YAML в JSON : yaml: строка 9: значения сопоставления не допускаются в этом контексте

Нужна ваша помощь, пожалуйста

Ответы [ 2 ]

0 голосов
/ 06 марта 2020

mapping values are not allowed in this context означает, что в .yaml имеется ошибка, которая делает его недействительным.

Существует множество онлайн-инструментов, которые можно использовать для проверки синтаксиса yaml, таких как YAML Lint .

В вашем конкретном случае использования ошибка говорит о наличии проблемы со строкой 9. Посмотрев на ваш конфиг, мы увидим, что вы пропускаете отступы в строках 9 и 10. Вместо этого он должен выглядеть следующим образом:

apiVersion: v1
kind: Secret
type: kubernetes.io/tls
metadata:
  name: tls-paris-turf.support
  namespace: {{ $ns }}

Также вам не нужно использовать двойные кавычки (" ") для обозначения ваших секретов. И, как вы уже заметили, вы должны использовать --- строку перед {{- end }}

Надеюсь, это поможет.

0 голосов
/ 03 марта 2020

наконец я исправляю проблему, это мой secret.yaml:

{{- if eq .Values.val "paris_turf_support" }}
{{- range .Values.namespaces.paris_turf_support }}
{{- $ns := . -}}

apiVersion: v1
kind: Secret
type: kubernetes.io/tls
metadata:
  name: tls-paris-turf.support
  namespace: {{ $ns }}
data:
  tls.crt: {{ $.Files.Get "tls-paris-turf.support.crt" | b64enc }}
  tls.key: {{ $.Files.Get "tls-paris-turf.support.key" | b64enc }}
---
{{- end }}
{{ else if eq .Values.val "geny_sports" }}
{{- range .Values.namespaces.geny_sports }}
{{- $ns := . -}}

apiVersion: v1
kind: Secret
type: kubernetes.io/tls
metadata:
  name: tls-geny-sports.com
  namespace: {{ $ns }}
data:
  tls.crt: {{ $.Files.Get "tls-geny-sports.com.crt" | b64enc }}
  tls.key: {{ $.Files.Get "tls-geny-sports.com.key" | b64enc }}
---
{{- end }}
{{ else if eq .Values.val "paris_turf_com" }}
{{- range .Values.namespaces.paris_turf_com }}
{{- $ns := . -}}

apiVersion: v1
kind: Secret
type: kubernetes.io/tls
metadata:
  name: tls-paris-turf.com
  namespace: {{ $ns }}
data:
  tls.crt: {{ $.Files.Get "tls-paris-turf.com.crt" | b64enc }}
  tls.key: {{ $.Files.Get "tls-paris-turf.com.key" | b64enc }}
---
{{- end }}
{{- end }}
...