Fournisseur OpenID Connect de la plateforme : royaume enterprise-ai avec les clients portal, control-plane et cli, fédération avec l'annuaire de la banque (LDAP ou Entra ID).
Généré depuis catalog/services/keycloak.yaml : ne pas modifier à la main.
Résumé
| |
|---|
| Version | 26.8.1 |
| Usage | installer et configurer, configurer et connecter |
| Couche | fonctionnelle (catalogue IA) |
| Catégorie | Identité et secrets |
| Méthodes d'installation | binary, podman |
| Connexion externe | non |
| Réservé au bac à sable | non |
Licence
| |
|---|
| Identifiant SPDX | Apache-2.0 |
| Politique de licence | licence socle (MIT ou Apache-2.0) |
| Exception de licence | - |
| Composant de la plateforme | keycloak |
Paquets et artefacts
Un paquet que publie le projet du service (son image, son archive binaire, son paquet Python ou système) porte la licence du service ; un paquet tiers porte la licence écrite sur sa ligne, lue dans les métadonnées officielles du projet amont.
Les images sont épinglées par étiquette dans le descripteur, et par condensé (digest) quand le descripteur en déclare un (le bundle hors ligne refuse alors une image téléchargée qui ne le porte pas) ; le condensé est enregistré dans le miroir du Manager à l'import du bundle hors ligne, et chaque téléchargement ou chargement est vérifié par rapport à lui.
Systèmes et architectures pris en charge
| Méthode | Systèmes d'exploitation | Architectures |
|---|
binary | famille RHEL (dnf), famille Debian (apt), Arch Linux (pacman) | x86_64, aarch64 (non restreintes par le descripteur) |
podman | famille RHEL (dnf), famille Debian (apt), Arch Linux (pacman) | x86_64, aarch64 (non restreintes par le descripteur) |
Systèmes hôtes certifiés : RHEL 8/9/10, Rocky Linux 8/9/10, AlmaLinux 8/9/10, Oracle Linux 8/9, CentOS Stream 9/10, Ubuntu 22.04/24.04, Debian 12, Arch Linux (rolling). Le contrôle préalable des hôtes accepte ces systèmes (une autre version d'une famille connue donne un avertissement, une version en fin de vie est refusée) et les architectures x86_64 et aarch64.
Prérequis
Hôte
- au moins 2048 Mo de mémoire (bloquant,
memory).
Réseau et ports
| Composant | Nom du port | Port | Ouvert dans le pare-feu de l'hôte |
|---|
keycloak-server | http | 8443/tcp | oui |
keycloak-server | management | 9000/tcp | oui |
keycloak-server | jgroups | 7800/tcp | oui |
keycloak-server | jgroups_fd | 57800/tcp | oui |
Services et connexions nécessaires
database : postgresql.
directory : ldap (facultative).
entra : oidc (facultative).
Détail et résolution : voir Dépendances.
Méthodes et modes d'installation
| Méthode | Défaut | Ce que la méthode utilise |
|---|
binary | oui | les archives binaires du descripteur, décompressées dans le répertoire du service |
podman | - | les images de conteneur du descripteur, exécutées par Podman sous systemd |
Composants
| Composant | Type | Méthodes d'installation | Ports |
|---|
Serveur Keycloak (keycloak-server) | maître | binary, podman | 8443/tcp, 9000/tcp, 7800/tcp, 57800/tcp |
Nœud unique (standalone) (par défaut)
Un seul nœud Keycloak, cache local.
Ce que le mode déploie :
| Composant | Placement |
|---|
keycloak-server | min 1, max 1 |
Cluster (cluster)
Plusieurs nœuds qui partagent des caches distribués (JGroups, découverte jdbc-ping par la base).
Ce que le mode déploie :
| Composant | Placement |
|---|
keycloak-server | min 2, recommandé 3 |
Installer ce service
L'assistant d'installation du Navin Manager planifie, valide et exécute l'installation ; il faut la permission services:install sur le cluster.
-
Ouvrez l'assistant. Dans Clusters, choisissez l'action de ligne Installer des services du cluster cible. L'assistant s'ouvre sur sa première étape, Service.
-
Choisissez le service. À l'étape Service, sélectionnez Keycloak. La carte affiche la licence Apache-2.0 et les dépendances dont l'installation a besoin. Choisissez la Méthode parmi binary, podman (par défaut binary).
-
Choisissez les hôtes et le mode. À l'étape Hôtes, cochez les hôtes, puis choisissez le Mode : standalone (par défaut), cluster. Chaque mode déploie les composants listés dans Méthodes et modes d'installation.
-
Liez les dépendances. À l'étape Liaisons, choisissez pour chaque dépendance (database, directory, entra) Installer avec la plateforme ou Utiliser une connexion existante ; une dépendance facultative peut rester sur Aucune liaison.
-
Configurez. À l'étape Configuration, relisez les paramètres (voir Paramètres de configuration). Les mots de passe laissés vides avec une valeur générée par défaut sont générés et scellés par le Manager.
-
Relisez et installez. À l'étape Installation, le Manager valide le plan et affiche l'ordre d'installation ; quand il indique « Le plan est valide. Prêt pour l'installation. », choisissez Installer. Un mode hautement disponible n'est installé que si ses contrôles HA réussissent.
-
Vérifiez. L'opération se termine quand les contrôles de santé de chaque instance réussissent (voir Contrôles de santé) ; le service apparaît alors en marche dans Services.
Connecter un service existant
| |
|---|
| Schémas | https, http |
| Port par défaut | 8443 |
| Authentification | obligatoire |
| Contrôle de santé | management_url + /health/ready |
| Méthode d'authentification | Champs | Description |
|---|
client_credentials | client_id, client_secret | Client confidentiel du royaume (par exemple control-plane) : son identifiant et le secret de son onglet Credentials. |
Documentation officielle : https://www.keycloak.org/docs/latest/server_admin/index.html#_service_accounts
| Champ | Type | Défaut | Description | Remarques |
|---|
URL de l'interface de gestion (management_url) | url | - | URL de l'interface de gestion du service existant. | - |
Royaume (realm) | string | navin | Royaume utilisé par la plateforme. | - |
Haute disponibilité
| |
|---|
| Cluster | natif (native) |
| Haute disponibilité | natif (native) |
| Bascule | répartiteur (load-balancer) |
| Réplication | natif (native) |
| Quorum | aucun (none) |
| Découverte | base de données (database) |
| Point d'entrée | répartiteur (load-balancer) |
| Documentation officielle | https://www.keycloak.org/high-availability/introduction |
| Paramètre TLS entre pairs | tls_enabled |
Prérequis
| Prérequis | Doit être hautement disponible | Modes | Description |
|---|
database | oui | modes de niveau ha ou cluster | PostgreSQL hautement disponible portant realms, utilisateurs et sessions hors ligne. |
Topologie par mode
| Modes | Niveau le plus haut du catalogue | Répartition | Composant du quorum | Domaines de panne | Description |
|---|
standalone | autonome (standalone) | unique (single) | - | 1 | Un nœud avec un cache local. |
cluster | cluster (cluster) | actif-actif (active-active) | - | 2 | Nœuds partageant les caches distribués Infinispan intégrés, découverts par la base (jdbc-ping). |
Remarques
- Les nœuds se trouvent par la base (jdbc-ping) : le port JGroups doit être ouvert entre eux.
Paramètres de configuration
Réseau
| Paramètre | Type | Défaut | Valeurs permises | Obligatoire | Secret | Redémarrage | Description |
|---|
Port HTTP(S) (port) | port | 8443 | - | non | non | oui | Port des pages de connexion et des points OIDC (HTTPS quand TLS est actif, sinon HTTP). |
Port de gestion (management_port) | port | 9000 | - | non | non | oui | Port de /health et /metrics. |
Port JGroups (jgroups_port) | port | 7800 | - | non | non | oui | Transport du cluster entre les nœuds (mode cluster). |
Port de détection de panne JGroups (jgroups_fd_port) | port | 57800 | - | non | non | oui | Port de détection de panne de JGroups (FD_SOCK2, port JGroups plus 50000). |
TLS (tls_enabled) | bool | true | - | non | non | oui | Servir en HTTPS avec un certificat de l'autorité de la console (HTTP simple seulement derrière un proxy TLS). |
URL publique (public_url) | url | https://{{ host.fqdn }}:{{ config.port }} | - | non | non | non | Adresse utilisée par les navigateurs et le Control Plane (nom d'hôte de l'émetteur). |
Royaume
| Paramètre | Type | Défaut | Valeurs permises | Obligatoire | Secret | Redémarrage | Description |
|---|
Royaume (realm) | string | enterprise-ai | - | non | non | non | Royaume de la plateforme (importé depuis deploy/keycloak au premier démarrage). |
Importer le royaume (import_realm) | bool | true | - | non | non | non | Importer le royaume enterprise-ai au démarrage s'il n'existe pas encore. |
URL du portail (portal_url) | url | https://{{ host.fqdn }}:3000 | - | non | non | non | Adresse du portail, autorisée comme URI de redirection et origine web du client portal. |
Mot de passe de l'administrateur initial (admin_password) | password | généré | - | non | oui | non | Administrateur temporaire du royaume master, utilisateur admin ; remplacez-le après la première connexion. |
Mot de passe initial des utilisateurs (initial_password) | password | généré | - | non | oui | non | Mot de passe temporaire des utilisateurs importés (changement et TOTP exigés à la première connexion). |
Secret du client control-plane (control_plane_client_secret) | password | généré | - | non | oui | non | Secret du client confidentiel control-plane, remis au Control Plane par sa liaison. |
Réglages
| Paramètre | Type | Défaut | Valeurs permises | Obligatoire | Secret | Redémarrage | Description |
|---|
Tas Java (heap) | size | 2g | m | non | non | oui | Tas maximal de la JVM. (recommandé clamp(round(host.memory_mb * 0.25), 1024, 8192)) |
Niveau de journalisation (log_level) | enum | INFO | DEBUG, INFO, WARN, ERROR | non | non | non | Niveau de journalisation racine. |
Dépendances
Pour chaque dépendance active, le Manager prend la première solution parmi : la liaison choisie dans l'assistant ; un service de la même installation qui la fournit ; un service déjà installé dans le cluster ; la seule connexion du type attendu. Sinon, une dépendance facultative reste non liée, et une dépendance obligatoire est ajoutée à l'installation dans son mode par défaut (la colonne ci-dessous nomme le service du catalogue ajouté).
| Liaison | Fournie par | Type de connexion | Point d'accès | Facultative | Quand rien n'est lié | Description |
|---|
database | postgresql | postgresql | sql | non | postgresql est ajouté à l'installation | Base des royaumes, des utilisateurs et des sessions. |
directory | - | ldap | - | oui | reste non liée (facultative) | Annuaire de la banque (LDAP ou Active Directory) fédéré dans le royaume, déclaré comme connexion LDAP du Manager. |
entra | - | oidc | - | oui | reste non liée (facultative) | Locataire Microsoft Entra ID relayé par le royaume (connexion OpenID Connect : émetteur, identifiant et secret du client). |
Points d'accès
| Point d'accès | Schéma | Composant | Port | Chemin | Paramètre TLS | Paramètres de liaison | Secrets de liaison | Commande de provisionnement |
|---|
http | http | keycloak-server | 8443 (port) | - | tls_enabled | issuer, jwks_url, client_id | client_secret | - |
Fichiers de configuration client
Fichiers rendus pour le téléchargement de la configuration client :
keycloak.env (client.env.j2)
Commandes
| Commande | Composant | Cible | Description |
|---|
Exporter le royaume (export_realm) | keycloak-server | premier hôte | Exporte le royaume dans un fichier sous le répertoire de données (sans les utilisateurs). |
Contrôles de santé
Vivacité (par instance)
| Composant | Contrôle | Détails |
|---|
keycloak-server | HTTP {{ 'https' if config.tls_enabled else 'http' }}://{{ host.fqdn }}:{{ config.management_port }}/health/ready | Attendu 200 ; 90 tentatives ; intervalle 2 s ; délai 5 s |
Disponibilité (contrôle du service)
| Contrôle | Détails |
|---|
HTTP {{ config.public_url }}/realms/{{ config.realm }}/.well-known/openid-configuration | Attendu 200 ; 10 tentatives ; intervalle 3 s ; délai 5 s |
Contrôles préalables
| Contrôle | Type | Signification | Sévérité | Composants |
|---|
memory | memory_mb {"min": 2048} | au moins 2048 Mo de mémoire | bloquant | tous les composants |
port_free | port_free {"param": "port"} | port 8443 libre sur l'hôte | bloquant | tous les composants |
Désinstallation
Chemins supprimés quand les données sont purgées : {{ paths.data }}, {{ paths.log }}.
Liens rapides
- Console d'administration :
{{ config.public_url }}/admin/
- Découverte OIDC :
{{ config.public_url }}/realms/{{ config.realm }}/.well-known/openid-configuration
Documentation amont