Size: a a a

Kubernetes — русскоговорящее сообщество

2020 October 31

b

bob in Kubernetes — русскоговорящее сообщество
а nginx говорит, что все клиенты это ваш роутер?
источник

JL

Joe Lomakin in Kubernetes — русскоговорящее сообщество
bob
а nginx говорит, что все клиенты это ваш роутер?
В логах ингресса я вижу IP гейта, локальной сети
источник

JL

Joe Lomakin in Kubernetes — русскоговорящее сообщество
источник

b

bob in Kubernetes — русскоговорящее сообщество
на L4 у меня не вышло сделать то, что вы хотите. возможно вам помогут заголовки L7. что то типа X-Forwarded-For
источник

b

bob in Kubernetes — русскоговорящее сообщество
если цель посчитать уникальных пользователей или что то типа того
источник

c

corsars in Kubernetes — русскоговорящее сообщество
bob
на L4 у меня не вышло сделать то, что вы хотите. возможно вам помогут заголовки L7. что то типа X-Forwarded-For
О том и речь Даже дома apple capsule работает лучше микрота. Проброс порта работает именно как TCP порт-порт
источник

JL

Joe Lomakin in Kubernetes — русскоговорящее сообщество
bob
если цель посчитать уникальных пользователей или что то типа того
Да цель получить IP юзера, и для некоторых приложений настроить вайтлисты
источник

b

bob in Kubernetes — русскоговорящее сообщество
возможно проще приложениям дать разные имена и не пытаться угадать все ИП адреса в интернете?
источник

JL

Joe Lomakin in Kubernetes — русскоговорящее сообщество
Да, не так давно задавал вопрос о CORS как настроить, в итоге у меня завелась такая конструкция, кому надо пользуйтесь!
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
 annotations:
   kubernetes.io/ingress.class: nginx
   nginx.ingress.kubernetes.io/enable-access-log: "true"
   nginx.ingress.kubernetes.io/enable-rewrite-log: "true"
   nginx.ingress.kubernetes.io/proxy-body-size: 100m
   ingress.kubernetes.io/force-ssl-redirect: "true"
   nginx.ingress.kubernetes.io/configuration-snippet: |-
     if ($http_origin ~* (https?://.*\.site\.com)) {
      set $allow_origin $http_origin;
     }
     more_set_headers 'Access-Control-Allow-Origin: $allow_origin';
     more_set_headers 'Access-Control-Allow-Credentials: true';
     more_set_headers 'Access-Control-Allow-Methods: PUT, GET, PATCH, DELETE, POST, OPTIONS';
     more_set_headers 'Access-Control-Allow-Headers: DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
     # Cors Preflight methods needs additional options and different Return Code - UPDATED
     if ($request_method = 'OPTIONS') {
         more_set_headers 'Access-Control-Max-Age: 1728000';
         more_set_headers 'Content-Type: text/plain charset=UTF-8';
         more_set_headers 'Content-Length: 0';
         return 204;
     }
 name: ui-https-cors-ing
spec:
 tls:
 - hosts:
   - ui.site.com
   secretName: fullchain
 rules:
 - host: ui.site.com
   http:
     paths:
     - path: /
       backend:
         serviceName: node-user-info-svc
         servicePort: 8080
источник

GG

George Gaál in Kubernetes — русскоговорящее сообщество
Ты его знаешь ?
источник

АС

Антон Сенько... in Kubernetes — русскоговорящее сообщество
George Gaál
Ты его знаешь ?
Знаю, а что
источник

GG

George Gaál in Kubernetes — русскоговорящее сообщество
Joe Lomakin
Да я сначала манглом маркирую пакеты, а потом делаю dstnat
DST Nat не меняет src ip
источник

GG

George Gaál in Kubernetes — русскоговорящее сообщество
Антон Сенько
Знаю, а что
Помоги ему напрямую
источник

DS

Dmitry Sergeev in Kubernetes — русскоговорящее сообщество
Joe Lomakin
Да, не так давно задавал вопрос о CORS как настроить, в итоге у меня завелась такая конструкция, кому надо пользуйтесь!
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
 annotations:
   kubernetes.io/ingress.class: nginx
   nginx.ingress.kubernetes.io/enable-access-log: "true"
   nginx.ingress.kubernetes.io/enable-rewrite-log: "true"
   nginx.ingress.kubernetes.io/proxy-body-size: 100m
   ingress.kubernetes.io/force-ssl-redirect: "true"
   nginx.ingress.kubernetes.io/configuration-snippet: |-
     if ($http_origin ~* (https?://.*\.site\.com)) {
      set $allow_origin $http_origin;
     }
     more_set_headers 'Access-Control-Allow-Origin: $allow_origin';
     more_set_headers 'Access-Control-Allow-Credentials: true';
     more_set_headers 'Access-Control-Allow-Methods: PUT, GET, PATCH, DELETE, POST, OPTIONS';
     more_set_headers 'Access-Control-Allow-Headers: DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
     # Cors Preflight methods needs additional options and different Return Code - UPDATED
     if ($request_method = 'OPTIONS') {
         more_set_headers 'Access-Control-Max-Age: 1728000';
         more_set_headers 'Content-Type: text/plain charset=UTF-8';
         more_set_headers 'Content-Length: 0';
         return 204;
     }
 name: ui-https-cors-ing
spec:
 tls:
 - hosts:
   - ui.site.com
   secretName: fullchain
 rules:
 - host: ui.site.com
   http:
     paths:
     - path: /
       backend:
         serviceName: node-user-info-svc
         servicePort: 8080
что же творят люди =). При переезде на другой контроллер ingress все перестанет работать. Почему бы это не отдать на откуп приложению, пусть само этими корсами рулит, даже балально через nginx sidecar + будет вероятность сломать  сниппетами конфигурацию ingress nginx гораздо ниже
источник

k

kvaps in Kubernetes — русскоговорящее сообщество
Dmitry Sergeev
что же творят люди =). При переезде на другой контроллер ingress все перестанет работать. Почему бы это не отдать на откуп приложению, пусть само этими корсами рулит, даже балально через nginx sidecar + будет вероятность сломать  сниппетами конфигурацию ingress nginx гораздо ниже
поддержу, обычно само приложение умеет правильные CORS-заголовки выставлять, многие зачем-то пытаются переопределить их на nginx-ingress-controller
источник

