Andor
пфф
Huan
привет всем. подскажите где хранится конфиг nginx-ingress со конфигами всех ингресс правил?
Artyom
в инресс контроллере
Artyom
ищи под с именем nginx-ingress-controller, заходи в него kubectl exec -it <pod> /bin/bash
Artyom
И там ищи
Huan
спасибо. вижу, но там нет настроек, которые передаются в аннотации
Huan
хотя все что в аннотации было применено для одного правила - работает
Artyom
может аннотацию не так указал и он не понял, как её применять
Huan
так она применилась
Artyom
там надо писать явно, что аннотация для nginx ingress
Artyom
а, ну так если применилась, то в чем вопрос
Huan
nginx.ingress.kubernetes.io/client-body-buffer-size: 4m
Huan
а в файле - 1м
Huan
вопрос в том, где это смотреть в конфиге nginx?
Artyom
https://github.com/kubernetes/ingress-nginx/blob/master/docs/user-guide/nginx-configuration/annotations.md
Artyom
тут говорится, что nginx.ingress.kubernetes.io/client-body-buffer-size - это строка
Artyom
может её в кавычки надо?
Huan
указывал в кавычках
Artyom
хм
Huan
annotations: nginx.ingress.kubernetes.io/client-max-body-size: "4m" nginx.ingress.kubernetes.io/proxy-buffer-size: "16k"
Artyom
https://github.com/nginxinc/kubernetes-ingress/issues/246
Artyom
Вот, тут говорится, что не такая аннотация должна быть, может твой случай
Huan
а в конфиге на контроллере - client_max_body_size "1m";
Artyom
» make sure you're using the correct image. nginxdemos/nginx-ingress:1.1.1 is the image of this Ingress controller.
Huan
"image": "quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.10.2",
Artyom
И вот оттуда же ссылка https://github.com/nginxinc/kubernetes-ingress/tree/master/examples/customization Тут вообще аннотация nginx.org/client-max-body-size
Artyom
попробуй nginx.org/client-max-body-size
Huan
пробовал - так вообще не работает
Andor
вы не путайте nginx и nginxinc контроллеры
Artyom
Тогда не знаю, может конфиг не перепнулся и там старое значение осталось
Artyom
Хотя странно, должен перепнуться
Huan
но при этом правило работает
Valerii
Всем привет. Коллеги, а как на GKE правильно выставить наружу сервис через ingress, если сервис отвечает 301 на 80 порту (переадресовывает на 443). У меня из-за этого healthcheck фейлится и этот backend наружу не выставляется, соответственно
Valerii
На AWS можно было указать на LB какой код значит ок, т.е. например 200-399..
Valerii
и когда там healthcheck фейлился на все ноды, то трафик продолжали пускать на всё, а тут тупо закрывают
Stas
и когда там healthcheck фейлился на все ноды, то трафик продолжали пускать на всё, а тут тупо закрывают
Если ты используешь GKE ingress который на их HTTP/S LB сделан, то для него я не вижу возможности указать кастомный код ответа https://cloud.google.com/compute/docs/reference/rest/v1/httpsHealthChecks
Stas
Я бы наверное решал эту проблему через nginx-ingress перед которым обычный forwarding rule
Stas
ой я чет туплю кажись, можно же тот хелсчек удалить и натравить https healthcheck, не?
Dmytro
GKE. Я просто не совсем понимаю в их примере https://cloud.google.com/kubernetes-engine/docs/tutorials/persistent-disk В Step 6 они убивают pod и он пересоздаётся на другой ноде. Как он продолжает использовать диск с другой ноды?
вольюм примаунтится на другую ноду просто (с помощью драйвера вольюма для каждого клауд провайдера который идет в составе куба, в ашем случае - GKE)
Dmytro
Например Есть Nginx с конфигом из конфигмапа Поменял конфиг, как сделать, чтобы при helm upgrade изменения прилетели в nginx?
https://github.com/kubernetes/helm/blob/master/docs/charts_tips_and_tricks.md#automatically-roll-deployments-when-configmaps-or-secrets-change
Dmytro
АХТУНГ!!Народ, кто юзает MongoDB-replicaset в k8s? Серсис конектится к монге и пытается создать данные, но в итоге пишет ошибку, связанную с тем что он пишет в реплику. Как с этми боротся вообще в k8s?
я юзаю, нужно чтобы сервис всегда смотрел только на примари под (т.е. например с лейблом role=primary). Для этого я написал баш скриптик для примари дискавери который коннектится к каждому моду с монгой, определяет примари и вешает этому поду этот самый лейбл role=primary. Скрипт этот бежит в бесконечном цикле со sleep 5 или типа того в отдельном контейнере
Dmytro
Мужики, кто юзает это у себя? https://github.com/kubernetes/charts/tree/master/stable/mongodb-replicaset
я его взял за основу этак полтора года назад и допилил - с тех пор все работает норм
Valerii
ой я чет туплю кажись, можно же тот хелсчек удалить и натравить https healthcheck, не?
т.е. взять healthcheck, который будет смотреть на другой порт? так и делал на aws'е когда-то, лет 10 назад, пока не увидел, что кастомные коды можно прописывать. и почему такие базовые штуки не реализованы на GKE? :(
Dmytro
Джентльмены, логосрач. что нынче модное и трушное? ELK? EFK? ERK? graylog?
моднее всего слать в сторонний сервис типа loggly или logz.io
Sergei
Dmytro
я думал о том, что использовать переменные дженкинса, но меня почемуто смущает мысль привязываться к дженкинсу
храните с гите зашифрованные gpg (git-crypt, passwordstore), в переменных дженкинса нужно хранить ключ для дешифрации (так тот же флант делает, например только в гитлабе неправославном)
Dmytro
Dmytro
ой я чет туплю кажись, можно же тот хелсчек удалить и натравить https healthcheck, не?
а еще можно вообще убрать https из контейнера и отдать ssl offloading на откуп ингрессу или лоадбалансеру. Ну и/или сделать ещё все-таки норм healtcheck который имеет свой урл и может по хттп работать и заодно проверят что приложение действительно работает
Huan
nginx -T и смотрите что там оно нагенерировало
показывает то что и в конфиге, изменений нет (
Dmytro
значит не перегенерило конфиг
Dmytro
нужно глянуть логи этого контейнера - возможно ругается на аннотацию
Dmytro
там по умолчанию уровень логов может стоять низкий - надо его поднять
Huan
так прикол в том, что применилось все что было в аннотации
Dmytro
этого контейнера=ингресс контроллера
Dmytro
а сколько подов ингресс контроллера?
Dmytro
может в одном перегенерило конфиг а вдругом нет
Dmytro
в любом случае первым делом стоит попробовать удалить под нжинкс контроллера чтобы он пересоздался и с нуля сгенерил конфиг
Dmytro
(или поды если их много)
Huan
один
Huan
завтра попробую удалить
Denis
я его взял за основу этак полтора года назад и допилил - с тех пор все работает норм
Там оказалось у меня все гораздо проще. Там драйверу, конектора монги передал имя репликасета. И все нормально заработало. Но все равно спасибо за дельный совет!
Dmytro
👍 хорошо когда приложение умное и понимает когда репликасет и что надо делать в этом случае
Dmytro
мне вот пришлось костылить
Valerii
угу вместо http https healthcheck а про то чего в гцп нет это отдельная история например там нет нат
Нашел вот такое решение, похоже на то, что надо: GCE’s Ingress controller does not support redirect rules, but the documentation includes a solution. The backend Service must inspect the x-forwarded-proto header and redirect if the value is equal to http. if ($http_x_forwarded_proto = "http") { return 301 https://$host$request_uri; } The check MUST be for http. Although theoretically equivalent, if the check is written as if($http_x_forwarded != 'https') Google Cloud Load Balancer’s automated health checks will end up getting a 301 redirect and the backend will be considered unhealthy. 
Valerii
а еще можно вообще убрать https из контейнера и отдать ssl offloading на откуп ингрессу или лоадбалансеру. Ну и/или сделать ещё все-таки норм healtcheck который имеет свой урл и может по хттп работать и заодно проверят что приложение действительно работает
Вы, по-моему, не поняли: приложение/контейнер только на 80 порту доступно внутри кластера. ssl termination делает ingress gke. healthcheck url да тоже надо. Но есть интересный вариант с http_x_forwarded_proto = http. Люблю чекать так же, как внешний клиент, а не синтетические специальные healthcheck урлы, которые могут быть живыми, а приложение нет.
roquie
привет! никто не знает, почему конфиг-мап из файла монтируется папкой в под? другой json файл рядом, импортированный точно так-же и точно так-же подключенный в контенере как файл лежит. Что за магия?
roquie
тот-же самый файл, другой путь и примонтировало правильно....
Костя
хмм если вольюм примаунтить в инит контейнер тоже то он же не запустится пока вольюм не создался
Если посмотреть get event --watch во время создания, то порядок создания ресурсов такой: 1. pvc provision 2. attach succeed (Mount) 3. Init container image, pull/start 4. container image pull/start Конкретно в моем случае используется dynamic provision с Vsphere, k8s 1.9.5. Между вторым и третьим шагом вечный баг, первый mount всегда отваливается по timeout и дает FailedMount, но k8s считает это как warning. Видимо mount начинается, до того, как диск успеет замаунтиться к ноде. Как регулировать время этого timeout'a я не нашел. Баги на github открытые есть, т.к. со второй попытки все срабатывает, пока решил забить. Работает
Andor
> Люблю чекать так же, как внешний клиент это называется "тесты" > а не синтетические специальные healthcheck урлы, которые могут быть живыми, а приложение нет. а эта проблема не связана с ингрессом и вообще с кубернетисом
Костя
Коллеги, вопрос по helm. Почему при helm upgrade он тушит все поды разом, не смотря на то, что новые ещё не поднялись? Может я что то не понимаю? Даже kubectl set image работает, убивая только часть подов, ждёт пока поднимается новый pod, а только потом тушит и обновляет оставшиеся
Grigorii 🏖️
❓Всем привет, не подскажите как конфигурации использовать для разных сред, чтоб конфиг при деплое для нужной среды подставлялся в проекте❓
Nikolay
у меня бежит для этого sidecar контейнер
Спасибо, похоже пришло костылить)