0
0
Kubernetesdevops~10 mins

A/B testing with Ingress in Kubernetes - Step-by-Step Execution

Choose your learning style9 modes available
Process Flow - A/B testing with Ingress
User sends request
Ingress receives request
Check routing rules
Route to Service A (e.g., 70% traffic)
Route to Service B (e.g., 30% traffic)
Service A or B processes request
Response sent back to user
User requests come to Ingress, which routes them to different services based on defined traffic weights for A/B testing.
Execution Sample
Kubernetes
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ab-testing-ingress
spec:
  rules:
  - http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: service-a
            port:
              number: 80
      - path: /
        pathType: Prefix
        backend:
          service:
            name: service-b
            port:
              number: 80
Example Ingress defining backends for service-a and service-b. Note: Native Kubernetes Ingress does not support weighted traffic splitting (e.g., 70/30). Use an Ingress controller like NGINX with canary annotations (nginx.ingress.kubernetes.io/canary: "true", nginx.ingress.kubernetes.io/canary-weight: "30") for actual A/B testing. The execution simulates weighted routing.
Process Table
StepRequest IDIngress Routing DecisionTraffic WeightService RoutedResponse
1req-001Check routing rules70% to service-a, 30% to service-bservice-aResponse from service-a
2req-002Check routing rules70% to service-a, 30% to service-bservice-bResponse from service-b
3req-003Check routing rules70% to service-a, 30% to service-bservice-aResponse from service-a
4req-004Check routing rules70% to service-a, 30% to service-bservice-aResponse from service-a
5req-005Check routing rules70% to service-a, 30% to service-bservice-bResponse from service-b
6req-006Check routing rules70% to service-a, 30% to service-bservice-aResponse from service-a
Exit-Traffic routing complete for requests---
💡 All requests routed according to 70/30 traffic split; testing complete
Status Tracker
VariableStartAfter req-001After req-002After req-003After req-004After req-005After req-006Final
service-a count01123344
service-b count00111222
Key Moments - 2 Insights
How does Ingress decide which service to route a request to?
Ingress uses the defined traffic weights (e.g., 70% to service-a, 30% to service-b) to route requests probabilistically, as shown in the execution_table where requests are distributed accordingly.
Why do some requests go to service-b even though service-a has higher traffic weight?
Because traffic is split by percentage, some requests will go to service-b to test the alternative version; this is visible in execution_table rows where service-b handles some requests.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, how many requests were routed to service-b after 6 requests?
A2
B3
C4
D1
💡 Hint
Check the 'Service Routed' column in execution_table rows for requests routed to service-b.
At which step does the third request get routed to service-a?
AStep 2
BStep 3
CStep 4
DStep 5
💡 Hint
Look at the 'Request ID' and 'Service Routed' columns in execution_table.
If the traffic weight changes to 50% for each service, how would the variable_tracker change after 6 requests?
Aservice-b count would be 6, service-a 0
Bservice-a count would be 6, service-b 0
Cservice-a and service-b counts would be about equal, around 3 each
Dservice-a count would be 4, service-b 2
💡 Hint
Traffic weights control distribution; equal weights mean roughly equal counts in variable_tracker.
Concept Snapshot
A/B testing with Ingress routes user requests to multiple services.
Traffic split is controlled by weights (e.g., 70% to service-a, 30% to service-b).
Ingress checks routing rules for each request and sends it accordingly.
This allows testing different versions live without downtime.
Monitor counts to verify traffic distribution matches weights.
Full Transcript
In A/B testing with Ingress, user requests come to the Ingress controller. The Ingress checks routing rules that define how to split traffic between two services, for example, 70% to service-a and 30% to service-b. Each request is routed based on these weights. Over multiple requests, the distribution approximates the defined split. This lets you test different versions of your app live. The execution table shows each request's routing decision and response. The variable tracker counts how many requests each service handled. Key points include understanding how routing decisions are made and why some requests go to the lower-weighted service. Changing traffic weights changes the distribution of requests accordingly.