Проблема с размещением аннотации журнала DataDog при развертывании через ansible - PullRequest
0 голосов
/ 21 февраля 2019

Я использую ANSIBE версию 2.7 для развертывания kubernetes.Для отправки журналов в datadog на kubernetes одним из способов является настройка аннотаций, как показано ниже,

template:
    metadata:
      annotations:
        ad.datadoghq.com/nginx.logs: '[{"source":"nginx","service":"webapp"}]'

, это прекрасно работает, и я могу видеть журналы в DataDog.

Однако я бы хотел добитьсяприведенная выше конфигурация с помощью ANSI-развертывания в kubernetes, для которой я использовал ниже код

 template:
        metadata:
           annotations:
             ad.datadoghq.com/xxx.logs: "{{ lookup('template', './datadog.json.j2')}}"

и datadog.json.j2 выглядит следующим образом

'[{{ '{' }}"source":"{{ sourcea }}"{{ ',' }} "service":"{{ serviceb }}"{{ '}' }}]'  **--> sourcea and serviceb are defined as vars**

Однако итоговая конфигурация при развертывании ниже

template:
    metadata:
      annotations:
        ad.datadoghq.com/yps.logs: |
          '[{"source":"test", "service":"test"}]'

, и эта конфигурация не позволяет агенту datadog анализировать журналы, которые не выполняются с ошибкой ниже

[ AGENT ] 2019-xx-xx xx10:50 UTC | ERROR | (kubelet.go:97 in parseKubeletPodlist) | Can't parse template for pod xxx-5645f7c66c-s9zj4: could not extract logs config: in logs: invalid character '\'' looking for beginning of value

, если я использую ANSI-код, как показано ниже (используя replace)

template:
        metadata:
           annotations:
             ad.datadoghq.com/xxx.logs: "{{ lookup('template', './datadog.json.j2', convert_data=False) | string | replace('\n','')}}"

он генерирует конфигурацию развертывания, как показано ниже

template:
    metadata:
      annotations:
        ad.datadoghq.com/yps.logs: '''[{"source":"test", "service":"test"}]'''
      creationTimestamp: null
      labels:

, что также не удается,

, чтобы настроить рабочую конфигурацию с ansible, я должен либо удалить начальную трубу (|), либо три кавычки, приходящие, когдаиспользуя заменить).

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

, пожалуйста, предложите

1 Ответ

0 голосов
/ 21 февраля 2019

Введя пробел в определение шаблона datadog.json.j2 .ie

 [{"source":"{{ sourcea }}"{{ ',' }} "service":"{{ serviceb }}"}] (space at start)

и снова запустив развертывание, я получил рабочую конфигурацию, как показано ниже

template:
    metadata:
      annotations:
        ad.datadoghq.com/yps.logs: ' [{"source":"test", "service":"test"}]'

Однако я не могучтобы понять поведение, если кто-нибудь может помочь мне понять это

...