#keycloak #keycloak-services #keycloak-operator
#скрытие ключей #keycloak-сервисы #keycloak-operator
Вопрос:
Полный поток выглядит примерно так:
Шаг 1: применение всех соответствующих YAML
$ sudo kind create cluster --name aftab-cluster --config cluster-config.yaml
$ curl -sL https://github.com/operator-framework/operator-lifecycle-manager/releases/download/v0.17.0/install.sh | bash -s v0.17.0
$ kubectl apply -f keycloak_backup.yaml
$ kubectl apply -f keycloaks_client.yaml
$ kubectl apply -f keycloaks_realm.yaml //Theme configs not there. So, added loginTheme.
loginTheme:
description: Login Theme
type: string
loginWithEmailAllowed:
description: Login with email
type: boolean
$ kubectl apply -f keycloak_users.yaml
$ kubectl apply -f keycloaks_crd.yaml
$ kubectl apply -f namespace.yaml
$ kubectl apply -f role.yaml -n keycloak-namespace
$ kubectl apply -f role_binding.yaml -n keycloak-namespace
$ kubectl apply -f sa.yaml -n keycloak-namespace
$ kubectl apply -f operator.yaml -n keycloak-namespace
$ kubectl apply -f keycloak.yaml -n keycloak-namespace
apiVersion: keycloak.org/v1alpha1
kind: Keycloak
metadata:
name: example-keycloak
labels:
app: sso
spec:
instances: 1
extensions:
- /PATH/FOR/MY/COLOR-THEME/JAR/
externalAccess:
enabled: True
Шаг 2: проверка, запущены ли модули. РАБОТАЕТ УСПЕШНО.
$ kubectl get po -n keycloak-namespace // I can see podsa are running successfuly.
NAME READY STATUS RESTARTS AGE
keycloak-0 1/1 Running 0 3m13s
keycloak-operator-798747fb9d-2lgzn 1/1 Running 0 4m21s
keycloak-postgresql-85579c4d6d-4tgxj 1/1 Running 0 3m13s
Шаг 3: создание новой области и клиента
$ kubectl apply -f my-realm.yaml -n keycloak-namespace
apiVersion: keycloak.org/v1alpha1
kind: KeycloakRealm
metadata:
name: myrealm-realm
labels:
app: myrealm-realm
spec:
realm:
id: "myrealm"
realm: "myrealm"
enabled: True
displayName: "myrealm"
userRegistration: True
registrationAllowed: True
editUsernameAllowed: True
resetPasswordAllowed: True
rememberMe: True
registrationEmailAsUsername: True
loginTheme: "COLOR-THEME" <<<<<<<<<< MY CUSTOM THEME
users:
- username: "admin"
firstName: "Admin"
realmRoles:
- "offline_access"
- "uma_authorization"
$ kubectl apply -f my-client.yaml -n keycloak-namespace
Шаг 4: Наконец, доступ к экземпляру скрытия ключей в http://localhost:3010 , Работает, как и ожидалось.
Стопки, клиенты, пользователи и т. Д. Выглядят Хорошо. Но моя ЦВЕТОВАЯ ТЕМА не найдена на вкладке настроек области. Существуют только темы по умолчанию (keycloak и base).
структура каталогов выглядит следующим образом:
$ ls
cluster-config.yaml keycloak_backup.yaml keycloaks_crd.yaml namespace.yaml role_binding.yaml my-client.yaml
xyz keycloak_users.yaml keycloaks_realm.yaml operator.yaml sa.yaml my_realm.yaml
keycloak.yaml keycloaks_client.yaml keyclok-ing.yaml role.yaml themes myrealm-realm.yaml
Ответ №1:
Как мы используем CRD для использования или создания новых тем скрытия ключей?
Для первой части вопроса, если вы хотите добавить / изменить поле (т. Е. Тему области), Которое оператор скрытия ключей распознает изначально, единственное изменение, которое вам нужно будет сделать, это добавить в каждый из ваших CRD Realm следующее:
spec:
realm:
id: Realm_ID
...
loginTheme: "my_login_theme"
Для второй части (т.Е. Создания новых тем скрытия ключей):
Вы не можете. Сначала вы создаете новую тему, добавляете папки новой темы в развертывание скрытой клавиатуры, затем добавляете к оператору скрытой клавиатуры, как упоминалось ранее.
Чтобы проверить, поддерживает ли оператор loginTheme
скрытия ключей поиск по полю в файле keycloak-operator/deploy/crds/keycloak.org_keycloakrealms.yaml
. Если его там нет, вам нужно будет добавить:
loginTheme:
description: Login Theme
type: string
loginWithEmailAllowed:
description: Login with email
type: boolean
Кроме того, в файле pkg/apis/keycloak/v1alpha1/keycloakrealm_types.go
вам нужно добавить это дополнительное поле в KeycloakAPIRealm
структуру, а именно:
type KeycloakAPIRealm struct {
// kubebuilder:validation:Required
// optional
ID string `json:"id"`
// Realm name.
// kubebuilder:validation:Required
Realm string `json:"realm"`
// Realm enabled flag.
// optional
Enabled bool `json:"enabled"`
// Login Theme name
// optional
LoginTheme string `json:"loginTheme,omitempty"`
.....
}
создайте проект и запустите.