<p>I have deployed a Linkerd Service mesh and my Kubernetes cluster is configured with the Nginx ingress controller as a DaemonSet and all the ingresses are working fine also the Linkerd. Recently, I have  added a traffic split functionality to run my blue/green setup I can reach through to these services with separate ingress resources. I have created an apex-web service as described <a href="https://github.com/BuoyantIO/emojivoto/blob/linux-training/training/traffic-split/web-apex.yml" rel="nofollow noreferrer">here</a>. If I reached you this service internally it perfectly working. I have created another ingress resources and I'm not able to test the blue/green functionality outside of my cluster. I'd like to mention that I have meshed (injected the Linkerd proxy) to all my Nginx pods but it is returning &quot;<code>503 Service Temporarily Unavailable</code>&quot; message from the Nginx.</p>
<p>I went through the documentation and I have created ingress following <a href="https://linkerd.io/2/tasks/using-ingress/#nginx" rel="nofollow noreferrer">this</a>, I can confirm that below annotations were added to the ingress resources.</p>
<pre><code>annotations:
kubernetes.io/ingress.class: &quot;nginx&quot;
nginx.ingress.kubernetes.io/configuration-snippet: |
  proxy_set_header l5d-dst-override $service_name.$namespace.svc.cluster.local:$service_port;
  grpc_set_header l5d-dst-override $service_name.$namespace.svc.cluster.local:$service_port;
</code></pre>
<p>but still no luck with the out side of the cluster.</p>
<p>I'm testing with the given emojivoto app and all the traffic split and the apex-web services are in <a href="https://github.com/BuoyantIO/emojivoto/tree/linux-training/training/traffic-split" rel="nofollow noreferrer">this</a> training repository.</p>
<p>I'm not quite sure what went wrong and how to fix this outside from the cluster. I'd really  appreciate if anyone assist me to fix this Linkerd, Blue/Green issue.</p>

<p>I have raised this question in the Linkerd Slack channel and got this fixed with the wonderful support from the community. Seems Nginx doesn't like the service which doesn't have an endpoint. My configuration was correct and asked to change the service pointed in the traffic split to a service with an endpoint and it fixed the issue.</p>
<p>In a nutshell, my traffic split was configured with web-svc and web-svc-2 services. I have changed the traffic split spec.service to the same web-svc and it worked</p>
<p>Here is the traffic split configuration after the update.</p>
<pre><code>apiVersion: split.smi-spec.io/v1alpha1
kind: TrafficSplit
metadata:
  name: web-svc-ts
  namespace: emojivoto
spec:
  # The root service that clients use to connect to the destination application.
  service: web-svc
  # Services inside the namespace with their own selectors, endpoints and configuration.
  backends:
  - service: web-svc
    # Identical to resources, 1 = 1000m
    weight: 500m
  - service: web-svc-2
    weight: 500m
</code></pre>
<p>Kudos to the Linkerd team who supported me to fix this issue. It is working like a charm.</p>
