Установка и настройка 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
-
Создайте клиента под именем
klmg
и добавить клиенту в поле Valid redirect URIs текущий host в форматеhttps://{HOST}/*
(для локальной установки -https://IP_LOADBALANCER.nip.io/*
). -
В настройках клиента поле
Access Type
должно быть в значенииpublic
. В более новых версиях Keycloak, аналогом поляAccess Type
являются поляClient authentication
иAuthorization
, они должны быть в состоянииoff
.
- 3.
В дефолтной версии:
- В настройках клиента необходимо перейти в
Mappers
, нажать кнопкуCreate
. В новой версии:
- В настройках клиента необходимо перейти в
Client scopes
. Из дефолтного спискаAssigned client scope
выбрать<название клиента>-dedicated
и добавить мапперby configuration
нажавAdd mapper
.
В настройках указать:
- Name: roles
- Mapper type: User Client Role
- Token Claim Name: roles
Остальные настройки оставить по умолчанию, нажать Save
.
-
В настройках клиента необходимо перейти в
Roles
и создать рольcontinuity_admin
для предоставления выбранным пользователям прав админа (возможность видеть и изменять все сущности созданные на стенде любым пользователем). -
Создать необходимых пользователей и выдать им при необходимости роль
continuity_admin
. Для этого перейдите в разделUsers
, выберите пользователя, перейдите в разделRole Mappings
.
В дефолтной версии:
- В поле
Client Roles
выберите клиентаklmg
, в полеAvailable Roles выберите роль
выберитеcontinuity_admin
и нажмитеAdd selected
. В новой версии:
- Нажмите
Assign role
->Filter by client
. В поиске введитеcontinuity_admin
, выберите роль и нажмитеAssign
.