DS

Dmitry Sergeev in Kubernetes — русскоговорящее сообщество
Joe Lomakin
Да, не так давно задавал вопрос о CORS как настроить, в итоге у меня завелась такая конструкция, кому надо пользуйтесь!
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
 annotations:
   kubernetes.io/ingress.class: nginx
   nginx.ingress.kubernetes.io/enable-access-log: "true"
   nginx.ingress.kubernetes.io/enable-rewrite-log: "true"
   nginx.ingress.kubernetes.io/proxy-body-size: 100m
   ingress.kubernetes.io/force-ssl-redirect: "true"
   nginx.ingress.kubernetes.io/configuration-snippet: |-
     if ($http_origin ~* (https?://.*\.site\.com)) {
      set $allow_origin $http_origin;
     }
     more_set_headers 'Access-Control-Allow-Origin: $allow_origin';
     more_set_headers 'Access-Control-Allow-Credentials: true';
     more_set_headers 'Access-Control-Allow-Methods: PUT, GET, PATCH, DELETE, POST, OPTIONS';
     more_set_headers 'Access-Control-Allow-Headers: DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
     # Cors Preflight methods needs additional options and different Return Code - UPDATED
     if ($request_method = 'OPTIONS') {
         more_set_headers 'Access-Control-Max-Age: 1728000';
         more_set_headers 'Content-Type: text/plain charset=UTF-8';
         more_set_headers 'Content-Length: 0';
         return 204;
     }
 name: ui-https-cors-ing
spec:
 tls:
 - hosts:
   - ui.site.com
   secretName: fullchain
 rules:
 - host: ui.site.com
   http:
     paths:
     - path: /
       backend:
         serviceName: node-user-info-svc
         servicePort: 8080
а зачем кстати more_set_headers а не провославный и нативный add_header. more_set_headers он же нужен для того, чтобы несколько заголовков в одну опцию накидывать, а у вас по заголовку на одну опцию, то есть тоже самое что и при add_header. Можно просто заменить на add_header и будет тоже самое.
источник

DS

Dmitry Sergeev in Kubernetes — русскоговорящее сообщество
Есть вероятность что при обновлении nginx ingress у вас more_set_headers сломается, так как это openresty конструкция, а его вроде как в последних версиях выпилили
источник

DS

Dmitry Sergeev in Kubernetes — русскоговорящее сообщество
kvaps
поддержу, обычно само приложение умеет правильные CORS-заголовки выставлять, многие зачем-то пытаются переопределить их на nginx-ingress-controller
+++
а если не умеет, то надо пнуть прогеров чтобы научили, или sidecar c nginx втыкать.  Если уж приложение требует спец. заголовки, то пусть их и выставляет само. Тащить это на балансировку L7 нет причин.
источник

GG

George Gaál in Kubernetes — русскоговорящее сообщество
kvaps
поддержу, обычно само приложение умеет правильные CORS-заголовки выставлять, многие зачем-то пытаются переопределить их на nginx-ingress-controller
Я буду не оригинален
источник

GG

George Gaál in Kubernetes — русскоговорящее сообщество
Но ингресс не нужен
источник