Update Crossplane GCP Bucket generation rules to use preferred API version
Modified the generation rules for Crossplane GCP Buckets to omit the version in resource type definitions, allowing the use of the API server's preferred version (currently v1beta2). Updated documentation to reflect this change and clarify version pinning for schema stability. Changes include: - Updated YAML generation rules to remove explicit versioning. - Revised documentation to explain the implications of omitting versioning and the preferred version usage. This enhances resilience across CRD upgrades and simplifies the configuration for users.
This commit is contained in:
+6
-3
@@ -4,12 +4,15 @@ spec:
|
|||||||
platform: kubernetes
|
platform: kubernetes
|
||||||
generationRules:
|
generationRules:
|
||||||
# Discover every Crossplane GCP Bucket in the cluster.
|
# Discover every Crossplane GCP Bucket in the cluster.
|
||||||
# Resource type syntax: plural.group/version
|
# Resource type syntax: plural.group[/version]
|
||||||
# plural = buckets (from `kubectl api-resources | grep storage.gcp.upbound.io`)
|
# plural = buckets (from `kubectl api-resources | grep storage.gcp.upbound.io`)
|
||||||
# group = storage.gcp.upbound.io
|
# group = storage.gcp.upbound.io
|
||||||
# version = v1beta1 (omit /version to use the API server's preferred version)
|
# version = omitted (use the API server's preferred version — currently v1beta2)
|
||||||
|
#
|
||||||
|
# Pin an explicit version like `buckets.storage.gcp.upbound.io/v1beta1`
|
||||||
|
# if you need schema stability across CRD upgrades.
|
||||||
- resourceTypes:
|
- resourceTypes:
|
||||||
- buckets.storage.gcp.upbound.io/v1beta1
|
- buckets.storage.gcp.upbound.io
|
||||||
matchRules:
|
matchRules:
|
||||||
# Match every Bucket by name. Swap this regex to scope by naming
|
# Match every Bucket by name. Swap this regex to scope by naming
|
||||||
# convention (for example `^prod-.*` to only cover prod buckets) or
|
# convention (for example `^prod-.*` to only cover prod buckets) or
|
||||||
|
|||||||
@@ -24,12 +24,18 @@ Three things to note:
|
|||||||
|
|
||||||
1. **`buckets`** — this is the *plural resource name*. It is what you
|
1. **`buckets`** — this is the *plural resource name*. It is what you
|
||||||
put in the generation rule, not the singular `Bucket`.
|
put in the generation rule, not the singular `Bucket`.
|
||||||
2. **`storage.gcp.upbound.io/v1beta1`** — the API group and preferred
|
2. **`storage.gcp.upbound.io/v1beta2`** — the API group and preferred
|
||||||
version.
|
version (older `v1beta1` may also be served for compatibility).
|
||||||
3. **`false` in the "NAMESPACED" column** — Crossplane managed resources
|
3. **`false` in the "NAMESPACED" column** — Crossplane managed resources
|
||||||
are **cluster-scoped**. This is why our generation rule uses
|
are **cluster-scoped**. This is why our generation rule uses
|
||||||
`qualifiers: ["resource", "cluster"]` and not `namespace`.
|
`qualifiers: ["resource", "cluster"]` and not `namespace`.
|
||||||
|
|
||||||
|
> **Version pinning:** our rule uses just `buckets.storage.gcp.upbound.io`
|
||||||
|
> (no `/version`), which tells the indexer to use whatever the API server
|
||||||
|
> reports as preferred. That's the most resilient choice across CRD
|
||||||
|
> upgrades. Pin `/v1beta1` or `/v1beta2` only when you deliberately need
|
||||||
|
> a specific schema.
|
||||||
|
|
||||||
Screenshot placeholder: `images/03-kubectl-api-resources.png` — output of
|
Screenshot placeholder: `images/03-kubectl-api-resources.png` — output of
|
||||||
the above command.
|
the above command.
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ spec:
|
|||||||
platform: kubernetes
|
platform: kubernetes
|
||||||
generationRules:
|
generationRules:
|
||||||
- resourceTypes:
|
- resourceTypes:
|
||||||
- buckets.storage.gcp.upbound.io/v1beta1
|
- buckets.storage.gcp.upbound.io
|
||||||
matchRules:
|
matchRules:
|
||||||
- type: pattern
|
- type: pattern
|
||||||
pattern: ".+"
|
pattern: ".+"
|
||||||
@@ -53,9 +53,13 @@ spec:
|
|||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
resourceTypes:
|
resourceTypes:
|
||||||
- buckets.storage.gcp.upbound.io/v1beta1
|
- buckets.storage.gcp.upbound.io
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Omitting `/v1beta2` (or `/v1beta1`) tells the indexer to use the API
|
||||||
|
server's preferred version, which survives CRD schema upgrades. Pin the
|
||||||
|
version only when you rely on a specific schema shape.
|
||||||
|
|
||||||
This is the *selective discovery* signal. Because this string appears in
|
This is the *selective discovery* signal. Because this string appears in
|
||||||
a loaded rule, the Kubernetes indexer knows to enumerate that CRD.
|
a loaded rule, the Kubernetes indexer knows to enumerate that CRD.
|
||||||
Without any rule mentioning a CRD, it would not be listed.
|
Without any rule mentioning a CRD, it would not be listed.
|
||||||
|
|||||||
Reference in New Issue
Block a user