@kubernetes_ru

Страница 68 из 958
kay
30.09.2016
12:38:32
@yolkov вот ингресс как раз и роутит внутренние адреса для внешних клиентов

yolkov
30.09.2016
12:39:31
какой ИП назначается для ингрес? ип хоста на котором запущен ингрес контролер?

kay
30.09.2016
12:39:42
да

yolkov
30.09.2016
12:40:14
а если хост с ингрес котролером упадет?

Google
kay
30.09.2016
12:40:26
для этого есть keepalived

запускаешь ingress как daemonset и он работает на всех нодах. а keepalived прозрачно меняет VIP если мастер падает

но это только если инфраструктура умеет vrrp

yolkov
30.09.2016
12:42:32
все равно не очень красиво, т.к. весть траф между кубом и остальной инфрастурктурой будет идти через одну точку

kay
30.09.2016
12:42:58
а сейчас он как идет?

Fike
30.09.2016
12:43:22
Напомните, сервису же нельзя присвоить "нормальный" порт на ноде (e.g. 80), только из эфемерного диапазона?

yolkov
30.09.2016
12:43:22
внутри инрструктуры все сревисы в одной сети

kay
30.09.2016
12:44:45
@etkee можно. используй hostPort как в ingress. https://github.com/kubernetes/contrib/blob/master/ingress/controllers/nginx/examples/daemonset/as-daemonset.yaml#L39..L40

yolkov
30.09.2016
12:44:46
я не говорю чтобы открыть доступ из интернета, а имено один сервис из например 50 серверов должны ходить в кубе

Fike
30.09.2016
12:44:54
В общем, так или иначе, ты можешь сделать любой сервис доступным снаружи на каждой ноде

возможно, порт останется где-то высоко, и потребуется вручную проксировать чем-то

но если твоя задача разделить трафик и никак иначе, то можешь попробовать так

kay
30.09.2016
12:46:24
@yolkov я очень смутно понимаю о чем ты говоришь. обычные сервисы то у тебя наверняка на ноде. и если эта нода сдохнет, то сервис тоже окажется неработоспособным

Google
yolkov
30.09.2016
12:46:50
я могу по идее на сетевом оборудовании настроить достпность ИП контейнеров и с сетью остальной инфраструктуры

kay
30.09.2016
12:46:59
если хочешь отказоустойчивости - используй keepalived и прочие load balancer'ы

yolkov
30.09.2016
12:47:12
сервисы у меня размазаны по нескольким нодам

Fike
30.09.2016
12:47:34
сервисы у меня размазаны по нескольким нодам
сервис у тебя существует на каждой ноде. контейнеры, к которым он стучится - другое дело

yolkov
30.09.2016
12:47:48
а вот связность ВИРТУАЛЬНОЙ сети сервисов просто не реализовать

kay
30.09.2016
12:48:11
хочешь чтобы без ingress - делай как в этом примере: https://github.com/kubernetes/contrib/blob/master/ingress/controllers/nginx/examples/daemonset/as-daemonset.yaml#L39..L40 - но учти, что только один сервис сможет слушать этот порт на ноде. и никакого rolling upgrade

Andrey
30.09.2016
12:54:49
а расскажите про persistenvolumes? правильно ли я понимаю что это абстракция над стораджами? и например если я создасю в GCE pvc=>pv то создается диск в гугле?

то есть я тупо конфигурирую себе хранилища не задумываясь под каким облаком?

$ kubectl get pv NAME CAPACITY ACCESSMODES STATUS CLAIM REASON AGE pvc-380493c8-870c-11e6-9b8a-42010af00085 8Gi RWO Bound default/ci-jenkins 9m

ммм, вот тут если default/ci-jenkins умрет то ресурс удалится?

Fike
30.09.2016
12:58:52
В том числе. Если грубо, пользователь кластера запрашивает ресурсы, а задача выполнить эти требования уходит к администратору кластера, в случае интеграции с облачным провайдером послеждний может сам выписывать PV

Andrey
30.09.2016
12:59:32
но запросил-то деплоймент - то есть если поды внутри деплоймента передохнут то сторадж останется? только если я деплоймент удалю сторадж удалится, так?

Fike
30.09.2016
13:00:01
Т.е. администратор так или иначе предоставляет куски хранилища, а они потом привязываются к pvc. Пока живет pvc - этот кусок принадлежит ему (надеюсь, не наврал).

Скорее всего зависит от того, где PVC объявлен, но проще всего либо попробовать руками на тестовом поде, либо дождаться точно знающих людей.

Сам PV при этом уже не удалится, насколько понимаю

Artem
01.10.2016
10:26:37
почему может не отрабатывать такое правило apiVersion: extensions/v1beta1 kind: Ingress metadata: name: echomap spec: rules: - http: paths: - path: / backend: serviceName: myservicename servicePort: 3000

?

Alexander
01.10.2016
10:28:19
а сервис такой есть? или ошибку какую-то выдает?

хоста нет

Artem
01.10.2016
10:29:49
сервис есть, а по идее если хост не указываешь, то он любой будет, да и если указывал хост то все равно не работает а кидает на default-backend

Google
Artem
01.10.2016
10:30:06
а не на сервис

Alexander
01.10.2016
10:30:36
а ты ручками заводишь?

Artem
01.10.2016
10:30:36
ошибок тоже вроде нет все работает

да, а как то еще можно?

Alexander
01.10.2016
10:31:00
через api

Artem
01.10.2016
10:31:12
это как?

Alexander
01.10.2016
10:32:55
у k8s есть api, сам kubectl через него работает

смотри есть endpoint у сервиса

смотри логи самого nginx

Artem
01.10.2016
10:38:13
в логах он в основном ходит на /healthz

