
Il tuo servizio è pronto per la fase di test, ma l'API su cui si basa non è disponibile per altre tre settimane. Ti suona familiare? Quando costruisci o testi un'applicazione, un aspetto frustrante è che spesso alcune delle API su cui si basa non sono disponibili.
L’API mocking risolve questo problema: consente di testare le integrazioni senza dover attendere il backend reale. Microcks risponde a questa esigenza direttamente dal tuo cluster Kubernetes.
In questo post ti spieghiamo come implementare Microcks su un cluster Managed Kubernetes Service (MKS) di OVHcloud e come esporlo utilizzando la Kubernetes Gateway API, Envoy Gateway e un Load Balancer Public Cloud di OVHcloud.
Essendo un progetto CNCF, Microcks è perfettamente adatto a un ambiente cloud-native. Inoltre, dato che OVHcloud è Platinum Member CNCF, eseguire Microcks su MKS ti permette di portare senza sforzo il mocking e il testing delle API sulla tua piattaforma Kubernetes.
Cos'è Microcks?

Microcks è uno strumento open source per il mocking e il testing delle API.
Crea API di simulazione da API specifiche, permettendoti di testare le applicazioni e le integrazioni senza che il backend reale debba essere disponibile.
Si tratta di una piattaforma particolarmente utile negli ambienti distribuiti, in cui i team e i servizi evolvono in modo indipendente. Poiché Microcks è basato su Kubernetes, si integra naturalmente in un ambiente cloud-native.
Prerequisiti
Prima di iniziare, avrai bisogno di:
- Un account OVHcloud
- Un progetto Public Cloud OVHcloud
- Le credenziali API con i permessi necessari per gestire un cluster MKS
- La CLI OVHcloud
- kubectl
- Helm
- Un dominio (che punta al Load Balancer, se desideri un dominio personalizzato)
Cominciamo!
Step 1: crea il cluster MKS
Prima di tutto, crea un cluster Managed Kubernetes Service OVHcloud e un pool di nodi.
Per questo esempio, utilizzeremo un pool di tre nodi basato sul flavor b3-8.
NB: per l'uso in produzione, valuta l'utilizzo di un piano standard invece del piano free.
Crea il cluster
Definisci i parametri del cluster:
export CLUSTER_NAME="microcks"
export REGION="GRA9"
export PLAN="free"Crea il cluster Kubernetes:
CLUSTER_ID=$(ovhcloud cloud mks create --name $CLUSTER_NAME --region $REGION --plan $PLAN | grep -oE '[0-9a-f-]{36}')Attendi il completamento del provisioning del cluster per 2/3 minuti.
Controlla lo stato del cluster Kubernetes:
ovhcloud cloud mks get $CLUSTER_IDCrea il pool di nodi e connettiti al cluster
Microcks è composto da workload Kubernetes, tra cui l'applicazione Microcks, Keycloak e la sua istanza PostgreSQL, MongoDB e il runtime Postman.
Per una piccola installazione, un pool di nodi con tre nodi general-purpose è un buon punto di partenza.
Una volta creato il cluster, puoi creare il pool di nodi. Definisci la configurazione del pool di nodi:
export NODEPOOL_NAME="microcks-np"
export NODE_FLAVOR="b3-8"Crea il pool di nodi:
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}')Attendi il completamento del provisioning del pool di nodi per 3/4 minuti.
Controlla lo stato del pool di nodi:
ovhcloud cloud mks nodepool get $CLUSTER_ID $NP_IDUna volta che il cluster e il pool di nodi sono pronti, genera la configurazione Kubernetes:
ovhcloud cloud mks kubeconfig generate $CLUSTER_ID > microcks.yamlConfigura la CLI kubectl con il kubeconfig generato:
export KUBECONFIG=$(pwd)/microcks.yamlVerifica che i nodi siano pronti:
kubectl get np
kubectl get nodesIl tuo cluster Kubernetes è pronto: puoi esporre Microcks.
Step 2. Esponi il cluster con Gateway API
Gateway API è lo standard di Kubernetes per il routing del traffico in un cluster, progettato come successore di Ingress. La sua funzione è di descrivere ciò che vuoi esporre. In seguito, un controller trasforma questa descrizione in un proxy in esecuzione e, su MKS, in un Load Balancer Public Cloud di OVHcloud.
Utilizzerai tre componenti: Envoy Gateway, un'implementazione di Gateway API basata sul proxy Envoy; cert-manager, che automatizza i certificati TLS e una risorsa Gateway che li collega tra loro.
Installa Envoy Gateway
Installa il Chart Helm di Envoy Gateway:
helm install envoy-gateway oci://docker.io/envoyproxy/gateway-helm -n envoy-gateway-system --create-namespaceQuindi, crea una GatewayClass che comunica a Kubernetes che Envoy Gateway è responsabile delle risorse Gateway:
cat <<EOF | kubectl apply -f -
apiVersion: gateway.networking.k8s.io/v1
kind: GatewayClass
metadata:
name: envoy
spec:
controllerName: gateway.envoyproxy.io/gatewayclass-controller
EOFGestisci i certificati TLS con cert-manager
Per gestire automaticamente i tuoi certificati TLS, utilizzerai cert-manager insieme a Let's Encrypt.
Installa 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=trueCrea un ClusterIssuer per 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
EOFQuesto issuer consente a cert-manager di richiedere certificati a Let's Encrypt utilizzando il solver Gateway API HTTP-01.
Crea il Gateway
Ora puoi creare il Gateway che esporrà Microcks.
Crea il namespace:
kubectl create namespace microcksIn seguito, crea il Gateway con i suoi cinque listener: HTTP e HTTPS per Microcks, TLS passthrough per gRPC, e HTTP e HTTPS per 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
EOFControlla lo stato del Gateway:
kubectl get gateway -n microcks
--- OUTPUT ---
NAME CLASS ADDRESS PROGRAMMED AGE
microcks-gateway envoy xx.xx.xx.xx True 3m49sIn questa fase, il Gateway dovrebbe essere Accepted=True e Programmed=True. Se non lo è ancora, attendi qualche minuto il completamento della programmazione del Gateway e del provisioning del Load Balancer Public Cloud OVHcloud.
Configura DNS
Ottieni l'indirizzo esterno assegnato al Gateway:
export GATEWAY_IP=$(kubectl get gateway microcks-gateway \
-n microcks \
-o jsonpath='{.status.addresses[0].value}')
echo $GATEWAY_IP
--- OUTPUT ---
xx.xx.xx.xxSe stai utilizzando un dominio personalizzato, crea i seguenti record DNS:
microcks.<YOUR_DOMAIN>.com A <GATEWAY_IP>
microcks-grpc.<YOUR_DOMAIN>.com A <GATEWAY_IP>
keycloak.<YOUR_DOMAIN>.com A <GATEWAY_IP>Puoi configurare questi record tramite l'interfaccia di gestione DNS di OVHcloud:

