<p>I just read the documentation of istio 1.0.0, especially its concept. There is one thing that I am trying to understand, especially the existence of <a href="https://istio.io/docs/concepts/traffic-management/#rule-configuration" rel="noreferrer"><code>DestinationRule</code></a>. So, before using Istio, the only way to expose pods is through Kubernetes's <code>Service</code> object. Now, using Istio, there are <code>DestinationRule</code> and <code>VirtualService</code>. </p>

<p>I understand that in Kubernetes's service, we can define what pod's label should the <code>service</code> routes the traffic. In istio, we also capable of do that by using <code>DestionationRule</code>'s <code>spec.subsets.label</code> field. What happen if we have <code>Service</code> and <code>DestinationRule</code> object in the same namespace? Does it conflicted each other?</p>

<p>They complement each other. You still have to define a Kubernetes service, but the Istio <code>DestinationRules</code> will allow you to refine "subsets" in that service, via labels, and then route traffic intelligently between subsets used in a <code>VirtualService</code> object. You can still see the Kubernetes Service as the global entry point, but Istio will take the routing a step further by letting you declaring "versions" that may point to different deployments.</p>

<p>See in the istio docs ( <a href="https://istio.io/docs/reference/config/networking/virtual-service/" rel="nofollow noreferrer">https://istio.io/docs/reference/config/networking/virtual-service/</a> ) how the <code>VirtualService</code> definition relates to the subsets declared in <code>DestinationRules</code>.</p>

<p>The labels that you can see in subsets have to match labels set on your deployments/pods.</p>
