Skip to main content

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 RoleAssignment types. If kubectl get RoleAssignment/my-resource returns unexpected results, use the fully qualified type (e.g., RoleAssignment.authorization.azure.upbound.io).

Common Error Patterns

Condition/ErrorWhere it AppearsMeaningAction
Synced: ReconcileErrorMRCrossplane encountered an error communicating with external providerCheck the condition message for the error from the external API
Synced: ReconcilePausedMRResource has a pause annotationRemove pause annotation if unintentional

Common Azure API Errors

These errors appear in the ReconcileError message:

Azure ErrorMeaningAction
AuthorizationFailedMissing Azure RBAC permissionsContact Ybor support
ResourceNotFoundReferenced Azure resource doesn't existVerify the resource exists in the external provider
InvalidParameter / BadRequestInvalid configuration valueCheck error message for which value is invalid; contact Ybor support
ConflictResource naming conflictCheck for duplicate resources in the external provider