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.
Table of Contents
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 ».