Почему тело запроса не отображается в журнале аудита сервера API Kubernetes? - PullRequest
1 голос
/ 28 марта 2020

Я добавил следующие аргументы командной строки к kube-apiserver для включения ведения журнала аудита:

- --audit-log-path=/tmp/k8s-audit.log
- --audit-policy-file=/etc/kubernetes/audit.yaml
- --audit-log-maxage=1
- --audit-log-maxsize=100
- --audit-log-maxbackup=1

Содержимое /etc/kubernetes/audit.yaml:

apiVersion: audit.k8s.io/v1
kind: Policy
omitStages:
  - "ResponseStarted"
  - "ResponseComplete"
rules:
  - level: RequestResponse

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

$ kubectl --v=10 uncordon cluster-worker2

А команда kubectl регистрирует тело запроса следующим образом:

I0328 09:00:07.591869   47228 request.go:942] Request Body: {"spec":{"unschedulable":null}}

Но я не вижу это тело запроса в любом месте файла журнала аудита на сервере kubernetes. Что не так с моей конфигурацией?

1 Ответ

1 голос
/ 29 марта 2020

Запрос фактически регистрируется только на этапе ResponseComplete, что несколько неожиданно. Хотя Kubernetes может теоретически зарегистрировать запрос, как только он его получит, он не делает этого.

Поэтому необходимо удалить строку ResponseComplete из omitstages в политике файл конфигурации (audit.yaml).

...