Установка и настройка 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.