Reusing VirtualServices

To route a percentage of traffic between the baseline and candidate versions of a service, iter8 creates and modifies an Istio VirtualService and a set of DestinationRules (one for each of the baseline and canidate versions). In some cases, a VirtualService may already exist. Edge services will typically require a VirtualService to exists to route traffic to the service. For example, when the bookinfo application (used in the Canary and A/B/n tutorials) is deployed, a VirtualService is created to route traffic to the productpage microservice.

Iter8 can reuse an existing VirtualService if it can identify the apporopriate one to use. In general, iter8 cannot do so without assistance; to identify it to iter8, add the following labels to the VirtualService:

iter8-tools/router: IDENTIFIER
iter8-tools/role: stable

If IDENTIFIER is of the form <service>.<namespace>.svc.cluster.local, nothing further is needed. If it is not, add it to the Experiment:

  networking:
    id: IDENTIFIER

For an example, see the VirtualService and Experiment used in the A/B/n tutorial.