Understanding GCP Provider Reconcile Rates and API Call Volume
Last updated: April 9, 2026
When running GCP providers with a large number of managed resources, you may notice high API call volumes to GCP services. This article explains the default reconcile behavior and how to optimize API usage.
Default Reconcile Behavior
By default, managed resources are re-queued for observation approximately every 10 minutes via the provider's --poll interval. Each observation may result in one or more GCP API read calls, so with thousands of managed resources, significant API traffic is expected during normal operation.
Provider Restart Behavior
When a provider restarts, its controller-runtime cache is rebuilt from scratch. During this initialization:
All managed resources are re-queued for reconciliation immediately
The provider does not wait for the next scheduled poll interval
This creates a visible burst of API traffic as all resources perform an observation cycle
This behavior is expected and necessary to ensure drift detection and status accuracy after restart.
Reducing API Call Volume
If API quota pressure becomes a concern, you can tune the following settings:
Increase Poll Interval
Adjusting the poll interval is the most effective way to reduce overall API traffic:
--poll=30mreduces drift checks by roughly 3×--poll=1hreduces them by roughly 6×
Limit Reconcile Rate
Use --max-reconcile-rate to throttle how quickly reconciliation requests are processed. This applies to both steady-state operation and post-restart bursts.
Configuration via DeploymentRuntimeConfig
Both settings can be configured using a DeploymentRuntimeConfig:
apiVersion: pkg.crossplane.io/v1beta1
kind: DeploymentRuntimeConfig
metadata:
name: provider-rate-config
spec:
deploymentTemplate:
spec:
template:
spec:
containers:
- name: package-runtime
args:
- --max-reconcile-rate=10
- --poll=30mReference this configuration from your Provider:
apiVersion: pkg.crossplane.io/v1
kind: Provider
metadata:
name: provider-gcp-kms
spec:
package: xpkg.upbound.io/upbound/provider-gcp-kms:v2.x.x
runtimeConfigRef:
name: provider-rate-configImportant Notes
The
--max-reconcile-rateflag must be applied to the provider pod itself via DeploymentRuntimeConfigProvider restarts will always cause API traffic spikes, but this is typically small relative to total monthly volume
Reducing concurrency can help spread processing over longer windows and soften restart bursts