Dmitry
01.10.2016
11:41:13
Парни, а кто как ограничивает доступ к сервисам через ingress? Вот допустим у меня в кубике апп, который должен быть доступен внешнему сервису, но ни кому более.. SSL прикручивать?

Fike
01.10.2016
11:42:32
я не уверен, что это проблемы ингресса и самого куба вообще

Fike
01.10.2016
11:42:50
по-хорошему приложение должно само аутентификацией и авторизацией заниматься

можно просто руками htpasswd засунуть в промежуточный nginx, если бы сейчас такая задача стояла, сделал бы так

Dmitry
01.10.2016
11:44:24
есть вариант ограничивать доступ по самоподписанному tls сертификату.. Но хотелось бы узнать об альтернативе

Fike
01.10.2016
11:45:18
я ей-богу давно копался в криптографии, но самоподписанный сертификат на HTTP по идее никак не запретит клиентам слать туда запросы

Dmitry
01.10.2016
11:47:21
Если хендшейк не пройдет, то и тунеля не будет

Dmi3y
01.10.2016
11:47:53
С TLS это решается через Mutual Auth, когда клиент тоже отправляет сертификат

Fike
01.10.2016
11:47:58
А как он не пройдет-то? В сертификате же нет поля "запретить клиентам Х,Y,Z проводить хендшейк".

Dmi3y
01.10.2016
11:48:10
А просто сертификат некорректный можно заигнорировать.

Google
Dmitry
01.10.2016
11:49:49
Клиент может, конечно.. Это его право. Однако на стороне сервера говорим, что это обязательное требование

Dmi3y
01.10.2016
11:50:15
А так можно сказать на сервере?

Fike
01.10.2016
11:50:19
Обязательное требование игнорировать сертификат сервера, потому что он самоподписанный?

Dmi3y
01.10.2016
11:50:41
У того же curl есть флаг --insecure, который позволяет забить на все некорректные требования сервера

Fike
01.10.2016
11:51:00
Если бы это было вообще возможно, то твой нужный клиент не смог бы подрубиться, потому что его точно так же резал бы сертификат

Dmi3y
01.10.2016
11:51:33
Так вот, нужный механизм называется Mutual Auth, он есть искаропки

В том же nginx делается так

ssl_trusted_certificate /etc/nginx/ca.crt; ssl_client_certificate /etc/nginx/ca.crt; ssl_verify_client on;

Admin
ERROR: S client not available

Dmi3y
01.10.2016
11:52:10
нужен какой-то из первых двух параметров и третий

Тогда при хендшейке сервер запрашивает у клиента сертификат. Если он подписан тем ca, то его пропустят дальше

Dmitry
01.10.2016
11:57:52
Да, именно так.. мы на проде на хапроксях это используем

Dmi3y
01.10.2016
11:58:52
Значит вы уже имеете всё нужное, чтобы пускать избранные сервисы.

Dmitry
01.10.2016
12:01:19
Да, конечно.. я о чем и спрашиваю. Делал ли кто-то подобное с ингресс nginx?

kay
01.10.2016
12:02:51
@dshmelev авторизация?

как создать 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
01.10.2016
12:41:26
а при создание nginx-ingrees-constoller когда создаю rc-default ему надо expose делать и type=LoadBalancer?

Dmitry
01.10.2016
12:47:54
Нет

Artem
01.10.2016
12:48:19
а как он с наружи будет виден?

kay
01.10.2016
12:51:31
там пробрасывается порт наружу как docker -p 80:80 -p 443:443

Google
Artem
01.10.2016
12:52:28
т.е к нему нужно по ExternalIP стучаться?

kay
01.10.2016
12:52:41
для того он и создан

Artem
01.10.2016
12:57:44
ну а если он ен может достучаться по не му, как узнать почему?

kay
01.10.2016
13:01:25
логи пода посмотреть

Nick
01.10.2016
13:02:22
Привет, коллеги. Подскажите пожалуйста, как правильно перевести "Kubernetes executor" на русский? Есть какой-нибудь устоявшийся термин? (Контекст: третий абзац https://about.gitlab.com/2016/09/22/gitlab-8-12-released/)

kay
01.10.2016
13:04:39
вопрос на миллион

Fike
01.10.2016
13:05:49
лучше "клиент kubernetes" и "интеграция с kubernetes" ничего в голову не приходит.

Artem
01.10.2016
13:11:59
@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
01.10.2016
13:12:46
@etkee ок, попробую с этим что-то сформулировать.

kay
01.10.2016
13:23:24
@a_hillo уже хорошо.

Artem
01.10.2016
13:45:00
))

Andrey
01.10.2016
13:52:03
Дак какие бенефиты ингресс дает по сравнению с нгинксом фронтендом?

и заодно чтоб два раза не вставать: предположим я создаю ingress controller (nginx) и ingress в одном неймспейсе... как-то можно сделать доступ к сервисам в разных неймспейсах? предположим по роуту "GET /" дергаются поды сервиса в production неймспейсе, а по роуту "GET /test" дергаются в staging? так по дефолту, или ingress имеет доступ только в пределах неймспейса?

Alexander
01.10.2016
15:46:37
из примеров rc-default.yaml запускаешь в default namespace

а ingress уже в другой namespace

Andrey
01.10.2016
15:48:16
из каких примеров?

Alexander
01.10.2016
15:48:30
которые тебе недавно кидали :))

https://github.com/kubernetes/contrib/tree/master/ingress/controllers/nginx/examples
https://github.com/kubernetes/contrib/tree/master/ingress/controllers/nginx/examples/default

ingress контролер в default

Andrey
01.10.2016
15:50:26
не, это я нашел - просто зырю где разные неймспейсы, пока не вижу

Страница 68 из 958