Я использую 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, чтобы я мог настроить развертывание с желаемым источником и службой во время развертывания.
, пожалуйста, предложите