Reconciliation Frequencey

ASO is reconciling too often

ASO will continue actively reconciling resources, even after they have been created. This is by design, as ASO is a desired-state operator. It will continue to check the state of resources and update them if they are not in the desired state.

Action: change reconciliation interval

By default, ASO will try to reconcile each resource once an hour once it has been successfully deployed.

If it’s necessary to change ASO so that it reconciles less frequently, set the AZURE_SYNC_PERIOD environment variable to a longer value.

ASO doesn’t reconcile often enough

a.k.a. ASO is too slow to update resources

ASO works by polling Azure Resource Manager (ARM). Recognition of changes requiring might be delayed until the next scheduled poll. This sometimes results in observed delays in ASO acting to achieve the desired goal state of resources.

Action: change reconciliation interval

By default, ASO will try to reconcile each resource once an hour once it has been successfully deployed.

If it’s necessary to change ASO so that it reconciles more frequently,set the AZURE_SYNC_PERIOD environment variable.

Warning: Polling more frequently runs the risk of triggering ARM throttling that affects the entire subscription, not just ASO. Setting the reconciliation interval lower than 15m is not recommended.

ASO keeps reconciling even after the resource has been created

a.k.a. ASO keeps doing PUTs when nothing has changed

If you keep a close eye on your Azure Operation logs, you will see that ASO continues to interact with ARM after resources have been successfully created.

It’s a subtle difference, but ASO is not a deployment tool. You don’t hand ASO a manfiest of resources for it to create.

ASO is a desired state tool. You give it a manifest describing the resources you require. Any that are missing, will be created. Any that are present but with the wrong configuration will be updated to comply with the desired state. And, ASO will continue to maintain that desired state for as long as it is running.

The current design of ASO is that it performs period reconciliation by doing a PUT of the resource, relying on ARM to determine if the resource has changed. If you ware interestd in ASO adopting a more sophisticated approach, where the status of the resource is compared to the desired state and a PUT performed only if a change is necessary, follow #2811.

Action: stop ASO from reconciling

If you want to stop ASO from reconciling a particular resource, use the serviceoperator.azure.com/reconcile-policy annotation to instruct ASO to stop reconciling the resource.

Note that this will not stop ASO from monitoring the resource. It will still GET the state of the resource and make that available within the cluster as the status field of the resource.