Shipper now uses Endpoints to check for traffic progression (#238), which is an improvement over just checking that pods got their labels. If pods don't make it into the Endpoints object, shipper will no longer declare the TrafficTarget as Ready, but we're still lousy at relaying to the user what could possibly be wrong if the pods just don't make it.
There are two obvious reasons why that could happen. The first one, where we can't do much about, is that kubernetes is still busy taking the label shifting into account, but things will eventually converge.
The other reason, where things won't eventually converge, is when the app's Service object has a selector that will never match any pods. If that's the case, shipper will just say "0 out of X pods are not ready", which makes no sense (my traffic target should be ready if nothing is not ready!). To prevent that, the traffic controller should validate that the service has a selector that will match pods, and report the appropriate error through a condition in the TrafficTarget, before doing any actual traffic shifting.
Shipper now uses Endpoints to check for traffic progression (#238), which is an improvement over just checking that pods got their labels. If pods don't make it into the Endpoints object, shipper will no longer declare the TrafficTarget as Ready, but we're still lousy at relaying to the user what could possibly be wrong if the pods just don't make it.
There are two obvious reasons why that could happen. The first one, where we can't do much about, is that kubernetes is still busy taking the label shifting into account, but things will eventually converge.
The other reason, where things won't eventually converge, is when the app's Service object has a selector that will never match any pods. If that's the case, shipper will just say "0 out of X pods are not ready", which makes no sense (my traffic target should be ready if nothing is not ready!). To prevent that, the traffic controller should validate that the service has a selector that will match pods, and report the appropriate error through a condition in the TrafficTarget, before doing any actual traffic shifting.