Установка и настройка Keycloak
Установка Keycloak
Важно
Если у вас уже есть Keycloak, то пропустите этот шаг и перейдите к его настройке.
Для установки Keycloak можете воспользоваться следующим чартом
Перед установкой необходимо создать следующий файл values.yaml, подставив везде свое значение в переменную IP_LOADBALANCER. Если у вас есть собственное доменное имя, то замените IP_LOADBALANCER.nip.io на свое доменное имя.
Файл values.yaml
keycloakUser: "admin"
keycloakPassword: "admin"
databaseUser: "keycloak-user"
databasePassword: "dbpassword"
replicas: 1
extraEnv: |
- name: JAVA_OPTS
value: >-
-XX:+UseContainerSupport
-XX:MaxRAMPercentage=50.0
-Djava.net.preferIPv4Stack=true
-Djboss.modules.system.pkgs=$JBOSS_MODULES_SYSTEM_PKGS
-Djava.awt.headless=true
-Dkeycloak.profile.feature.upload_scripts=enabled
- name: KEYCLOAK_LOGLEVEL
value: INFO
- name: PROXY_ADDRESS_FORWARDING
value: "true"
extraEnvFrom: |
- secretRef:
name: '{{ include "keycloak.fullname" . }}-cred'
- secretRef:
name: '{{ include "keycloak.fullname" . }}-db'
secrets:
cred:
stringData:
KEYCLOAK_USER: "{{ .Values.keycloakUser }}"
KEYCLOAK_PASSWORD: "{{ .Values.keycloakPassword }}"
db:
stringData:
DB_USER: '{{ .Values.databaseUser }}'
DB_PASSWORD: '{{ .Values.databasePassword }}'
# resources:
# requests:
# cpu: 500m
# memory: 1024Mi
# limits:
# cpu: 2000m
# memory: 2048Mi
ingress:
enabled: true
ingressClassName: "nginx"
servicePort: http
annotations:
ingress.kubernetes.io/ssl-redirect: "true"
nginx.ingress.kubernetes.io/ssl-redirect: "true"
nginx.ingress.kubernetes.io/proxy-body-size: "128k"
nginx.ingress.kubernetes.io/server-snippet: |
more_set_headers "Access-Control-Allow-Origin: $http_origin";
location ~* /auth/realms/[^/]+/metrics {
return 403;
}
rules:
- host: "IP_LOADBALANCER.nip.io"
paths:
- path: /auth
pathType: Prefix
tls:
- hosts:
- "IP_LOADBALANCER.nip.io"
secretName: dev-wildcard
console:
enabled: true
ingressClassName: "nginx"
annotations:
ingress.kubernetes.io/ssl-redirect: "true"
nginx.ingress.kubernetes.io/ssl-redirect: "true"
nginx.ingress.kubernetes.io/proxy-body-size: "128k"
rules:
- host: "IP_LOADBALANCER.nip.io"
paths:
- path: /auth/admin/
pathType: Prefix
tls:
- hosts:
- "IP_LOADBALANCER.nip.io"
secretName: dev-wildcard
После создания файла, выполните установку Keycloak:
helm repo add codecentric https://codecentric.github.io/helm-charts
helm repo update
helm upgrade --install keycloak codecentric/keycloak \
--values values.yaml \
--namespace default \
--kube-context $CONTEXT_NAME
Настройка доступа к Keycloak
- Пройдите по адресу
https://IP_LOADBALANCER.nip.io/auth/admin/master/console/и авторизуйтесь в системе. - Создайте клиента под именем
klmgи добавить клиенту в поле Valid redirect URIs текущий host в форматеhttps://{HOST}/*(для локальной установки -https://IP_LOADBALANCER.nip.io/*). - В настройках клиента поле
Access Typeдолжно быть в значенииpublic. В более новых версиях Keycloak, аналогом поляAccess Typeявляются поляClient authenticationиAuthorization, они должны быть в состоянииoff. -
Настроить маппинг:
- В дефолтной версии: В настройках клиента необходимо перейти в
Mappers, нажать кнопкуCreate. -
В новой версии:
В настройках клиента необходимо перейти вClient scopes. Из дефолтного спискаAssigned client scopeвыбрать<название клиента>-dedicatedи добавить мапперby configurationнажавAdd mapper.
Также нажать наAdd client scopeи выбратьopenid->Add->Default.
В настройках указать:- Name: roles
- Mapper type: User Client Role
- Token Claim Name: roles
- Остальные настройки оставить по умолчанию, нажать
Save.
- В дефолтной версии: В настройках клиента необходимо перейти в
-
В настройках клиента необходимо перейти в
Rolesи создать рольpredicate_adminдля предоставления выбранным пользователям прав админа (возможность видеть и изменять все сущности созданные на стенде любым пользователем) иpredicate_metric(доступ до базовых метрик). - Создать необходимых пользователей и выдать им при необходимости роль
predicate_admin. Если у пользователя нет ролиpredicate_admin, то он ему нужно будет выдать рольpredicate_metric, чтобы он мог видеть базовые метрики. Для этого перейдите в разделUsers, выберите пользователя, перейдите в разделRole Mappings.- В дефолтной версии: В поле
Client Rolesвыберите клиентаklmg, в полеAvailable Roles выберите рольвыберитеpredicate_adminи нажмитеAdd selected. - В новой версии: Нажмите
Assign role->Fileter by client. В поиске введитеpredicate_admin, выберите роль и нажмитеAssign.
- В дефолтной версии: В поле