
Je service is nu klaar om te testen, maar de API waarvan deze afhankelijk is, wordt pas over drie weken geleverd. Komt dit je bekend voor? Wanneer je een applicatie bouwt of test, zijn sommige API's waarvan deze afhankelijk is vaak nog niet beschikbaar, en dit kan frustrerend zijn.
API-mocking dicht dat gat: hiermee kun je jouw integraties testen zonder te wachten op de daadwerkelijke backend. Microcks voorziet in deze behoefte, en doet dit rechtstreeks vanuit je Kubernetes-cluster.
In dit blogbericht implementeer je Microcks op een OVHcloud Managed Kubernetes Service (MKS)-cluster en maak je het zichtbaar met de Kubernetes Gateway API, Envoy Gateway en een OVHcloud Public Cloud Load Balancer.
Als CNCF-project past Microcks helemaal vanzelf in een cloud-native omgeving. En aangezien OVHcloud een CNCF Platinum Member is, is het draaien van Microcks op MKS een vanzelfsprekende manier om API-mocking en testen op je Kubernetes-platform te doen.
Wat is Microcks?

Microcks is een opensourcetool voor API-mocking en testen.
Het maakt API-mocks op basis van API-specificaties, zodat je applicaties en integraties kunt testen zonder dat de daadwerkelijke backend beschikbaar hoeft te zijn.
Dit is vooral nuttig in gedistribueerde omgevingen, waar teams en services onafhankelijk van elkaar veranderen. En aangezien Microcks op Kubernetes draait, past het vanzelfsprekend in een cloud-native omgeving.
Vereisten
Voordat je begint, heb je het volgende nodig:
- Een OVHcloud-account
- Een OVHcloud Public Cloud-project
- API-inloggegevens met de vereiste rechten om een MKS-cluster te beheren
- De OVHcloud CLI
- kubectl
- Helm
- Een domeinnaam (verwijzend naar de Load Balancer, als je een eigen domeinnaam wilt)
Starten maar.
Stap 1: Creëer het MKS-cluster
Je maakt eerst een OVHcloud Managed Kubernetes Service-cluster en een node pool.
Voor dit voorbeeld gebruik je een node pool met drie nodes van het type b3-8.
Let op: voor productiegebruik moet je overwegen om een Standard-pakket te gebruiken in plaats van het Free-pakket.
Creëer het cluster
Definieer je clusterparameters:
export CLUSTER_NAME="microcks"
export REGION="GRA9"
export PLAN="free"Creëer het Kubernetes-cluster:
CLUSTER_ID=$(ovhcloud cloud mks create --name $CLUSTER_NAME --region $REGION --plan $PLAN | grep -oE '[0-9a-f-]{36}')Wacht 2–3 minuten totdat het cluster is ingericht.
Controleer de status van het Kubernetes-cluster:
ovhcloud cloud mks get $CLUSTER_IDCreëer de node pool en maak verbinding met het cluster
Microcks bestaat uit verschillende Kubernetes-workloads, waaronder de Microcks-applicatie, Keycloak en zijn PostgreSQL-instance, MongoDB en de Postman-runtime.
Voor een kleine installatie is een node pool met drie General Purpose nodes een redelijk startpunt.
Zodra het cluster is aangemaakt, kun je de node pool creëren. Definieer de configuratie van de node pool:
export NODEPOOL_NAME="microcks-np"
export NODE_FLAVOR="b3-8"Creëer de node pool:
NP_ID=$(ovhcloud cloud mks nodepool create $CLUSTER_ID --flavor-name $NODE_FLAVOR --name $NODEPOOL_NAME --desired-nodes 3 --min-nodes 2 --max-nodes 3 | grep -oE '[0-9a-f-]{36}')Wacht 3–4 minuten totdat de node pool is ingericht.
Controleer de status van de node pool:
ovhcloud cloud mks nodepool get $CLUSTER_ID $NP_IDZodra het cluster en de node pool klaar zijn, genereer je de Kubernetes-configuratie:
ovhcloud cloud mks kubeconfig generate $CLUSTER_ID > microcks.yamlConfigureer de kubectl CLI met de gegenereerde kubeconfig:
export KUBECONFIG=$(pwd)/microcks.yamlControleer of de nodes gereed zijn:
kubectl get np
kubectl get nodesJe Kubernetes-cluster is nu gereed. Je kunt nu Microcks zichtbaar gaan maken.
Stap 2: Maak het cluster zichtbaar met Gateway API
Gateway API is de Kubernetes-standaard voor het routeren van verkeer naar een cluster, ontworpen als opvolger van Ingress. Het beschrijft wat je wilt blootstellen; een controller zet die beschrijving vervolgens om in een draaiende proxy en, op MKS, in een OVHcloud Public Cloud Load Balancer.
Je gebruikt drie componenten: Envoy Gateway, een implementatie van Gateway API gebouwd op de Envoy-proxy; cert-manager, die TLS-certificaten automatiseert; en een Gateway-resource die deze met elkaar verbindt.
Installeer Envoy Gateway
Installeer de Envoy Gateway Helm-chart:
helm install envoy-gateway oci://docker.io/envoyproxy/gateway-helm -n envoy-gateway-system --create-namespaceMaak vervolgens een GatewayClass aan die Kubernetes vertelt dat Envoy Gateway verantwoordelijk is voor je Gateway-resources:
cat <<EOF | kubectl apply -f -
apiVersion: gateway.networking.k8s.io/v1
kind: GatewayClass
metadata:
name: envoy
spec:
controllerName: gateway.envoyproxy.io/gatewayclass-controller
EOFBeheer TLS-certificaten met cert-manager
Om je TLS-certificaten automatisch te beheren, gebruik je cert-manager samen met Let's Encrypt.
Installeer cert-manager:
helm repo add jetstack https://charts.jetstack.io
helm repo update
helm install cert-manager jetstack/cert-manager --namespace cert-manager --create-namespace --set crds.enabled=true --set config.gatewayAPI.enabled=trueMaak vervolgens een ClusterIssuer aan voor Let's Encrypt:
cat <<EOF | kubectl apply -f -
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: letsencrypt-prod-microcks
spec:
acme:
server: https://acme-v02.api.letsencrypt.org/directory
email: <your-email@example.com> # Update with your email address
privateKeySecretRef:
name: letsencrypt-prod-microcks
solvers:
- http01:
gatewayHTTPRoute:
parentRefs:
- name: microcks-gateway
namespace: microcks
group: gateway.networking.k8s.io
kind: Gateway
EOFDeze issuer stelt cert-manager in staat om certificaten aan te vragen bij Let's Encrypt met behulp van de Gateway API HTTP-01 solver.
Maak de Gateway aan
Je kunt nu de Gateway maken die Microcks zichtbaar zal maken.
Maak de namespace aan:
kubectl create namespace microcksMaak vervolgens de Gateway aan met zijn vijf listeners: HTTP en HTTPS voor Microcks, TLS-passthrough voor gRPC, en HTTP en HTTPS voor Keycloak.
cat <<EOF | kubectl apply -f -
apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
name: microcks-gateway
namespace: microcks
annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod-microcks
spec:
gatewayClassName: envoy
listeners:
- name: microcks-http
hostname: microcks.<YOUR_DOMAIN>.com
protocol: HTTP
port: 80
allowedRoutes:
namespaces:
from: Same
- name: microcks-https
hostname: microcks.<YOUR_DOMAIN>.com
protocol: HTTPS
port: 443
tls:
mode: Terminate
certificateRefs:
- name: microcks-tls
allowedRoutes:
namespaces:
from: Same
- name: microcks-grpc
hostname: microcks-grpc.<YOUR_DOMAIN>.com
protocol: TLS
port: 443
tls:
mode: Passthrough
allowedRoutes:
namespaces:
from: Same
- name: keycloak-http
hostname: keycloak.<YOUR_DOMAIN>.com
protocol: HTTP
port: 80
allowedRoutes:
namespaces:
from: Same
- name: keycloak-https
hostname: keycloak.<YOUR_DOMAIN>.com
protocol: HTTPS
port: 443
tls:
mode: Terminate
certificateRefs:
- name: keycloak-tls
allowedRoutes:
namespaces:
from: Same
EOFControleer de status van de Gateway:
kubectl get gateway -n microcks
--- OUTPUT ---
NAME CLASS ADDRESS PROGRAMMED AGE
microcks-gateway envoy xx.xx.xx.xx True 3m49sIn dit stadium zou de Gateway Accepted=True en Programmed=True moeten zijn. Als dat nog niet zo is, wacht dan een paar minuten tot de Gateway is geprogrammeerd en de OVHcloud Public Cloud Load Balancer is ingericht.
Configureer DNS
Haal het externe adres op dat aan de Gateway is toegewezen:
export GATEWAY_IP=$(kubectl get gateway microcks-gateway \
-n microcks \
-o jsonpath='{.status.addresses[0].value}')
echo $GATEWAY_IP
--- OUTPUT ---
xx.xx.xx.xxAls je een aangepast domein gebruikt, maak dan de volgende DNS-records aan:
microcks.<YOUR_DOMAIN>.com A <GATEWAY_IP>
microcks-grpc.<YOUR_DOMAIN>.com A <GATEWAY_IP>
keycloak.<YOUR_DOMAIN>.com A <GATEWAY_IP>Je kunt deze records configureren via de DNS-beheerinterface van OVHcloud:

