Kubernetes - настроить ingress controller для аутентификации приложений

Thank you for reading this post, don't forget to subscribe!

Мы исполь­зу­ем nginx-ingress в каче­стве служ­бы марш­ру­ти­за­ции для наших приложений.

Суще­ству­ет гораз­до боль­ше, чем про­сто марш­ру­ти­за­ция, кото­рую мы можем настро­ить с помо­щью ingress.

Одной из важ­ных функ­ций явля­ет­ся настрой­ка аутен­ти­фи­ка­ции для наше­го приложения.

Посколь­ку весь тра­фик идет с ingress на наш сер­вис, име­ет смысл настро­ить аутентификацию.

Как упо­ми­на­лось в репо­зи­то­рии, доступ­ны раз­ные типы аутен­ти­фи­ка­ции, включая:

  • Базо­вая аутен­ти­фи­ка­ция ( basic )
  • Аутен­ти­фи­ка­ции по сертификатам
  • Внеш­няя аутентификация
  • Oauth внеш­няя аутентификация

В этом руко­вод­стве мы настро­им аутен­ти­фи­ка­цию на при­ме­ре при­ло­же­ния, исполь­зуя базо­вую тех­ни­ку (basic) аутен­ти­фи­ка­ции Ingress.

Предпосылки

  • Доступ к рабо­че­му кла­сте­ру kubernetes.
  • Пони­ма­ние тер­ми­нов Kubernetes, таких как поды, раз­вер­ты­ва­ния, служ­бы, configmap, ingess и annotations
Сна­ча­ла давай­те созда­дим ресур­сы для Ingress из выше­при­ве­ден­но­го при­ме­ра, выпол­нив сле­ду­ю­щую команду.

Теперь, когда ресур­сы ингрес­са созда­ны, нам нужен сер­вис для досту­па к нему.

Исполь­зуй­те сле­ду­ю­щий мани­фест, что­бы создать сервис:

Теперь давай­те полу­чим енд­по­инт ELB и при­вя­жем его к како­му-нибудь домен­но­му имени.

Давай­те созда­дим раз­вер­ты­ва­ние и сер­вис для наше­го при­ме­ра при­ло­же­ния kibana.

Нам нужен elasticsearch для запус­ка Kibana.

Вот мани­фест для при­ме­ра приложения.

Создай­те  приложение.
kubectl apply -f kibana.yml
deployment "kibana" created
service "kibana" created
deployment "elasticsearch" created
service "elasticsearch" created

Теперь, когда мы созда­ли ресур­сы при­ло­же­ния и ингрес­са, при­шло вре­мя создать сам Ingress и полу­чить доступ к приложению.

Исполь­зуй­те сле­ду­ю­щий манифест:

$kubectl -n ingress-nginx create -f ingress.yml
ingress "kibana-ingress" created.
Теперь, когда наше при­ло­же­ние запу­ще­но, когда мы можем полу­чить доступ к пане­ли мони­то­рин­га Kibana с помо­щью URL-адре­са http://logstest.myapp-staging.com, у нас есть пря­мой доступ к нашей пане­ли инстру­мен­тов Kibana, и любой поль­зо­ва­тель с этим URL может полу­чить доступ к журналам.

Теперь давай­те настро­им базо­вую аутен­ти­фи­ка­цию с исполь­зо­ва­ни­ем htpasswd.

Сле­дуй­те при­ве­ден­ным ниже коман­дам, что­бы сге­не­ри­ро­вать сек­рет для учет­ных данных.

Давай­те созда­дим файл авто­ри­за­ции с име­нем поль­зо­ва­те­ля и паролем.

Исполь­зуй­те сле­ду­ю­щие анно­та­ции в нашем мани­фе­сте ingress:

Вставь­те сле­ду­ю­щие аннотации:

Теперь, когда Ingress обнов­лен, сно­ва перей­ди­те на тот URL-адрес, и, вас  уже попро­сят прой­ти аутентификацию.