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'