Wie Sie den ZETA Testdriver als Container erstellen

Diese Anleitung unterstützt Tester dabei, den ZETA-Testclient zu bauen und auszuführen. Der Testclient nutzt die API des Test-Fachdienstes und bietet eine Benutzerschnittstelle dafür.

Der Testdriver ist ein HttpServer, der auf der einen Seite HTTP Anfragen annimmt, auf der anderen Seite den Aufruf an den ZETA_Guard weiterleitet. Er kann daher einfach für Tests verwendet werden.


Status: Grob-Entwurf

Zielgruppe: Tester und Entwickler


[TOC]

Überblick

In diesem Dokument wird beschrieben, wie, basierend auf dem gebauten SDK (siehe Wie Sie den ZETA Testclient ausführen) einen Container erstellen, der in einem Kubernetes als Proxy zwischen einem Fachlichen Testtreiber und dem ZETA-Guard genutzt werden kann.

Die Konfiguration des Containers geschieht dann über Umgebungsvariablen, die die Endpunkte des ZETA Guards festlegen. Die Definition der Umgebungsvariablen ist unten beschrieben.

Voraussetzungen

Grundsätzlich sind für die Bereitstellung des Testdriver die gleichen Voraussetzungen nötit wie für die Ausführung des ZETA Testclients.

Desweiteren sind diese Tools nötig:

  • Docker build Tool

Vorgehen

Bau der Bibliotheken

Die Nötigen Bibliotheken lassen sich mit

./gradlew clean jar copyRuntimeLibs

bauen. Die Notwendigen Artefakte finden sich dann in

**/build/libs/*.jar
**/build/runtime-libs/*.jar

Bau des Containers

Dann lässt sich der Container mit Hilfe des Dockerfiles bauen:

docker build -f zeta-testdriver/Dockerfile .

Ausführen des Containers

Der Container kann mit einer hier beschriebenen deployment.yml installiert werden.

Hierbei sind anzupassen:

Wert Beschreibung Beispiel
CI_REGISTRY Hostname und Port der Container Registry
Hinweis: ggf. ist auch der Pfad und die Version anzupassen
https://registry.host.example.com/
FACHDIENST_URL URL des Fachdienstes wie er über den PEP zu erreichen ist https://fachdienst.host.example.com/pep/fachdienst_url/api
AUTHSERVER_URL URL des Realms des ZETA Guard am PDP Auth Server https://pdpauth.host.example.com/realms/fachdienst/

Im Beispiel unten werden die Fachdienst- und Authserver-URLs durch helm Variablen gesetzt, so dass sie umgebungsspezifisch gesetzt werden können.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: testdriver
  labels:
    component: testdriver
spec:
  replicas: 1
  selector:
    matchLabels:
      app: testdriver
  template:
    metadata:
      labels:
        app: testdriver
        component: testdrivert
    spec:
      securityContext:
        fsGroup: 1000
      imagePullSecrets:
        - name: gitlab-registry-credentials-zeta-group
      containers:
        - name: testdriver
          image: "CI_REGISTRY/zeta/zeta-client/zeta-sdk/testdriver-image:latest"
          imagePullPolicy: Always
          ports:
            - containerPort: 8080
          env:
            - name: CLIENT_BASE_URL
              value: "http://pep-proxy-svc"
            - name: FACHDIENST_URL
              value: 
            - name: AUTHSERVER_URL
              value: 

Die service.yml dazu sieht wie folgt aus:

apiVersion: v1
kind: Service
metadata:
  name: testdriver
spec:
  selector:
    app: testdriver
  ports:
    - name: http
      port: 80
      targetPort: 8080
  type: ClusterIP

Continuous Integration

Die Continuous Integration lässt sich mit Hilfe der enthaltenen

.gitlab-ci.yml
.image-ci.yml

Dateien aufsetzen.