[JAVA] Docker Image-Erstellung der Keycloak-Erweiterung und Leistungstest durch Gatling

Überblick

Keycloak ist ein OSS-Authentifizierungsinfrastruktursystem, das OAuth2.0, OIDC usw. unterstützt. Keycloak kann auch mit einem Konto eines Dienstes verknüpft werden, der einen Open ID Provider (OP) bereitstellt. Sie können sich beispielsweise von Ihrem Google- oder Facebook-Konto aus anmelden.

Die Beschreibung der Authentifizierung und des Schlüsselumhangs wird in den folgenden Artikeln ausführlich beschrieben. https://www.atmarkit.co.jp/ait/articles/1708/31/news011.html

In diesem Artikel werde ich über die Erweiterungsentwicklung von Keycloak schreiben.


Keycloak basiert auf einem Framework namens SPI, mit dem Sie vorhandene Funktionen erweitern können.

Um den Betrieb der Erweiterung während der Entwicklung zu überprüfen, müssen Sie mit Maven erstellen, auf dem Keycloak-Server bereitstellen und die Einstellungsdatei ändern.

Dieses Mal möchte ich diese Reihe von Arbeiten beim Erstellen eines Decker-Images ausführen.

Darüber hinaus erfordert diese Methode keine lokalen Einstellungen wie Maven und Java. Entwicklung und Test können durchgeführt werden, wenn nur Docker installiert ist.

Schließlich wird das Beispielbild des Ergebnisses des Leistungstests von Gatling als Referenz hinzugefügt.

Beginnen wir mit der Erstellung eines Docker-Images.

Erstellen Sie ein benutzerdefiniertes Keycloak Docker-Image

1. Entwicklungscode

Dieses Mal basieren wir auf dem folgenden Beispielcode der Keycloak-Erweiterung.

https://github.com/keycloak/keycloak/tree/master/examples/providers/domain-extension

Wie Sie dem Beispielcode "README.md" entnehmen können, sind die folgenden Schritte erforderlich, um den Vorgang zu überprüfen.

  1. Build Module (MVN Clean Install)
  2. Stellen Sie das Modul mit jboss-cli.sh bereit
  1. Fügen Sie Provider zur Konfigurationsdatei standalone / configuration / standalone.xml hinzu
  2. Starten Sie den Keycloak-Server und starten Sie ihn neu

2. Erstellen Sie eine Dockerfile-Datei für die Image-Erstellung

Erstellen Sie eine Dockerfile-Datei, damit Sie beim Erstellen eines Bildes alle oben genannten Schritte ausführen können.

# Dockerfile
FROM maven:3.6.3-jdk-8 as builder

WORKDIR /usr/src/domain-extension

COPY ./pom.xml /usr/src/domain-extension/
RUN mvn -B package

COPY ./src/ /usr/src/domain-extension/
RUN mvn -B package

FROM jboss/keycloak:8.0.1
USER jboss

WORKDIR /opt/jboss/keycloak
COPY --from=builder /usr/src/domain-extension/target/domain-extension-example.jar /opt/jboss/keycloak/target/
COPY cli/domain-extension-provider.cli /opt/jboss/keycloak/cli/

RUN bin/jboss-cli.sh --command="module add --name=org.keycloak.examples.domain-extension-example --resources=target/domain-extension-example.jar --dependencies=org.keycloak.keycloak-core,org.keycloak.keycloak-services,org.keycloak.keycloak-model-jpa,org.keycloak.keycloak-server-spi,org.keycloak.keycloak-server-spi-private,javax.ws.rs.api,javax.persistence.api,org.hibernate,org.javassist,org.liquibase" && \
    bin/jboss-cli.sh --file=cli/domain-extension-provider.cli && \
    rm -rf /opt/jboss/keycloak/standalone/configuration/standalone_xml_history

(Da dieser Build zuerst die Abhängigkeitsauflösung und den Build-Cache von Maven verwendet, ist die Build-Zeit viel schneller, wenn der Cache für den zweiten und die nachfolgenden Builds verwendet wird.)

Bevor Sie das obige Docker-Image erstellen, müssen Sie der Konfigurationsdatei den folgenden Inhalt hinzufügen, wie in "README.md" gezeigt.


<providers>
    ...
    <provider>module:org.keycloak.examples.domain-extension-example</provider>
</providers>

Dies kann von jboss-cli.sh aus erfolgen.

Bereiten Sie zunächst die folgenden Dateien vor.

cli/domain-extension-provider.cli

embed-server --server-config=standalone.xml --std-out=echo
/subsystem=keycloak-server/:write-attribute(name=providers, value=["classpath:${jboss.home.dir}/providers/*","module:org.keycloak.examples.domainextension"])
stop-embedded-server

Sie können sehen, dass die obige Datei zur Dockerfile-Datei hinzugefügt wurde, um von jboss-cli.sh ausgeführt zu werden.

3. Erstellen Sie ein Docker-Image

docker build -t keycloak-domain-extension .

4. Starten Sie den Keycloak-Server

docker run -p 8080:8080 -e KEYCLOAK_USER=admin -e KEYCLOAK_PASSWORD=admin --name keycloak keycloak-domain-extension

Ich denke, dass dies zu einer Verbesserung der Entwicklungseffizienz führen wird, indem die gesamte Entwicklung und Bereitstellung von Docker Image aus durchgeführt wird.


Leistungstest

Was den Leistungstest betrifft, konnte ich aus dem Ergebnis der Ausführung sehr detaillierte Informationen aus dem Quellcode abrufen, sodass ich ein Beispielbild des Ergebnisses anhängen werde. Detaillierte Testmethoden usw. können dem Testteil des Quellcodes entnommen werden.

https://gatling.io/ https://github.com/keycloak/keycloak/tree/master/testsuite/performance

Leistungstests werden mithilfe von Gatling durchgeführt, sodass Sie anhand des Bildes der Testergebnisse überprüfen können, ob sehr detaillierte Testdaten verfügbar sind.

Recommended Posts

Docker Image-Erstellung der Keycloak-Erweiterung und Leistungstest durch Gatling
Microservices mit Docker- und Cloud-Leistung
Erstellen Sie mit Docker ein Android-Image für Orange Pi 4
Vielleicht funktioniert es! Erstellen Sie ein Bild mit Docker und teilen Sie es!
Beispielcode für das grundlegende Verspotten und Testen mit Mockito 3 + JUnit 5
Stellen Sie sich die Spring Boot-App mit dem Jib-Maven-Plugin vor und starten Sie sie mit Docker
Erstellen Sie ein Docker-Image für redoc-cli und registrieren Sie es auf Docker Hub
Umgebungsbau mit Docker für Anfänger
Hallo Welt mit Docker und C Sprache
2. Erstellen Sie ein Docker-Image und registrieren Sie die Registrierung
Starten Sie Apache mit dem PHP-Apache-Image des Dockers neu
Warten Sie, bis PostgreSQL mit Docker gestartet ist, und starten Sie dann den WEB-Dienst