Пользовательские шаблоны#

Для изменения конфигурации Angie для ресурсов Ingress, ресурсов VirtualServer и основного файла конфигурации Angie можно использовать пользовательские шаблоны.

Пользовательские шаблоны ANIC настраиваются через ConfigMap с помощью следующих ключей:

  • main-template — задает основной шаблон конфигурации Angie.

  • ingress-template — задает шаблон конфигурации ANIC для ресурса Ingress.

  • virtualserver-template — задает шаблон конфигурации ANIC для ресурса VirtualServer.

Пример#

kind: ConfigMap
apiVersion: v1
metadata:
  name: angie-config
  namespace: angie-ingress
data:
  main-template: |
    worker_processes  {{.WorkerProcesses}};
    ...
        include /etc/angie/conf.d/*.conf;
    }
  ingress-template: |
    {{range $upstream := .Upstreams}}
    upstream {{$upstream.Name}} {
      {{if $upstream.LBMethod }}{{$upstream.LBMethod}};{{end}}
    ...
    }{{end}}
  virtualserver-template: |
    {{ range $u := .Upstreams }}
    upstream {{ $u.Name }} {
      {{ if ne $u.UpstreamZoneSize "0" }}zone {{ $u.Name }} {{ $u.UpstreamZoneSize }};{{ end }}
    ...
    }
    {{ end }}

Примечание

  • Шаблоны в примере обрезаны для краткости.

  • Основные шаблоны angie.tmpl и angie.ingress.tmpl находятся по пути internal/configs/version1. Шаблон VirtualServer (angie.virtualserver.tmpl) расположен по пути internal/configs/version2.

Диагностика ошибок#

  • Если пользовательский шаблон содержит ошибку, ANIC не запустится. Ошибка отобразится в журнале.

    Пример ошибки:

    Error updating Angie main template: template: angieTemplate:98: unexpected EOF
    
  • Если некорректный пользовательский шаблон был добавлен после запуска ANIC, конфигурация не обновится. Ошибка отобразится в журнале, в событии, связанном с ConfigMap.

    Пример ошибки:

    Error when updating config from ConfigMap: Invalid angie configuration detected, not reloading
    

События ConfigMap можно просмотреть с помощью команды kubectl describe -n anic configmap angie-config.

Пример события с ошибкой:

Events:
  Type     Reason            Age                From      Message
  ----     ------            ----               ----      -------
  Normal   Updated           12s (x2 over 25s)  anic      Configuration from anic/angie-config was updated
  Warning  UpdatedWithError  10s                anic      Configuration from anic/angie-config was updated, but not applied: Error when parsing the main template: template: angieTemplate:98: unexpected EOF
  Warning  UpdatedWithError  8s                 anic      Configuration from anic/angie-config was updated, but not applied: Error when writing main Config