G72K
Пока я не переизобрел велосипед, подскажите бывает ли что-то вроде oauth_proxy только наоборот: для каждого входящего запроса оно инжектит ацесс токен, за которым следит и периодически обновляет. Вообщем чтобы запускать сайдкаром и приложение по щелчку пальцев научилось ходить через всякие apigateway с аутентификацией
Vadim
но оно гвоздями прибито к кубеням
G72K
похоже на https://github.com/brancz/kube-rbac-proxy/
Нет, оно из той же оперы что и oauth_proxy, позволяет добавить oauth к бекенду без переписывания. Я же хочу добавить oauth к клиенту без переписывания :)
dzmitry
Привет, не до конца понимаю принцип деплоя: есть локальный кластер с двумя нодами + мастер (service: nodePort + ingress nginx), когда я деплою приложение оно может деплоится либо на нод1 либо нод2 соответственно это разные ip. Как правильно привязать ip к конкретному домену если например при следующем деплое смениться нода и соответственно ip?
dzmitry
спасибо
Fidelina
Весь день бьюсь и вот уже ночь, просто запуская image с приложением на swagger средствами докера - все работает в поде кубера - отвечает, работает
Fidelina
но api должна работать по адресу planeta.gasu-development.ibs.ru/api
Fidelina
и если туда перенаправить и провеить http://planeta.gasu-development.ibs.ru/api/swagger/index.html
Fidelina
не работает
Fidelina
вот кусок ingress - host: planeta.gasu-development.ibs.ru http: paths: - backend: serviceName: api-planeta servicePort: api-5000 path: /api
Fidelina
Курлить из пода пробовал?
да, работает внутри пода
Yuri
странный сервис порт, вроде должен быть просто порт без названий
ᴅⁱᵐⁱᴅʳ0ˡ
Из любого другого пода попробуй курлануть
Fidelina
он работает если направить его на отдельный свой домен
Fidelina
но не работает как домен/api
Fidelina
* не доступно приложение * - host: planeta.gasu-development.ibs.ru http: paths: - backend: serviceName: api-planeta servicePort: api-5000 path: /api
Fidelina
*доступно приложение * - host: api.gasu-development.ibs.ru http: paths: - backend: serviceName: api-planeta servicePort: api-5000 path: /
ᴅⁱᵐⁱᴅʳ0ˡ
Апи внутри контейнера по корню доступну или с префиксом апи?
Игорь
ᴅⁱᵐⁱᴅʳ0ˡ
Юзай реврайт в ингресе
Fidelina
не понимаю...
ᴅⁱᵐⁱᴅʳ0ˡ
apiVersion: extensions/v1beta1 kind: Ingress metadata: annotations: nginx.ingress.kubernetes.io/rewrite-target: /$2 name: portal-in namespace: online-platform spec: tls: - hosts: - portal.ru secretName: portal-tls-secret rules: - host: portal.ru http: paths: - backend: serviceName: front-svc servicePort: 80 path: /static/base/(/|$)(.*)
Fidelina
kind: Ingress metadata: annotations: nginx.ingress.kubernetes.io/rewrite-target: /$2 name: rewrite labels: app: olap-ingress component: core name: api-ingress namespace: planeta spec: rules: - host: planeta.gasu-development.ibs.ru http: paths: - backend: serviceName: api-planeta servicePort: api-5000 path: /api(/|$)(.*)
Fidelina
кажется должно быть вот так
Fidelina
но тоже не срабатывает
Игорь
nginx.ingress.kubernetes.io/use-regex: "true" еще добавь
Fidelina
kind: Ingress metadata: annotations: nginx.ingress.kubernetes.io/rewrite-target: /$2 nginx.ingress.kubernetes.io/use-regex: 'true' creationTimestamp: '2019-07-19T22:46:46Z' generation: 1 labels: app: api-ingress component: core name: api-ingress namespace: planeta spec: rules: - host: planeta.gasu-development.ibs.ru http: paths: - backend: serviceName: api-planeta servicePort: api-5000 path: /api(/|$)(.*)
Fidelina
и вот по этому адресу http://planeta.gasu-development.ibs.ru/api/swagger/index.html не получаю картинку
Fidelina
на отдельном домене
Fidelina
Fidelina
на отдельном домене все норм
Fidelina
нужно чтобы по ссылке http://planeta.gasu-development.ibs.ru доступен фронт
Fidelina
а по http://planeta.gasu-development.ibs.ru/api/swagger/index.html доступен api
Fidelina
это 2 отдельных приложения
Fidelina
в поде приложения api не используется /api префикс и вроде норм написан ингресс....
Игорь
вытащи nginx.conf из ингресс-контроллера через kubectl cp, найди там нужный location и rewrite и посмотри, что не так
Fidelina
мне точно не вот такая штука нужна?
Fidelina
apiVersion: extensions/v1beta1 kind: Ingress metadata: annotations: nginx.ingress.kubernetes.io/app-root: /app1 name: approot namespace: default spec: rules: - host: approot.bar.com http: paths: - backend: serviceName: http-svc servicePort: 80 path: /
Игорь
app-root наоборот тебе сделает редирект с корня на /app1
Fidelina
с корня ссылки?
Fidelina
Fidelina
а не на api(
Fidelina
через роут эта фигня не заработает?
Fidelina
роут тоже не оно
Fidelina
apiVersion: route.openshift.io/v1 kind: Route metadata: labels: name: api-planeta name: api-planeta namespace: planeta spec: host: planeta.gasu-development.ibs.ru path: /api port: targetPort: api-5000 to: kind: Service name: api-planeta weight: 100 wildcardPolicy: None
Dmytro
Подскажите, можно чарту в условиях указать, чтоб он выполнялся только при helm install?
это же pre-install или post-install хук https://github.com/helm/helm/blob/master/docs/charts_hooks.md#hooks
V 🏴‍☠️
Мне надо ни перед, ни после
V 🏴‍☠️
Мне надо во время
Dmytro
Если сервис обслуживает http-запросы и в момент деплоя летят POST-ы - будут 502-е
если сделать нормально graceful shutdown поду (чтобы инит процесс слушал сигналы и завершался) то не будет никаких 500
Dmytro
Мне надо во время
если расскажете больше подробностей то мы сможем подсказать варианты. А так пока звучит я хочу странного, почему же это еще никто не реализовал 🙂
V 🏴‍☠️
если расскажете больше подробностей то мы сможем подсказать варианты. А так пока звучит я хочу странного, почему же это еще никто не реализовал 🙂
У меня есть джоб, который запускается НЕ хуком, ибо джоб выполняет действия с монтированием конфигмапов и секретов. Выполняться он должен в процессе выполнения чарта, чтоб деплоймент смог пользоваться результатами выполнения джоба. Хуки хельма из вышесказанного не катят. Знаю, что есть возможность в условиях ({{ if .ololo.state }}) задавать запускать ли часть чарта, собственно так и делаю, если в values нет каких оо параметрах, это нормальная практика. Так вот мне интересно, есть ли возможность подобными условиями реализовать проверку того, устанавливается чарт или апгрейдится. Я не говорю, что прям хочу, мне просто интересна сама возможность такого поведения
Отделение Bereke Bank
Dmytro
я хочу использовать один шаблон для всех приложений, но мне нужно выдавать лимиты не в values а в темлейте
один шаблон дял всех приложения это антипаттерн же. Но есть паттерн по передаче ресурсов из values.yaml при установке чарта: https://github.com/helm/charts/blob/master/stable/mongodb/values.yaml#L173 https://github.com/helm/charts/blob/master/stable/mongodb/templates/statefulset-primary-rs.yaml#L191 можно его использовать
Dmytro
Но если ингрес успел послать POST запрос в дохнущий под - будет 502
нет не будет, ингресс не пошлет запрос на под который не ready
Dmytro
FROM centos:latest
это вы батенька хипстер - FROM centos:7 же (90% имейджей в текущей компании)
inqfen
нет не будет, ингресс не пошлет запрос на под который не ready
Ну, ингресс если уж на то пошло, вообще на поды запрос не шлёт
inqfen
А если все поды дохлые, то будет 503
Dmytro
Нет, оно из той же оперы что и oauth_proxy, позволяет добавить oauth к бекенду без переписывания. Я же хочу добавить oauth к клиенту без переписывания :)
наверное с помощью nginx proxy_set_header и функцией на луа которая ходит куда-то за токеном можно накостылить
Dmytro
Ну, ингресс если уж на то пошло, вообще на поды запрос не шлёт
это настраивается, он может слать на сервис
Dmytro
А если все поды дохлые, то будет 503
будет 503 но от default backend ингресс контроллера
Dmytro
в-общем, это же решенная задаче - rolling update без потерянных запросов (потерянных - с 500 ответом)
inqfen
Не, от default backend только 404
inqfen
503 от самого пода ингресса из демонсета