inqfen
Nginx отправил запрос на clusterip сервиса - ему никто не ответил - 503
Dmytro
ну не суть, в любом случае с graceful shutdown этого не произойдет
inqfen
Так же как и у обычного proxy nginx
inqfen
ну не суть, в любом случае с graceful shutdown этого не произойдет
Да, при обновлении деплойментов из коробки это и так решено
Dmytro
Nginx отправил запрос на clusterip сервиса - ему никто не ответил - 503
вот тут и вопрос - почему никто не ответил?
inqfen
вот тут и вопрос - почему никто не ответил?
Ну например этот деплоймент выкачен в первый раз
Dmytro
сделать нормальный инит процесс в контейнере, настроить rolling update - и такого не произойдет если приложение внутри контейнера не сломалось
inqfen
Или нода рестартанула, стоит политика всегда делать pull из репозитории, а он недоступен
Dmytro
Ну например этот деплоймент выкачен в первый раз
и? на него уже идет траффик при этом?
inqfen
и? на него уже идет траффик при этом?
На сервис да, но в нем не поднялся ни один под
Dmytro
Или нода рестартанула, стоит политика всегда делать pull из репозитории, а он недоступен
и что? в деплойменте минимум 2 реплики, ответит другая реплика если 1 недоступна
inqfen
Они с imagepullbackoff висят например
Dmytro
какие-то воображаемые проблемы
inqfen
и что? в деплойменте минимум 2 реплики, ответит другая реплика если 1 недоступна
Вообще деплоймент может быть и из одной во-первых, а во вторых может быть и больше одной ноды после рестарта
inqfen
У меня лично такая проблема была
Dmytro
Они с imagepullbackoff висят например
если все поды деплоймента умерли - ингресс должен ретраить до бесконечности?
Dmytro
Вообще деплоймент может быть и из одной во-первых, а во вторых может быть и больше одной ноды после рестарта
если он из одной то он не HA и так делать нельзя, что тут дальше говорить то
Dmytro
если у вас ноды пачками рестартятся то вам нужно даже не 2 реплики в деплойменте держать а побольше
inqfen
если он из одной то он не HA и так делать нельзя, что тут дальше говорить то
Ситуация была - 2 реплики на двух воркерах, оба рестартанули, но image недоступен
inqfen
если у вас ноды пачками рестартятся то вам нужно даже не 2 реплики в деплойменте держать а побольше
Это был кластер для тестинга, я быстро починил, но я к тому, что вообще такая ситуация возможна
Dmytro
и кстати не нужно юзать Always - юзайте IfNotPresent, зачем вообще нужен Always в нормальной ситуации с тегированными релизами? Это костыль для поклонников latest
Dmytro
в нормально настроенном кластере и деплойменте вероятность эо какие-то десятые доли процента
Dmytro
Спасибо, буду знать где копать
2000 доменов на один ингресс контроллер это ненормально, я бы на вашем месте подумал об использовании нескольких ингрес контроллеров
Dmytro
ну вот, не там у вас проблема
Dmytro
сделайте нормальный ci/cd, IfNotPresent, 2+ htgkbrb? нормальный graceful shutdown
Dmytro
а не искать решение воображаемых проблем
Dmytro
Потому что хуком не может быть ничего, кроме джоба
ммм так джоба создаст конфиг мап и секрет и завершится, дальше стартанет деплоймент
Dmytro
конфиг мап и секрет останутся
V 🏴‍☠️
ммм так джоба создаст конфиг мап и секрет и завершится, дальше стартанет деплоймент
А если надо изменить конфигмап, а джоба только при инсталле?
Dmytro
в смысле изменить? давайте уже детали - что там в конфигмапе и почему это не пложить манифестом в хелм чарт?
V 🏴‍☠️
Это уже отойдёт от темы, у меня был конкретный вопрос
Alexander
как будто эти попугаи покрытия строк кода что-то гарантируют, смешно же
Это как говорят в высшей математике - необходимое, но конечно же не достаточное условие. Просто если куча кода не проверялась автотестами, то там целый кошатник котов Шредингера
Dmytro
конкретный вопрос - я хочу странного, не хочу делать как другие люди, плохие опенсорсные тулзы такого не умеют? ну ок
Dmytro
Это как говорят в высшей математике - необходимое, но конечно же не достаточное условие. Просто если куча кода не проверялась автотестами, то там целый кошатник котов Шредингера
а если проверялось то создается ложное чувство защищенности, есть немало статей на эту тему и почему покрытие кода выше 80% это плохо
Dmytro
не нужно смотреть на попугаи - нужно смотреть на сами тесты
Alexander
Это да. Покрытие по use cases гораздо важнее
Armen
2000 доменов на один ингресс контроллер это ненормально, я бы на вашем месте подумал об использовании нескольких ингрес контроллеров
То есть разбивать на несколько nginx ingress классов с реальными ip? У меня есть такая разбивка, но она работает для наших партнёров.
Alexander
Но учитывая, что еще полгода назад был страшный баг: поменялось число нод в кластере -> слетели Sec Groups на Network Load Balncer -> внешний траффик в Ingress не входит. То тут слабо верится в хорошее покрытие не большим числом тестов )
V 🏴‍☠️
Гитлаб
Solyar
Как вариант можете сделать условие {{ - if .Values.install equals "true" }} и передавать при helm install —set install=true/false
Solyar
Первое что в голову пришло
V 🏴‍☠️
Для этого надо руками постоянно ci переписывать
V 🏴‍☠️
Хельм определённо должен уметь понимать свои состояния, не просто так там есть хуки с *-install и *-upgrade
Pavel
я что-то не понял, нужно одновременно запускать и не запускать?
G72K
Alexander
А про pre / post-install хуки Helm уже советовали?
V 🏴‍☠️
я что-то не понял, нужно одновременно запускать и не запускать?
Нужно запускать джоб, но не хуком, ибо запускаться должен во время отработки чарта, а не до и не после
V 🏴‍☠️
А про pre / post-install хуки Helm уже советовали?
Изначально сказал, что мне не хук нужен
Pavel
kind: Job metadata: name: {{ .Chart.Name }}-populate-mysql-{{ randAlphaNum 5 | lower }} Всегда запустится при деплое и апгрейде
Nikolai
Друзья. В kuber можно несколько ip в под? Типа ip add для обычной системы?
Pavel
зачем?
Nikolai
Exim несколько mx
Nikolai
Спасибо.
G72K
https://github.com/intel/multus-cni
Наверняка захочется ИП из одной сети. Я б через роутеры/bgp такое делал а внутри пода ловить все входящие через iptables -j REDIRECT какой нибудь
inqfen
Я бы вообще почту не стал тащить в куб
Timofey
Тут поднимали тему про отличия werf от helm, мы накатали небольшую статью про отличия: https://werf.io/documentation/reference/deploy_process/differences_with_helm.html
inqfen
а werf умеет в blue - green?
inqfen
типа поднять новые ресурсы, временный ингресс, прогнать тесты - переключить ингресс на новые ресурсы
inqfen
Я просто такое ансиблом костылил
inqfen
А хельм в логику не умеет(
Igor
https://www.youtube.com/watch?v=mmvSzDEw-JI посмотрите такую штуку, например
Igor
единственное что - "прогнать тесты" подобные тулзы вам не предложат, придется самому траффик мирроринг делать, или натравливать E2E на новую версию
OLeG
Timofey
типа поднять новые ресурсы, временный ингресс, прогнать тесты - переключить ингресс на новые ресурсы
мне кажется такую логику можно сделать поверх верфа, держать 2 релиза, ингресс переключать не через верф, а отдельно kubectl-ем
Aleksey
господа а что за нафиг? почему я не могу в helm в range сделать define ? я этим разрушу вселенную ? хочу в values сделать myvar: a: {} b: {} а в _helpers.tpl {{- range $myvar, $value := .Values.myvar }} {{- define "test.$myvar" -}} {{- printf "%s-%s-%s" .Release.Name "test" $myvar | trunc 63 | trimSuffix "-" -}}{{- end }} {{- end }} но так отчего то нельзя. unexpected <define> in command
Dmytro
Документация gotpl ответит на этот вопрос
Aleksey
Документация gotpl ответит на этот вопрос
это абстрактное знание или будет подтверждено ссылкой ?
Dmytro
Думаю ссылку на офф доку gotpl легко нагуглить, не говоря уже о том что она прилинкована в доке хелма...
Aleksey
а. спасибо что подсказали.
Vitalii
Всем привет. Скажите, есть какой то способ прокинуть http запрос через лоад балансер (aws) именно к конкретному поду, ну или отя бы просто прокинуть мимо лоад балансера?
Yuri
kubectl proxy ?
Yuri
мимо всего до пода
Gunslinger
kubectl proxy ?
а прокся разве умеет пробрасывать до пода а не до сервиса / папки? чет я не нашел примеров
Yuri
Всё верно, только до сервиса. А kubectl port-forward до пода, пример тут https://kubernetes.io/docs/tasks/access-application-cluster/port-forward-access-application-cluster/
Алексей
Port-forward можно сделать