
Ihr Dienst ist nun bereit zum Testen, aber die API, von der er abhängt, wird erst in drei Wochen veröffentlicht. Klingt das vertraut? Wenn Sie eine Anwendung erstellen oder testen, sind einige der APIs, auf die sie sich stützt, oft noch nicht verfügbar, und das kann frustrierend sein.
API-Mocking schließt diese Lücke: Sie können damit Ihre Integrationen testen, ohne auf das tatsächliche Backend warten zu müssen. Microcks nimmt sich dieser Anforderung an – und das direkt aus Ihrem Kubernetes-Cluster heraus.
In diesem Blogbeitrag geht es darum, Microcks auf einem OVHcloud Managed Kubernetes Service (MKS) Cluster bereitzustellen und es dann mit Kubernetes Gateway API, Envoy Gateway und einem OVHcloud Public Cloud Load Balancer verfügbar zu machen.
Als CNCF-Projekt ist Microcks von Natur aus für Cloud-native Umgebungen geeignet. Da OVHcloud CNCF-Platin-Mitglied ist, ist die Ausführung von Microcks auf MKS eine natürliche Möglichkeit, API-Mocking und -Testing in Ihre Kubernetes-Plattform zu integrieren.
Was ist Microcks?

Microcks ist ein Open-Source-Tool für das API-Mocking und -Testing.
Es erstellt API-Mocks aus API-Spezifikationen, sodass Sie Anwendungen und Integrationen testen können, ohne dass das eigentliche Backend zur Verfügung stehen muss.
Das ist besonders in verteilten Umgebungen nützlich, in denen Teams und Dienste unabhängig voneinander wachsen. Da Microcks auf Kubernetes läuft, fügt es sich nahtlos in eine Cloud-native Umgebung ein.
Voraussetzungen
Bevor Sie loslegen, benötigen Sie:
- Einen OVHcloud Account
- Ein aktives OVHcloud Public-Cloud-Projekt
- API-Anmeldeinformationen mit den Berechtigungen, die zum Verwalten eines MKS Clusters erforderlich sind
- Die OVHcloud CLI
- kubectl
- Helm
- Ein Domainname (der auf den Loadbalancer verweist, wenn Sie einen individuellen Domainnamen wünschen)
Dann kann es auch schon losgehen.
Schritt 1: MKS Cluster erstellen
Zunächst erstellen Sie einen OVHcloud Managed Kubernetes Service Cluster und einen Node-Pool.
Für dieses Beispiel entscheiden wir uns für einen Pool mit drei Nodes auf b3-8-Basis.
Beachten Sie, dass Sie für die Produktion die Verwendung eines Standard-Plans anstelle des kostenlosen Plans in Betracht ziehen sollten.
Cluster erstellen
Definieren Sie Ihre Cluster-Parameter:
export CLUSTER_NAME="microcks"
export REGION="GRA9"
export PLAN="free"Erstellen Sie den Kubernetes-Cluster:
CLUSTER_ID=$(ovhcloud cloud mks create --name $CLUSTER_NAME --region $REGION --plan $PLAN | grep -oE '[0-9a-f-]{36}')Warten Sie 2–3 Minuten, bis der Cluster bereitgestellt ist.
Überprüfen Sie den Status des Kubernetes-Clusters:
ovhcloud cloud mks get $CLUSTER_IDNode-Pool erstellen und mit dem Cluster verbinden
Microcks besteht aus mehreren Kubernetes-Workloads, darunter die Microcks-Anwendung, Keycloak und seine PostgreSQL-Instanz, MongoDB und die Postman-Runtime.
Für eine kleine Installation ist ein Node-Pool mit drei Nodes für allgemeine Anforderungen (General Purpose) ein sinnvoller Ausgangspunkt.
Nachdem der Cluster erstellt wurde, können Sie den Node-Pool erstellen. Definieren Sie die Konfiguration des Node-Pools:
export NODEPOOL_NAME="microcks-np"
export NODE_FLAVOR="b3-8"Erstellen Sie den 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}')Warten Sie 3–4 Minuten, bis der Node-Pool bereitgestellt wurde.
Überprüfen Sie den Status des Node-Pools:
ovhcloud cloud mks nodepool get $CLUSTER_ID $NP_IDSobald der Cluster und der Node-Pool bereit sind, generieren Sie die Kubernetes-Konfiguration:
ovhcloud cloud mks kubeconfig generate $CLUSTER_ID > microcks.yamlKonfigurieren Sie die kubectl-CLI mit der generierten kubeconfig:
export KUBECONFIG=$(pwd)/microcks.yamlÜberprüfen Sie, ob die Nodes bereit sind:
kubectl get np
kubectl get nodesIhr Kubernetes-Cluster ist jetzt bereit. Sie können jetzt fortfahren und Microcks verfügbar machen.
Schritt 2: Cluster mit Gateway API verfügbar machen
Gateway API ist der Kubernetes-Standard für die Weiterleitung von Traffic in einen Cluster und wurde als Nachfolger von Ingress entwickelt. Sie beschreibt, was Sie verfügbar machen möchten. Ein Controller wandelt diese Beschreibung in einen laufenden Proxy und auf MKS in einen OVHcloud Public Cloud Load Balancer um.
Sie verwenden drei Komponenten: Envoy Gateway (eine Implementierung der Gateway API, die auf dem Envoy-Proxy basiert), cert-manager, der TLS-Zertifikate automatisiert, und eine Gateway-Ressource, die sie miteinander verbindet.
Envoy Gateway installieren
Installieren Sie das Envoy Gateway-Helm-Chart:
helm install envoy-gateway oci://docker.io/envoyproxy/gateway-helm -n envoy-gateway-system --create-namespaceErstellen Sie dann eine GatewayClass, die Kubernetes mitteilt, dass Envoy Gateway für Ihre Gateway-Ressourcen zuständig ist:
cat <<EOF | kubectl apply -f -
apiVersion: gateway.networking.k8s.io/v1
kind: GatewayClass
metadata:
name: envoy
spec:
controllerName: gateway.envoyproxy.io/gatewayclass-controller
EOFTLS-Zertifikate mit cert-manager verwalten
Um Ihre TLS-Zertifikate automatisch zu verwalten, verwenden Sie cert-manager in Verbindung mit Let’s Encrypt.
cert-manager installieren:
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=trueErstellen Sie dann einen ClusterIssuer für 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
EOFDieser Issuer erlaubt es cert-manager, mit dem Gateway API HTTP-01-Solver Zertifikate von Let’s Encrypt anzufordern.
Gateway erstellen
Sie können jetzt das Gateway erstellen, das Microcks verfügbar macht.
Erstellen Sie den Namespace:
kubectl create namespace microcksErstellen Sie dann das Gateway mit seinen fünf Listenern: HTTP und HTTPS für Microcks, TLS-Passthrough für gRPC und HTTP und HTTPS für 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
EOFÜberprüfen Sie den Status des Gateways:
kubectl get gateway -n microcks
--- OUTPUT ---
NAME CLASS ADDRESS PROGRAMMED AGE
microcks-gateway envoy xx.xx.xx.xx True 3m49sIn diesem Stadium sollte das Gateway Accepted=True und Programmed=True sein. Wenn das noch nicht der Fall ist, warten Sie ein paar Minuten, bis das Gateway programmiert und der OVHcloud Public Cloud Load Balancer bereitgestellt ist.
DNS konfigurieren
Rufen Sie die externe Adresse des Gateways ab:
export GATEWAY_IP=$(kubectl get gateway microcks-gateway \
-n microcks \
-o jsonpath='{.status.addresses[0].value}')
echo $GATEWAY_IP
--- OUTPUT ---
xx.xx.xx.xxWenn Sie eine individuelle Domain verwenden, erstellen Sie die folgenden DNS-Einträge:
microcks.<YOUR_DOMAIN>.com A <GATEWAY_IP>
microcks-grpc.<YOUR_DOMAIN>.com A <GATEWAY_IP>
keycloak.<YOUR_DOMAIN>.com A <GATEWAY_IP>Sie können diese Einträge über die OVHcloud DNS-Verwaltungsoberfläche konfigurieren:

Nachdem Ihr DNS konfiguriert ist, überprüfen Sie die Einträge:
dig keycloak.<YOUR_DOMAIN>.com +noall +answer
dig microcks.<YOUR_DOMAIN>.com +noall +answer
dig microcks-grpc.<YOUR_DOMAIN>.com +noall +answerSchritt 3: Microcks bereitstellen und überprüfen
Die Infrastruktur ist nun bereit. Jetzt deployen wir Microcks.
Microcks mit Helm bereitstellen
Sie verwenden das offizielle Microcks-Helm-Chart und konfigurieren es, um Gateway API HTTPRoute-Ressourcen anstelle von Kubernetes Ingress-Ressourcen zu erstellen.
Fügen Sie das Microcks-Helm-Repository hinzu:
helm repo add microcks https://microcks.io/helm/
helm repo updateErstellen Sie eine microcks_values.yaml-Datei:
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
EOFInstallieren Sie Microcks:
helm install microcks microcks/microcks -n microcks -f microcks_values.yamlDeployment überprüfen
Überprüfen Sie die 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 19mWarten Sie, bis alle Pods im Zustand „Running“ sind und die Container bereit sind.
Sie können auch die Gateway API-Routen überprüfen:
kubectl get httproute -n microcks
--- OUTPUT ---
NAME HOSTNAMES AGE
microcks ["microcks.<YOUR_DOMAIN>.com"] 3m34s
microcks-keycloak ["keycloak.<YOUR_DOMAIN>.com"] 3m34sDie Routen sollten auf die zuvor konfigurierten Microcks- und Keycloak-Hostnamen verweisen.
Ab diesem Zeitpunkt sollte Microcks über folgende Links zugänglich sein:
https://microcks.<YOUR_DOMAIN>.com
https://microcks-grpc.<YOUR_DOMAIN>.com
https://keycloak.<YOUR_DOMAIN>.comMicrocks läuft jetzt auf einem OVHcloud Managed Kubernetes Service Cluster, ist über die Gateway API zugänglich und ist mit TLS-Zertifikaten abgesichert, die von cert-manager verwaltet werden.
Fazit und Ausblick
In diesem Blogbeitrag haben wir Microcks auf einem OVHcloud Managed Kubernetes Service Cluster bereitgestellt und es mit der Kubernetes Gateway API-Implementierung von Envoy Gateway und einem OVHcloud Public Cloud Load Balancer verfügbar gemacht. TLS-Zertifikate werden mit cert-manager und Let's Encrypt verwaltet.
Sie können APIs jetzt direkt von einem MKS-Cluster aus mocken und testen.
Für eine Produktionsumgebung wäre eine weitere Option die Verwendung von OVHcloud Managed Databases for PostgreSQL und MongoDB anstelle des direkten Ausführens dieser Datenbankkomponenten im Kubernetes-Cluster. Dieser Ansatz trennt die Anwendungsplattform von der Datenbankinfrastruktur und ermöglicht Ihnen die Nutzung von verwalteten Datenbankdiensten.
Bereit, es auszuprobieren? Erstellen Sie Ihren ersten Managed Kubernetes-Cluster und stellen Sie Microcks in weniger als 30 Minuten bereit. Informationen zu den neuesten Funktionen der OVHcloud Public-Cloud-Produkte finden Sie hier: Cloud Roadmap & Changelog.