Until now, we were relying on producer policy created previously. Let’s assume that we don’t mind waiting a little longer
for the response from demo-app, and we would like to override the timeout just for our namespace. To do so we need to create new policy:
echo "apiVersion: kuma.io/v1alpha1
kind: MeshTimeout
metadata:
name: consumer-timeout
namespace: first-consumer
labels:
kuma.io/mesh: default
kuma.io/origin: zone
spec:
to:
- targetRef:
kind: MeshService
labels:
k8s.kuma.io/service-name: demo-app
default:
http:
requestTimeout: 3s" | kubectl apply -f -
When we now make requests from the first-consumer namespace all the requests should succeed, but they will take longer:
kubectl exec -n first-consumer consumer -- curl -s -XPOST demo-app.kuma-demo:5000/increment -H "x-set-response-delay-ms: 2000"
We have just applied a consumer policy. The timeout will only be applied in the first-consumer
namespace.
We can test this by making requests from our second-consumer namespace:
kubectl exec -n second-consumer consumer -- curl -s -XPOST demo-app.kuma-demo:5000/increment -H "x-set-response-delay-ms: 2000"
We should still see timeouts:
To better visualize this we can look again at our diagram and see that only traffic from first-consumer
will be affected.
flowchart LR
subgraph first-consumer-ns
first-consumer
end
subgraph second-consumer-ns
second-consumer
end
subgraph kuma-demo-ns
kuma-demo
redis
end
kuma-demo --> redis
first-consumer --consumer-timeout--> kuma-demo
second-consumer --producer-timeout--> kuma-demo