<p>I have two similar services/deployments/ingress running in two GKE/K8S namespaces: ns-A (old), ns-B (new). The ingress of ns-A is like <code>myservice.mycompany.com</code>. All clients are using <code>myservice.mycompany.com</code> to access old services in ns-A.</p>
<p>Now, I need to rollout the traffic from ns-A to ns-B. I need all clients to access the new service in ns-B. I can create a new Ingress for new service in ns-B: <code>myservice-B.mycompany.com</code> and update all service to use this new endpoint.</p>
<p>but I have many clients. it is possible to use other ways to do canaries rollout from ns-A to ns-B. I looked into contour, but contour cannot support two namespaces rollout.</p>
<p>is it possible to use DNS cutover or cluster-internal DNS names to canary rollout? Could you please give more details? Thanks</p>

<p>You could implement canary on ingress level, rather than DNS one.
Say, fresh versions of <code>ingress-nginx</code> support canary deployments out of box.<br />
<a href="https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/#canary" rel="nofollow noreferrer">https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/#canary</a>.</p>
<p>Great example here.<br />
<a href="https://medium.com/@domi.stoehr/canary-deployments-on-kubernetes-without-service-mesh-425b7e4cc862" rel="nofollow noreferrer">https://medium.com/@domi.stoehr/canary-deployments-on-kubernetes-without-service-mesh-425b7e4cc862</a></p>
<p>Note, that <code>ingress-nginx</code> canary implementation <em><strong>requires</strong></em> your services to be in different namespaces.</p>
