Keycloak(SSO): установка, настройка с использованием Traefik

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

Мы рас­пре­де­ля­ем кла­сте­ра Kubernetes по сле­ду­ю­щей схе­ме — кла­стер для каж­до­го про­ек­та и каж­дой сре­ды, это поз­во­ля­ет спер­ва отте­сти­ро­вать что-то новое на дев сре­де, потом пере­та­щить на стейдж и уже после внед­рять на про­дак­шене. И вот из-за тако­го под­хо­да коли­че­ство сер­ви­сов ста­ло стре­ми­тель­но рас­ти. Поэто­му в каче­стве Single-Sing-On (SSO) был выбран Keycloak.

Поче­му Keycloak? Во-пер­вых это opensource про­ект кури­ру­е­мый RedHat. Во-вто­рых про­дукт бес­плат­ный, не ска­жу, что кто-то огра­ни­чи­вал бюд­жет, но если есть воз­мож­ность сэко­но­мить — поче­му бы и да.

Схе­ма уста­нов­ки была выбра­на доста­точ­на про­стая — базу будем исполь­зо­вать RDS PostgreSQL 13, а сам сер­вис раз­ме­стим на EC2 инстан­се. От лоад­ба­лан­се­ра AWS так­же реше­но отка­зать­ся — поэто­му тер­ме­ни­ро­вать сер­ти­фи­кат будем на Traefik, кото­рый будет так же высту­пать как reverse-proxy. Из полез­но­го заме­чу то, что у Traefik есть про­вай­дер Route53, поэто­му в нашем слу­чае тре­бу­ет­ся создать IAM Policy для досту­па к зоне в Route53, пример:

route53_le_policy_example.json

Соб­ствен­но для визу­а­ли­за­ции при­креп­ляю схе­му как оно выглядит

Запуск Keycloak

Ниже при­ве­ден файл docker-compose для запус­ка Keycloak, в каче­стве про­вай­де­ра для полу­че­ния сер­ти­фи­ка­та от Let’s Encrypt мож­но исполь­зо­вать любой доступ­ный из доки Traefik:

docker-compose.yaml

Из пра­вок дан­но­го фай­ла, нуж­но изме­нить на свои пара­мет­ры 1.1.1.1/32 — про­пи­сы­ва­ем свои IP для досту­па в даш­борд Traefik

Так­же в дирек­то­рии с фай­лом docker-compose.yaml созда­ем файл .env в кото­ром про­пи­сы­ва­ем дан­ные под­клю­че­ния к базе, домен для Traefik

Если необ­хо­ди­мо раз­вер­нуть локаль­но и базу, то сто­ит доба­вить в docker-compose.yaml

Запу­стим дан­ный про­ект командой:

docker-compose -f docker-compose.yaml up -d

Создание учетной записи администратора

После запус­ка docker-compose, мы можем перей­ти на стра­ни­цу авто­ри­за­ции Keycloak, для это­го перей­дем по адре­су https://YOUR_DOMAIN/auth/

Если запус­ка про­шел успеш­но, то мы долж­ны уви­деть следующее:

Как ука­за­но на скрин­шо­те — для даль­ней­ше­го исполь­зо­ва­ния пона­до­бит­ся создать поль­зо­ва­те­ля-адми­ни­стра­то­ра, для это­го необ­хо­ди­мо выпол­нить команду:

где YOUR_USERNAME имя адми­ни­стра­то­ра, а YOUR_PASSWORD его пароль.

Полез­ные ссылки

Настрой­ка Grafana:

https://janikvonrotz.ch/2020/08/27/grafana-oauth-with-keycloak-and-how-to-validate-a-jwt-token/

Настрой­ка ArgoCD:

https://medium.com/geekculture/integrate-keycloak-and-argocd-within-kubernetes-with-ease-6871c620d3b3

https://argo-cd.readthedocs.io/en/stable/operator-manual/user-management/keycloak/