3.9 Testing
Das Testing der beiden Container Images ist automatisiert in der Pipeline. Getestet wird lediglich, ob das Image als ganzes funktioniert und gestartet werden kann. Bei je zwei Routen pro Container Applikation und zwei Python Funktionen, wurde bewusst auf Unit Test verzichtet. Sollte dies in Zukunft notwendig werden, muss dies noch integriert werde.
Health Check
Das Testing ist der eigentliche Healtch Check, welcher auch von Kubernetes / Docker genutzt wird. Dazu wird der Container gestartet, der Webport exposed und anschliessend die /health
Route aufgerufen.
- name: Build and run container
run: |
cd gameroom
docker build -t pong-game-room .
docker run -d -p 5000:5000 --name pong-game-room-container pong-game-room
- name: Wait for container to be ready
run: |
for i in {1..10}; do
if curl -s http://localhost:5000/health | grep 'OK'; then
echo "Container is healthy!";
exit 0;
else
echo "Waiting for container to be healthy...";
sleep 5;
fi
done
echo "Container health check failed.";
exit 1
Der Healtcheck wird auch in der AWS Ingress Config genutzt, damit der Ingress weis, ab wann das Backend erreichbar ist.
alb.ingress.kubernetes.io/healthcheck-protocol: HTTP
alb.ingress.kubernetes.io/healthcheck-path: /health
Sollte dieser Healthcheck also bereits beim Commit & Push failen, würde der Dienst auf dem Kubernetes Cluster nicht betroffen und würde weiter laufen.