You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/quickstart.md
+76-3Lines changed: 76 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -12,19 +12,23 @@ The first provider installed of a family also installs an extra provider-family
12
12
> [!NOTE]
13
13
> Always install the family provider first to ensure anticipated/right version of image is pulled. Installing sub-provider first creates a missing dependency issue, which the crossplane package-manager always resolves by pulling latest family provider image. It might lead to unexpected behavior.
14
14
15
+
> [!IMPORTANT]
16
+
> Adhere to the following naming format for providers as: `(organization)-(provider-name)`, eg: oracle-samples-provider-family-oci.
17
+
> When pulling the image from a registry, crossplane formats the name as `registry.io/organization/provider-name:tags`, eg: ghcr.io/oracle-samples/provider-family-oci:v0.0.1-alpha.1-amd64.
18
+
> Crossplane behavior and corresponding steps to resolve conflict detailed in section: [Owner references conflict](#owner-references-conflict)
### Optional: Pulling images from private registry
52
+
If you are required to pull images from private registries instead of `ghcr.io`. Mirror the images into, for example `registry1.io`, then utilize the following `ImageConfig` sample to rewrite image paths and configure a pull secret.
53
+
54
+
[The official crossplane documents](https://docs.crossplane.io/latest/packages/image-configs/#rewriting-image-paths) covers the rewrite image paths in more details.
55
+
```
56
+
---
57
+
apiVersion: pkg.crossplane.io/v1beta1
58
+
kind: ImageConfig
59
+
metadata:
60
+
name: private-registry-rewrite
61
+
spec:
62
+
matchImages:
63
+
- prefix: ghcr.io
64
+
rewriteImage:
65
+
prefix: registry1.io
66
+
67
+
# Configure pull secrets for registry1.io
68
+
---
69
+
apiVersion: pkg.crossplane.io/v1beta1
70
+
kind: ImageConfig
71
+
metadata:
72
+
name: private-registry-auth
73
+
spec:
74
+
matchImages:
75
+
- type: Prefix
76
+
prefix: registry1.io
77
+
registry:
78
+
authentication:
79
+
pullSecretRef:
80
+
name: private-registry-credentials
81
+
```
47
82
## Configure family provider for OCI
48
83
49
84
The official provider-family requires credentials to create and manage OCI resources.
> Never delete a family provider before deleting its sub-providers. Deleting a family provider while sub-providers are still installed can lead to unexpected behavior and potential errors.
185
-
220
+
221
+
## Owner references conflict
222
+
Crossplane’s package manager establishes an ownership chain between a family Provider (parent) and each sub‑provider (child) using metadata.ownerReferences on the child’s ProviderRevision. The owner reference encodes the parent Provider’s “package identity” as a name that the package manager expects to persist:
- If the family Provider is deleted or reinstalled with a different metadata.name while any sub‑providers or their ProviderRevisions still exist, Crossplane will attempt to satisfy the outstanding owner reference by automatically pulling a Provider with the name encoded in the ownerReferences (from the same registry as the sub‑provider’s image).
239
+
- This results in two family Providers trying to coexist (the one you applied and the one auto‑installed to satisfy the ownerRef), which leads to unhealthy/competing ProviderRevisions and confusing state during upgrades.
240
+
241
+
Typical symptoms
242
+
- An unexpected Provider with name - appears after you delete or rename your family Provider.
243
+
- providerrevisions stuck in Unhealthy/Inactive with messages about conflicting ownership or multiple controlling owners.
244
+
- Repeated reconcile loops pulling a family image you did not specify explicitly.
245
+
246
+
### Resolving duplicate family providers
247
+
248
+
Proceed with clean up of managed resource(s) and providers in order. Refer to the sections: [Delete the managed resource](#delete-the-managed-resource) and [Delete the providers](#delete-the-providers).
249
+
250
+
After deletion, check for the existence of duplicate family provider by
251
+
```
252
+
$ kubectl get providers
253
+
```
254
+
255
+
If exists, delete the duplicated family provider by
0 commit comments