Keycloak – installation sur une base externe

Keycloak est l’outil de référence moderne pour la gestion d’un IDP qui centralise toutes vos sources d’identité (référentiels externes type github, LDAP, active directory, etc.) et vous permet donc de fédérer tous vos annuaires (ce qui est bien pratique lorsque vous avez un annuaire LDAP et un annuaire Active Directory).

C’est un outil idéal pour déléguer toute la gestion des accès, une brique simple et efficace que vous pouvez ensuite utiliser pour les accès à toutes vos applications. Compatible openid (oauth2) et SAML.

Installation de la base de données PostgreSQL HA

J’ai utilisé le chart HELM de bitnami : https://bitnami.com/stack/postgresql-ha/helm que j’ai déployé sous Rancher. Ce package s’appuie sur pgpool et implémente 3 noeuds PostgreSQL par défaut.

Création du secret pour les custom users

L’usage de pgpool qui est un proxy de connexion pour PostgreSQL implique qu’il faille créer vos utilisateurs dans pgpool avant de créer l’utilisateur en question dans vos serveurs PostgreSQL.

Le plus simple pour la gestion dynamique de vos utilisateurs va être d’utiliser l’option customUsersSecret et donc de créer un secret dans kubernetes avec 2 clefs : usernames et passwords.

apiVersion: v1
kind: Secret
metadata:
  name: postgresql-ha-customusers
  namespace: ns-database
type: Opaque
stringData:
  usernames: 'user1,user2'
  passwords: 'password1,password2'

Puis faire un :

kubectl apply -f createCustomUsers.yml

Ou directement dans l’interface Rancher :

Déploiement de la chart HELM

Je pars du principe que vous avez déjà déployé et installé Longhorn sur votre cluster.

On déploie le package HELM en indiquant les éléments indispensables et en laissant les autres paramètres par défaut, déployé dans le namespace « ns-database » :

global:
  pgpool:
    adminPassword: 'password_admin_pgpool'
    adminUsername: 'admin'
  postgresql:
    password: 'password_user_postgresql'
    repmgrPassword: 'password_user_replica'
    repmgrUsername: 'repmgr'
  storageClass: 'longhorn'
 persistence:
  size: 16Gi
  storageClass: 'longhorn'
pgpool:
  customUsersSecret: 'postgresql-ha-customusers'
service:
  type: ClusterIP

Voilà, vous avez maintenant un serveur PostgreSQL en HA fonctionnel. Une fois déployé, vous allez obtenir le nom du déploiement à utiliser pour y déployer vos bases de données.

J’ai aussi déployé pgadmin dont l’installation est extrêmement simple : https://github.com/rowanruseler/helm-charts

Pour vous y connecter, il suffira d’utiliser le nom de la connexion pgpool que vous retrouverez dans « Deployment », par exemple : postgresql-ha-9-1661963349-pgpool

Déploiement de keycloak

J’ai utilisé le chart HELM de bitnami : https://artifacthub.io/packages/helm/bitnami/keycloak que j’ai déployé sous Rancher.

De même, on garde les paramètres par défaut et on indique ceux indispensables dont le nom du déploiement interne de PostgreSQL HA :

auth:
  adminPassword: password_keycloak
  adminUser: admin
autoscaling:
  enabled: true
  maxReplicas: 6
  minReplicas: 1
  targetCPU: '90'
  targetMemory: '90'
cache:
  enabled: true
externalDatabase:
  database: keycloak
  host: postgresql-ha-9-1661963349-pgpool.ns-database
  password: password1
  port: 5432
  user: test1
postgresql:
  enabled: false
ingress:
  hostname: keycloak.votredomaine.fr

Vous obtenez alors un serveur keycloak fonctionnel avec une base de données déportée en HA. Pour vous y connecter, il suffit d’utiliser l’utilisateur « admin » et le mot de passe indiqué « password_keycloak ».