Kong Ingress Controller - удаление заголовков, связанных с Kong

У меня есть рабочая установка Kong в кластере Kubernetes, использующая функциональность kubernetes-ingress-controller (https://github.com/Kong/kubernetes-ingress-controller).

Я хотел бы удалить следующие заголовки, связанные с Kong:

  • "X-Kong-Upstream-Latency"
  • "X-Kong-Proxy-Latency"
  • "Через"
  • "Сервер"

Я попробовал использовать плагин response-transformer, применив следующий ресурс KongPlugin:

apiVersion: configuration.konghq.com/v1
kind: KongPlugin
metadata:
  name: kong-response-transformer
config:
  remove:
    headers:
    - "X-Kong-Upstream-Latency"
    - "X-Kong-Proxy-Latency"
    - "Via"
    - "Server"
plugin: response-transformer

Но из ответов удаляется только заголовок "Сервер". Есть ли способ удалить такие заголовки из ответа способом "Kubernetes-ingress-controller" с помощью некоторых настраиваемых ресурсов?

Я обнаружил несколько проблем на GitHub, связанных с этой проблемой (1, 2), но все они относятся к возможности обновить файл конфигурации Kong (/etc/kong/kong.yml), и я, честно говоря, не знаю, как применять такие изменения. в моей среде Kubernetes. Передача следующих строк в ConfigMap не решает проблему:

# Add additional response headers
header_filter_by_lua_block {
    kong.header_filter()
    ngx.header["Server"] = nil
    ngx.header["Via"] = nil
    ngx.header["X-Kong-Proxy-Latency"] = nil
    ngx.header["X-Kong-Upstream-Latency"] = nil
}

Любая помощь по этому поводу? Спасибо...

Изменить: версия Kong - 2.0.3, версия kong-ingress-controller - 0.8.1.

3 ответа

Решение

Вы можете отключить эти заголовки с помощью headers конфигурационное свойство. Также на той же странице отмечается тот факт, что свойства конфигурации также могут быть указаны как переменные среды.

Таким образом, вы можете обновить свое развертывание, указав headers = offсвойство как переменная среды. Что-то подобное:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: ingress-kong
  namespace: kong
spec:
  template:
    spec:
      containers:
        name: proxy
        image: kong:2.0.3
        env:
        - name: KONG_HEADERS
          value: off

У меня была точная проблема, и я исправил ее после того, как нашел эту тему. Поскольку я непосредственно создаю Docker-образ kong, я добавил ниже шаг в файле Docker, чтобы ввести переменную среды.

      ENV KONG_HEADERS='off'

@thibaultcha прав. глядя на https://github.com/Kong/kong/blob/9f2b1d984057336cc6075c287ec38ad59323fe6e/kong.conf.default#L656, мы можем увидеть определение заголовков. среда заголовков изменена на KONG_HEADERS

все, что нужно сделать при использовании Helm, - это добавить в файл values.yaml заголовки с "off"

      env:
  headers: 'off'
Другие вопросы по тегам