Wait for Resource Status to Apply Configuration

Istio’s mesh configuration is declarative, which means that you define a configuration and Istio propagates the changes through the mesh over time. As a result, your command might attempt to use your service mesh before the relevant resources are ready.

In Istio 1.6 and later, you can use the kubectl wait command to have more control over the way that Istio applies configuration changes to the mesh. To make this possible, the kubectl wait command monitors the status field of the resource’s status, which Istio updates as it propagates configuration changes.

Before you begin

This feature is off by default. Enable the status field as part of Istio installation using the following command. If you enable it after installation, you must re-deploy the control plane.

$ istioctl install --set values.pilot.env.PILOT_ENABLE_STATUS=true --set values.global.istiod.enableAnalysis=true

Wait for resource readiness

You can apply a change to a virtual service and then wait for completion, using the following commands:

$ kubectl apply -f virtual_service_name.yaml
$ kubectl wait --for=condition=Reconciled virtual_service/name

This blocking command does not release until the virtual service has been distributed to all proxies in the mesh, or until the command times out.

When you use the kubectl wait command in a script, the return code will be 0 for success, or a non-zero value for time out.

For more information about usage and syntax, see the kubectl wait command.

Was this information useful?
Do you have any suggestions for improvement?

Thanks for your feedback!