Una volta configurato il DNS, verifica i record:
dig keycloak.<YOUR_DOMAIN>.com +noall +answer
dig microcks.<YOUR_DOMAIN>.com +noall +answer
dig microcks-grpc.<YOUR_DOMAIN>.com +noall +answerStep 3: deploy e verifica di Microcks
L'infrastruttura è pronta. Ora possiamo implementare Microcks.
Deploy di Microcks con Helm
Utilizza il chart Helm ufficiale di Microcks e configuralo per creare risorse Gateway API HTTPRoute invece di risorse Ingress di Kubernetes.
Aggiungi il repository Helm di Microcks:
helm repo add microcks https://microcks.io/helm/
helm repo updateCrea un file microcks_values.yaml:
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
EOFInstalla Microcks:
helm install microcks microcks/microcks -n microcks -f microcks_values.yamlVerifica il deploy
Controlla i pod:
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 19mAspetta che tutti i pod siano nello stato Running e i container siano pronti.
Puoi anche controllare le rotte della Gateway API:
kubectl get httproute -n microcks
--- OUTPUT ---
NAME HOSTNAMES AGE
microcks ["microcks.<YOUR_DOMAIN>.com"] 3m34s
microcks-keycloak ["keycloak.<YOUR_DOMAIN>.com"] 3m34sLe rotte dovrebbero fare riferimento agli hostname Microcks e Keycloak configurati in precedenza.
A questo punto, Microcks dovrebbe essere accessibile tramite:
https://microcks.<YOUR_DOMAIN>.com
https://microcks-grpc.<YOUR_DOMAIN>.com
https://keycloak.<YOUR_DOMAIN>.comOra Microcks è in esecuzione su un cluster OVHcloud Managed Kubernetes Service, esposto tramite Gateway API e protetto con certificati TLS gestiti da cert-manager.
Conclusione e prossimi step
In questo post hai scoperto come implementare Microcks su un cluster Managed Kubernetes Service di OVHcloud e l'hai esposto utilizzando l'implementazione della Kubernetes Gateway API di Envoy Gateway e un Load Balancer del Public Cloud OVHcloud. I certificati TLS sono gestiti con cert-manager e Let's Encrypt.
Ora puoi eseguire il mocking e il testing delle API direttamente da un cluster MKS.
Per un ambiente di produzione, un'altra opzione è quella di utilizzare OVHcloud Managed Databases per PostgreSQL e MongoDB invece di eseguire questi componenti di database direttamente nel cluster Kubernetes. Questo approccio separa la piattaforma di applicazione dall'infrastruttura del database e consente di usufruire di servizi di database gestiti.
Sei pronto? Crea il tuo primo cluster Managed Kubernetes e implementa Microcks in meno di 30 minuti. Per seguire le ultime funzionalità in arrivo per i prodotti OVHcloud Public Cloud, dai un'occhiata a Cloud Roadmap & Changelog.