kay
но это только если инфраструктура умеет vrrp
yolkov
все равно не очень красиво, т.к. весть траф между кубом и остальной инфрастурктурой будет идти через одну точку
kay
а сейчас он как идет?
Etki
Напомните, сервису же нельзя присвоить "нормальный" порт на ноде (e.g. 80), только из эфемерного диапазона?
yolkov
внутри инрструктуры все сревисы в одной сети
kay
@etkee можно. используй hostPort как в ingress. https://github.com/kubernetes/contrib/blob/master/ingress/controllers/nginx/examples/daemonset/as-daemonset.yaml#L39..L40
yolkov
я не говорю чтобы открыть доступ из интернета, а имено один сервис из например 50 серверов должны ходить в кубе
Etki
В общем, так или иначе, ты можешь сделать любой сервис доступным снаружи на каждой ноде
Etki
возможно, порт останется где-то высоко, и потребуется вручную проксировать чем-то
Etki
но если твоя задача разделить трафик и никак иначе, то можешь попробовать так
kay
@yolkov я очень смутно понимаю о чем ты говоришь. обычные сервисы то у тебя наверняка на ноде. и если эта нода сдохнет, то сервис тоже окажется неработоспособным
yolkov
я могу по идее на сетевом оборудовании настроить достпность ИП контейнеров и с сетью остальной инфраструктуры
kay
если хочешь отказоустойчивости - используй keepalived и прочие load balancer'ы
yolkov
сервисы у меня размазаны по нескольким нодам
Etki
сервисы у меня размазаны по нескольким нодам
сервис у тебя существует на каждой ноде. контейнеры, к которым он стучится - другое дело
yolkov
а вот связность ВИРТУАЛЬНОЙ сети сервисов просто не реализовать
kay
хочешь чтобы без ingress - делай как в этом примере: https://github.com/kubernetes/contrib/blob/master/ingress/controllers/nginx/examples/daemonset/as-daemonset.yaml#L39..L40 - но учти, что только один сервис сможет слушать этот порт на ноде. и никакого rolling upgrade
Anonymous
а расскажите про persistenvolumes? правильно ли я понимаю что это абстракция над стораджами? и например если я создасю в GCE pvc=>pv то создается диск в гугле?
Anonymous
то есть я тупо конфигурирую себе хранилища не задумываясь под каким облаком?
Anonymous
$ kubectl get pv NAME CAPACITY ACCESSMODES STATUS CLAIM REASON AGE pvc-380493c8-870c-11e6-9b8a-42010af00085 8Gi RWO Bound default/ci-jenkins 9m
Anonymous
ммм, вот тут если default/ci-jenkins умрет то ресурс удалится?
Etki
В том числе. Если грубо, пользователь кластера запрашивает ресурсы, а задача выполнить эти требования уходит к администратору кластера, в случае интеграции с облачным провайдером послеждний может сам выписывать PV
Anonymous
но запросил-то деплоймент - то есть если поды внутри деплоймента передохнут то сторадж останется? только если я деплоймент удалю сторадж удалится, так?
Etki
Т.е. администратор так или иначе предоставляет куски хранилища, а они потом привязываются к pvc. Пока живет pvc - этот кусок принадлежит ему (надеюсь, не наврал).
Etki
Скорее всего зависит от того, где PVC объявлен, но проще всего либо попробовать руками на тестовом поде, либо дождаться точно знающих людей.
Etki
Сам PV при этом уже не удалится, насколько понимаю
Artem
почему может не отрабатывать такое правило apiVersion: extensions/v1beta1 kind: Ingress metadata: name: echomap spec: rules: - http: paths: - path: / backend: serviceName: myservicename servicePort: 3000
Artem
?
Alexander
а сервис такой есть? или ошибку какую-то выдает?
Alexander
хоста нет
Artem
сервис есть, а по идее если хост не указываешь, то он любой будет, да и если указывал хост то все равно не работает а кидает на default-backend
Artem
а не на сервис
Alexander
а ты ручками заводишь?
Artem
ошибок тоже вроде нет все работает
Artem
да, а как то еще можно?
Alexander
через api
Artem
это как?
Alexander
у k8s есть api, сам kubectl через него работает
Alexander
смотри есть endpoint у сервиса
Alexander
смотри логи самого nginx
Artem
в логах он в основном ходит на /healthz
Dmitry
Парни, а кто как ограничивает доступ к сервисам через ingress? Вот допустим у меня в кубике апп, который должен быть доступен внешнему сервису, но ни кому более.. SSL прикручивать?
Etki
я не уверен, что это проблемы ингресса и самого куба вообще
Etki
по-хорошему приложение должно само аутентификацией и авторизацией заниматься
Etki
можно просто руками htpasswd засунуть в промежуточный nginx, если бы сейчас такая задача стояла, сделал бы так
Dmitry
есть вариант ограничивать доступ по самоподписанному tls сертификату.. Но хотелось бы узнать об альтернативе
Etki
я ей-богу давно копался в криптографии, но самоподписанный сертификат на HTTP по идее никак не запретит клиентам слать туда запросы
Dmitry
Если хендшейк не пройдет, то и тунеля не будет
Dmi3y
С TLS это решается через Mutual Auth, когда клиент тоже отправляет сертификат
Etki
А как он не пройдет-то? В сертификате же нет поля "запретить клиентам Х,Y,Z проводить хендшейк".
Dmi3y
А просто сертификат некорректный можно заигнорировать.
Dmitry
Клиент может, конечно.. Это его право. Однако на стороне сервера говорим, что это обязательное требование
Dmi3y
А так можно сказать на сервере?
Etki
Обязательное требование игнорировать сертификат сервера, потому что он самоподписанный?
Dmi3y
У того же curl есть флаг --insecure, который позволяет забить на все некорректные требования сервера
Etki
Если бы это было вообще возможно, то твой нужный клиент не смог бы подрубиться, потому что его точно так же резал бы сертификат
Dmi3y
Так вот, нужный механизм называется Mutual Auth, он есть искаропки
Dmi3y
В том же nginx делается так
Dmi3y
ssl_trusted_certificate /etc/nginx/ca.crt; ssl_client_certificate /etc/nginx/ca.crt; ssl_verify_client on;
Dmi3y
нужен какой-то из первых двух параметров и третий
Dmi3y
Тогда при хендшейке сервер запрашивает у клиента сертификат. Если он подписан тем ca, то его пропустят дальше
Dmitry
Да, именно так.. мы на проде на хапроксях это используем
Dmi3y
Значит вы уже имеете всё нужное, чтобы пускать избранные сервисы.
Dmitry
Да, конечно.. я о чем и спрашиваю. Делал ли кто-то подобное с ингресс nginx?
kay
@dshmelev авторизация?
kay
как создать auth secret для ingress: https://github.com/kubernetes/contrib/tree/master/ingress/controllers/nginx/examples/auth и вот так оно используется на примере kibana (см Example of an ingress controller to get an access from outside): https://github.com/kayrus/elk-kubernetes
Artem
а при создание nginx-ingrees-constoller когда создаю rc-default ему надо expose делать и type=LoadBalancer?
Dmitry
Нет
Artem
а как он с наружи будет виден?
kay
там пробрасывается порт наружу как docker -p 80:80 -p 443:443
Artem
т.е к нему нужно по ExternalIP стучаться?
kay
для того он и создан
Artem
ну а если он ен может достучаться по не му, как узнать почему?
kay
логи пода посмотреть
Nick
Привет, коллеги. Подскажите пожалуйста, как правильно перевести "Kubernetes executor" на русский? Есть какой-нибудь устоявшийся термин? (Контекст: третий абзац https://about.gitlab.com/2016/09/22/gitlab-8-12-released/)
kay
вопрос на миллион
Etki
лучше "клиент kubernetes" и "интеграция с kubernetes" ничего в голову не приходит.
Artem
@kay_rus в логах пода только 100.96.2.1 - [100.96.2.1] - - [01/Oct/2016:13:10:41 +0000] "GET /login HTTP/1.1" 200 8788 "http://ip/healthz" "Go-http-client/1.1" 159 0.026 100.96.2.39:3000 48433 0.026 200
Nick
@etkee ок, попробую с этим что-то сформулировать.
kay
@a_hillo уже хорошо.