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 myservice.mycompany.com. All clients are using myservice.mycompany.com to access old services in ns-A.
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: myservice-B.mycompany.com and update all service to use this new endpoint.
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.
is it possible to use DNS cutover or cluster-internal DNS names to canary rollout? Could you please give more details? Thanks
You could implement canary on ingress level, rather than DNS one. Say, fresh versions of
ingress-nginxsupport canary deployments out of box.https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/#canary.
Great example here.
https://medium.com/@domi.stoehr/canary-deployments-on-kubernetes-without-service-mesh-425b7e4cc862
Note, that
ingress-nginxcanary implementation requires your services to be in different namespaces.