как получить доступ к атрибуту с двоеточием в имени атрибута в шаблоне руля - PullRequest
0 голосов
/ 07 декабря 2018

В шаблоне helm я хочу написать что-то вроде ниже:

{{- if empty .Values.conf.proxy_server.filter:authtoken.auth_uri -}}
{{- $_ := tuple "identity" "internal" "api" . | include "helm-toolkit.endpoints.keystone_endpoint_uri_lookup"| set .Values.conf.proxy_server.filter:authtoken "auth_uri" -}}
{{- end -}}

Поскольку в filter:authtoken есть двоеточие, я получил ошибку, как показано ниже:

Error: parse error in "swift/templates/configmap-etc.yaml": template: swift/templates/configmap-etc.yaml:20: expected :=

В values.yaml фрагмент выглядит следующим образом:

conf:
  proxy_server:
    filter:authtoken:
      paste.filter_factory: keystonemiddleware.auth_token:filter_factory
      auth_type: password
      ......

Так что в любом случае, чтобы обойти это?

1 Ответ

0 голосов
/ 07 декабря 2018

Это не действительно YAML;но YAML, будучи YAML, есть несколько способов «записать» вещи.(Все действительные JSON действительны YAML.) Среди других опций вы можете заключить ключ в файл значений:

conf:
  proxy_server:
    "filter:authtoken":
      paste.filter_factory: "keystonemiddleware.auth_token:filter_factory"
      auth_type: password
      ......

(я также заключил в кавычки значение с двоеточием в in ... просто вна случай, если он будет неверно истолкован как отображение.)

Когда вы начнете читать его, вам, вероятно, придется использовать функцию Go text / template index, чтобы извлечь значение, так как оно не выглядиткак обычное имя.

{{- if empty (index .Values.conf.proxy_server "filter:authtoken").auth_uri -}}

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

...