Crossplane Sync Issues
Problem: Resource is not Synced
SYNCED=False means the desired state doesn't match the observed state. Check status.conditions for the Synced condition message:
kubectl get ${RESOURCE_TYPE} ${RESOURCE_NAME} -o jsonpath='{.status.conditions[?(@.type=="Synced")]}'
Common causes:
- Invalid field values in your configuration
- External API returned an error during create/update
- Missing dependencies (referenced resources don't exist)
Note: Some Managed Resources share the same kind but belong to different API groups. For example, Azure providers have three different
RoleAssignmenttypes. Ifkubectl get RoleAssignment/my-resourcereturns unexpected results, use the fully qualified type (e.g.,RoleAssignment.authorization.azure.upbound.io).
Common Error Patterns
| Condition/Error | Where it Appears | Meaning | Action |
|---|---|---|---|
Synced: ReconcileError | MR | Crossplane encountered an error communicating with external provider | Check the condition message for the error from the external API |
Synced: ReconcilePaused | MR | Resource has a pause annotation | Remove pause annotation if unintentional |
Common Azure API Errors
These errors appear in the ReconcileError message:
| Azure Error | Meaning | Action |
|---|---|---|
AuthorizationFailed | Missing Azure RBAC permissions | Contact Ybor support |
ResourceNotFound | Referenced Azure resource doesn't exist | Verify the resource exists in the external provider |
InvalidParameter / BadRequest | Invalid configuration value | Check error message for which value is invalid; contact Ybor support |
Conflict | Resource naming conflict | Check for duplicate resources in the external provider |