Troubleshooting¶
Common issues¶
Provider not becoming healthy¶
Symptom: kubectl get providers shows the provider stuck in Installing or Unhealthy.
Steps:
-
Check provider pod logs:
-
Verify the provider package is accessible:
-
Ensure Crossplane v2.x is installed — this provider does not support v1.x.
Resources stuck in "Creating" or not syncing¶
Symptom: kubectl get <resource> shows SYNCED=False or READY=False.
Steps:
-
Describe the resource for events and conditions:
-
Check the provider logs for API errors:
-
Verify your
ProviderConfigcredentials are correct — a 401 response means an invalid API key.
ProviderConfig not found¶
Symptom: Resources show cannot find referenced ProviderConfig.
Fix: Ensure a ProviderConfig named default exists, or set spec.providerConfigRef.name on each resource to match your config name.
"Forbidden" or 403 errors¶
Symptom: Provider logs show 403 responses from the Checkly API.
Cause: The API key lacks permissions for the requested resource type, or the account_id doesn't match.
Fix: Verify the API key and account ID in your credentials secret. Regenerate the API key from the Checkly dashboard if needed.
Namespace-scoped vs cluster-scoped confusion¶
Symptom: kubectl get checks returns nothing, but resources exist.
Cause: You may be using the wrong API group. Namespace-scoped and cluster-scoped resources use different API groups.
Fix: Check both:
# Namespace-scoped
kubectl get checks.checks.checkly.crossplane.io -n <namespace>
# Cluster-scoped
kubectl get checks.checks.checkly.m.crossplane.io
Getting help¶
- GitHub Issues — bug reports and feature requests.
- Crossplane Slack — community support.
- Checkly documentation — Checkly API and feature reference.