Construire une image keycloak distribution quarkus pour le cloud

Notre infrastructure

l’instance keycloak, une image docker, se trouve dans le sous-réseau privée de notre VPC.
C’est le load-balancer se trouvant dans le sous-réseau public qui sécurise la communication via le protocole https.

Activation du mode proxy avec communication http

Keycloak propose 3 modes proxy , nous utilisons le mode edge pour activer la communication http.

Avec le mode edge nous pouvons utiliser http comme protocole de communication entre le loadbalancer et les instances keycloak; nos instances keycloak se trouvant dans un sous réseau privée sécurisé.

Le load-balancer ayant la responsabilité de sécuriser les communications avec les clients.

variable d’environnement à définir:

ENV KC_PROXY=edge
ENV KC_HTTP_PORT=9080 # port écouté par keycloak
ENV KC_HTTP_ENABLED=true #activation du protocole http
ENV KC_HOSTNAME_STRICT_HTTPS=false # déactivation du mode https obligatoire
ENV KC_HTTP_RELATIVE_PATH=/auth # à définir si vous voulez garder les mêmes urls que les distributions widfly

Voir https://www.keycloak.org/server/reverseproxy

Construction de l’image docker

Une étape de build est ajoutée dans le dockerfile afin d’optimiser les étapes de démarrage du container.

Dans cette étape de build, nous ajoutons les variables d’environnement qui ne sont pas contextuelles à l’environnement d’exécution.

Et important, il faut rajouter dans l’étape de build thèmes et modules custom pour qu’ils soient pris en compte par le mode optimisé de démarrage.

FROM quay.io/keycloak/keycloak:latest as builder

# Enable health and metrics support
ENV KC_HEALTH_ENABLED=true
ENV KC_METRICS_ENABLED=true

# Enable proxy config
ENV KC_HTTP_PORT=9080
ENV KC_PROXY=edge
ENV KC_HTTP_ENABLED=true
ENV KC_HOSTNAME_STRICT_HTTPS=false

# with quarkus distribution path must be configured

ENV KC_HTTP_RELATIVE_PATH=/auth

# enable postgres driver
ENV KC_DB=postgres

ADD themes/redfroggy /opt/keycloak/themes/redfroggy # my custom theme
ADD realm-config/dev /opt/keycloak/data/import # my custom realm
ADD providers/registration/target/redfroggy-registration.jar /opt/keycloak/providers/redfroggy-registration.jar #my custom provider

RUN /opt/keycloak/bin/kc.sh build

FROM quay.io/keycloak/keycloak:latest
COPY –from=builder /opt/keycloak/ /opt/keycloak/

#Enable health and metrics support
ENV KC_HEALTH_ENABLED=true
ENV KC_METRICS_ENABLED=true

#Enable proxy config through HTTP
ENV KC_PROXY=edge
ENV KC_HTTP_PORT=9080
ENV KC_HTTP_ENABLED=true
ENV KC_HOSTNAME_STRICT_HTTPS=false

#with quarkus distribution path must be configured
ENV KC_HTTP_RELATIVE_PATH=/auth

ENTRYPOINT [ ‘/opt/keycloak/bin/kc.sh’ ]

#start –optimized pour démarrer avec une image optimisée pour la production
CMD [‘start’, ‘–import-realm’, ‘–optimized’]

Conclusion

Votre image est maintenant prête à être poussée dans votre container registry et déployer dans votre Cloud cible.

Dans notre exemple, le container écoute sur le port 9080 et doit être connecté à une base postgresql.

Lors du déploiement de l’image n’oubliez pas de déclarer les variables d’environnement suivantes :

KC_DB_PASSWORD
KC_DB_USERNAME
KC_DB_URL
KEYCLOAK_ADMIN
KEYCLOAK_ADMIN_PASSWORD

En savoir plus sur RED FROGGY

Abonnez-vous pour poursuivre la lecture et avoir accès à l’ensemble des archives.

Poursuivre la lecture