Verifieer de records nadat DNS geconfigureerd is:
dig keycloak.<YOUR_DOMAIN>.com +noall +answer
dig microcks.<YOUR_DOMAIN>.com +noall +answer
dig microcks-grpc.<YOUR_DOMAIN>.com +noall +answerStap 3: Microcks implementeren en verifiëren
De infrastructuur is nu klaar. Nu gaan we Microcks implementeren.
Microcks implementeren met Helm
Je gebruikt de officiële Microcks Helm-chart en configureert deze om Gateway API HTTPRoute-resources te maken in plaats van Kubernetes Ingress-resources.
Voeg de Microcks Helm-repository toe:
helm repo add microcks https://microcks.io/helm/
helm repo updateMaak een microcks_values.yaml-bestand aan:
cat > microcks_values.yaml <<EOF
appName: microcks
ingresses: false
gatewayRoutes: true
gatewayRefName: microcks-gateway
gatewayRefNamespace: microcks
gatewayRefSectionName: microcks-https
grpcGatewayRefSectionName: microcks-grpc
microcks:
url: microcks.<YOUR_DOMAIN>.com
ingressSecretRef: microcks-tls
generateCert: false
grpcEnableTLS: true
keycloak:
url: keycloak.<YOUR_DOMAIN>.com
privateUrl: http://microcks-keycloak.microcks.svc.cluster.local:8080
ingressSecretRef: keycloak-tls
generateCert: false
gatewayRefName: microcks-gateway
gatewayRefNamespace: microcks
gatewayRefSectionName: keycloak-https
EOFInstalleer Microcks:
helm install microcks microcks/microcks -n microcks -f microcks_values.yamlControleer de implementatie
Controleer de pods:
kubectl get pods -n microcks
--- OUTPUT ---
NAME READY STATUS RESTARTS AGE
microcks-7f9f994fbc-jd7pb 1/1 Running 0 19m
microcks-keycloak-5cf68c6b65-xjr6n 1/1 Running 3 (3m1s ago) 19m
microcks-keycloak-postgresql-6665b755f-zjdrl 1/1 Running 0 19m
microcks-mongodb-7ddff9f544-8rdcx 1/1 Running 0 19m
microcks-postman-runtime-5699859b86-58mr7 1/1 Running 0 19mWacht tot alle pods de status Running hebben en de containers klaar zijn.
Je kunt ook de Gateway API-routes controleren:
kubectl get httproute -n microcks
--- OUTPUT ---
NAME HOSTNAMES AGE
microcks ["microcks.<YOUR_DOMAIN>.com"] 3m34s
microcks-keycloak ["keycloak.<YOUR_DOMAIN>.com"] 3m34sDe routes moeten verwijzen naar de hostnamen voor Microcks en Keycloak die al zijn geconfigureerd.
Nu zou Microcks bereikbaar moeten zijn via:
https://microcks.<YOUR_DOMAIN>.com
https://microcks-grpc.<YOUR_DOMAIN>.com
https://keycloak.<YOUR_DOMAIN>.comJe hebt nu Microcks draaiend op een OVHcloud Managed Kubernetes Service-cluster, zichtbaar gemaakt via Gateway API en beveiligd met TLS-certificaten beheerd door cert-manager.
Conclusie en volgende stappen
In dit blogbericht heb je Microcks geïmplementeerd op een OVHcloud Managed Kubernetes Service-cluster en dit zichtbaar gemaakt met een Kubernetes Gateway API-implementatie van Envoy Gateway en een OVHcloud Public Cloud Load Balancer. TLS-certificaten worden beheerd met cert-manager en Let's Encrypt.
Je kunt nu direct vanaf een MKS-cluster API's mocken en testen.
Voor een productieomgeving zou een andere optie zijn om OVHcloud Managed Databases voor PostgreSQL en MongoDB te gebruiken in plaats van deze databasecomponenten direct in het Kubernetes-cluster uit te voeren. Deze werkwijze scheidt het applicatieplatform van de database-infrastructuur en je benut zo beheerde databaseservices.
Klaar om het te proberen? Maak je eerste Managed Kubernetes-cluster aan en implementeer Microcks in minder dan 30 minuten. Bekijk de Cloud Roadmap & Changelog om de nieuwste features van OVHcloud Public Cloud-producten te volgen.