Как развернуть Identity Server в Kubernetes?

Я хочу развернуть Identity Server 4 в Kubernetes 1.8 и использовать его в качестве шлюза федерации между моим веб-приложением и Azure Active Directory (для начала).

Если я вызываю Identity Server из своего веб-приложения, используя имя локальной службы k8s, мои пользователи будут перенаправлены на неправильный URL-адрес Identity Server (содержащий имя локальной службы k8s) во время входа в систему, что явно не будет работать. Мы используем неявный поток.

Поэтому я настроил балансировщик нагрузки Azure с именем DNS и настроил сервер идентификации для внешнего доступа с доменным именем в качестве URL-адреса PublicOrigin.

Однако мое веб-приложение, которое выполняется в том же кластере, не может получить доступ к серверу идентификации, используя внешний URL-адрес сервера идентификации (обнаружение не удается).

Если я запускаю Identity Server в другом кластере Kubernetes, все работает нормально.

Мой вопрос:

Как правильно развернуть Identity Server в Kubernetes? Мне действительно нужен еще один кластер Kubernetes?

Примечание. Я использую Kubernetes в Azure, созданный с помощью механизма ACS (потому что у нас смешаны окна и контейнеры Linux).


person Røye    schedule 08.01.2018    source источник
comment
Я использую AKS (управляемые Azure Kubernetes) и имею одно клиентское веб-приложение asp.net core 2 в том же кластере, что и моя служба IS4, без проблем. Оба веб-приложения обслуживаются Nginx с kube-lego для поддержки LetsEncrpyt TLS, а DNS предоставляется Azure DNS. Я не использую PublicOrigin, но вместо этого Authority клиентского приложения (в настройке openidconnect) использует полное (внешнее Azure) DNS-имя службы IS4. Вы можете использовать PublicOrigin, если хотите использовать именование кластерной службы своих клиентов.   -  person Mark    schedule 09.01.2018
comment
Я просто добавлю, что я использую Hybrid Flow для клиента, но я сомневаюсь, что использование Implicit должно иметь здесь значение.   -  person Mark    schedule 09.01.2018
comment
Я только что протестировал это с помощью AKS, и вы правы, он работает. Кажется, что механизм Azure ACS (v0.8) настраивает мои кубернеты таким образом, что модули не могут подключаться к другим модулям с использованием внешних URL-адресов, что довольно странно. Если вы предложите свое решение в качестве ответа, я его приму.   -  person Røye    schedule 09.01.2018
comment
Было бы интересно узнать, что изменилось в ACS, на тот случай, если это поможет предотвратить возникновение проблемы в будущем с AKS.   -  person Mark    schedule 09.01.2018


Ответы (1)


Я использую AKS (управляемые Azure Kubernetes) и имею одно клиентское веб-приложение asp.net core 2 в том же кластере, что и моя служба IS4, без проблем. Оба веб-приложения обслуживаются Nginx с kube-lego для поддержки LetsEncrpyt TLS, а DNS предоставляется Azure DNS.

Я не использую PublicOrigin, но вместо этого Authority клиентского приложения (в настройке openidconnect) использует полное (внешнее Azure) DNS-имя службы IS4. Вы можете использовать PublicOrigin, если хотите использовать именование кластерной службы от своих клиентов.

person Mark    schedule 09.01.2018
comment
С моей точки зрения, это принятый ответ. У меня были странные проблемы с подключением моих модулей с использованием внешнего URL-адреса Identity Server, но оказалось, что это проблема с моим кластером, созданным с помощью Azure ACS. Я могу подтвердить, что переключение на Azure AKS работает нормально, как описывает Марк выше. - person Røye; 09.01.2018