Как создать пользовательские темы для развертывания оператора скрытой клавиатуры в Kubernetes?

#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"`
    .....
}
 

создайте проект и запустите.