Мы пытаемся отредактировать наш ingress-nginx.yml
, чтобы модули входных контроллеров были отладить трафик, поступающий с определенного IP-адреса источника. Наша установка:
- Kubernetes v1.13
- Ingress-Controller v0.24.1
Из документов NGINX и Kubernetes кажется, что нет очень простого способа отлаживать трафик с одного IP-адреса (вы не можете напрямую редактировать конфигурацию nginx). Итак, мы хотели бы добавить директиву debug_connection
, которая будет выглядеть так:
error_log /path/to/log;
...
events {
debug_connection 192.168.1.1;
}
Правильный способ сделать это должен быть через CustomAnnotations в ConfigMap + новый вход для включения CustomAnnotation, поэтому мы попробовали это:
kind: ConfigMap
apiVersion: v1
metadata:
name: nginx-configuration
namespace: ingress-nginx
labels:
app: ingress-nginx
data:
ingress-template: |
#Creating the custom annotation to make debug_connection on/off
{if index $.Ingress.Annotations "custom.nginx.org/debug_connection"}
{$ip := index $.Ingress.Annotations "custom.nginx.org/ip"}
{end}
{range $events := .Events}
events {
# handling custom.nginx.org/debug_connection
{if index $.Ingress.Annotations "custom.nginx.org/debug_connection"}
{end}
А также:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: debugenabler
annotations:
kubernetes.io/ingress.class: "nginx"
custom.nginx.org/debug_connection: "on"
custom.nginx.org/ip: "192.168.1.1"
spec:
rules:
- host: "ourhostname"
http:
paths:
- path: /tea
backend:
serviceName: tea-svc
servicePort: 80
- path: /coffee
backend:
serviceName: coffee-svc
servicePort: 80
Мы применили ingress-nginx.yml
без ошибок. Мы видим новые строчки в конфиге nginx:
location /coffee {
set $namespace "test";
set $ingress_name "debugenabler";
set $service_name "coffee-svc";
set $service_port "80";
set $location_path "/coffee";
rewrite_by_lua_block {
lua_ingress.rewrite({
force_ssl_redirect = true,
use_port_in_redirects = false,
})
balancer.rewrite()
Но все равно ничего относительно debug_connection в блоке events
:
events {
multi_accept on;
worker_connections 16384;
use epoll;
}
Как вставить debug_connection в контекст событий?
main-template
вместоingress-template
, посколькуevents
является частью основной конфигурации NGINX. См. Файл шаблона Nginx на github. com / nginxinc / kubernetes-ingress / blob / v1.7.0 / internal / - person hdhruna   schedule 26.05.2020