Wiremock is a great tool for many things and especially black box testing. I’m here going to show a small and simple way to setup a Wiremock implementation in Kubernetes
First we need a Deployment of the Wiremock application:
# Deploy wiremock to Kubernetes
apiVersion: apps/v1
kind: Deployment
metadata:
name: wiremock
labels:
app: wiremock
spec:
replicas: 1
selector:
matchLabels:
app: wiremock
template:
metadata:
labels:
app: wiremock
spec:
containers:
- name: wiremock
image: rodolpheche/wiremock
ports:
- containerPort: 8080
volumeMounts:
- name: mappings
mountPath: /home/wiremock/mappings
- name: files
mountPath: /home/wiremock/__files
volumes:
- name: mappings
configMap:
name: wiremock-mappings
- name: files
configMap:
name: wiremock-files
Then we need a Service to expose Wiremock to the cluster
apiVersion: v1
kind: Service
metadata:
name: wiremock
spec:
selector:
app: wiremock
ports:
- protocol: TCP
port: 8080
targetPort: 8080
Two ConfigMaps for configuration and files:
apiVersion: v1
kind: ConfigMap
metadata:
name: wiremock-mappings
data:
mappings.json: |
{
"request": {
"method": "GET",
"url": "/api/v1/hello"
},
"response": {
"status": 200,
"bodyFileName": "hello.json",
"headers": {
"Content-Type": "application/json"
}
}
}
---
apiVersion: v1
kind: ConfigMap
metadata:
name: wiremock-files
data:
hello.json: |
{
"Hello": "World"
}
And finally a call to the mock to see that everything works as expected:
apiVersion: apps/v1
kind: Deployment
metadata:
name: check-wiremock
labels:
app: check-wiremock
spec:
replicas: 1
selector:
matchLabels:
app: check-wiremock
template:
metadata:
labels:
app: check-wiremock
spec:
containers:
- name: check-wiremock
image: cosmintitei/bash-curl
imagePullPolicy: Always
command: ["/bin/sh", "-c", "while true; do date; curl -sS wiremock:8080/api/v1/hello; sleep 10; done"]
You should now see the payload from the Wiremock application every ten second in the check-wiremock applications log
Tested in Minikube v1.29.0
Comments are closed.