feat(gcp): pin crossplane-configuration-gcp v0.2.0 - #1825
Merged
Conversation
Wires the GCP Crossplane API released today. #1824 deliberately left this out because the tag did not exist; it does now. Also bumps the AWS pin v0.1.0 -> v0.2.0, which is not incidental. The schema catalog is derived from a single pin — gen-catalog.sh reads XPKG_SOURCE, the AWS configuration-packages.yaml — and fetches that release's xrd-crds.yaml asset. Left at v0.1.0 the catalog carries 5 XRDs and no GCPWorkloadIdentity, so the first GCP claim added to this repo would hard-fail validation under skipMissingSchemas: false. Loud rather than silent, but it would make the new API unusable here. The alternative was teaching gen-catalog.sh to merge assets from several pins. That script carries an explicit warning against growing conditional logic in the fetch, because a second seam is how the catalog drifts from what is installed — and merging two assets means handling CRDs that appear in both. One version across both clouds keeps it a single seam. Safe because the AWS package did not change: the package.yaml inside crossplane-configuration-aws v0.1.0 and v0.2.0 is byte-identical (189403 bytes, same 6 kinds), verified by pulling both from ghcr.io. The bump deploys the same content under a new revision. This is also not the #1774 adopt-vs-prune case — the AWS XRDs are already package-owned, so there is nothing for Flux to delete in between. Per CLAUDE.md the App Wizard's fetch-crossplane-configuration clone tag moves in the same change, or the form and render preview describe a different API version than the cluster serves. Five website pages cited v0.1.0 and none are covered by .doc-claims.yaml, so they would have gone stale silently. Updated. No prune: disabled dance for the GCP pin: that procedure exists because a package adopts XRDs Flux still has in its inventory, and no GCPWorkloadIdentity XRD or claim has ever existed on any cluster. Recorded in the kustomization so the exemption is not mistaken for the general rule. Evidence: validate-manifests.sh exit 0, Valid: 1216, Invalid: 0, Skipped: 0; the catalog now builds 6 XRD schemas including gcpworkloadidentity_v1alpha1.json, whose published schema matches the shipped API (serviceAccount carries name only, root required: [spec]); validate-links.sh and validate-doc-claims.sh exit 0.
Contributor
🔍 Rendered manifest diff — this PR vs
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Wires the GCP Crossplane API released today as
crossplane-configurationv0.2.0. #1824 deliberately omitted this because the tag did not exist yet.Completes workstream 5 of the GCP support design.
The AWS pin bump is not incidental
The schema catalog is derived from one pin.
gen-catalog.shreadsXPKG_SOURCE— the AWSconfiguration-packages.yaml— and fetches that release'sxrd-crds.yamlasset.Left at
v0.1.0, the catalog carries 5 XRDs and noGCPWorkloadIdentity, so the first GCP claim added to this repo would hard-fail validation underskipMissingSchemas: false. Loud rather than silent, but it makes the new API unusable here — a half-wired pin.The alternative was worse. Teaching
gen-catalog.shto merge assets from several pins means handling CRDs that appear in both, and that script carries an explicit warning against growing conditional logic in the fetch, because a second seam is how the catalog drifts from what is actually installed. One version across both clouds keeps it a single seam.Safe because the AWS package did not change. The
package.yamlinsidecrossplane-configuration-awsv0.1.0andv0.2.0is byte-identical — 189403 bytes, same 6 kinds — verified by pulling both from ghcr.io rather than assuming it from the diff. The bump deploys the same content under a new revision.It is also not the #1774 adopt-vs-prune case: the AWS XRDs are already package-owned, so there is nothing for Flux to delete in between.
Per CLAUDE.md, the App Wizard's
fetch-crossplane-configurationclone tag moves in the same change — otherwise the form and render preview describe a different API version than the cluster serves.No
prune: disabledcutover for the GCP pinThat procedure exists because a package adopts XRDs that Flux still holds in its inventory, and prune deletes them in the gap, taking every claim with them.
No
GCPWorkloadIdentityXRD or claim has ever existed on any cluster — nothing to adopt, nothing to destroy. The exemption is specific to a first install and is recorded in the kustomization so it is not mistaken for the general rule. It applies again the moment this package reaches a second cluster.Documentation
Five website pages cited
v0.1.0and none are covered by.doc-claims.yaml, so they would have gone stale silently. Updated. The crossplane README's per-cloud table now shows both pins and states the cutover rule once.Evidence
./scripts/validate-manifests.shValid: 1216, Invalid: 0, Skipped: 0gcpworkloadidentity_v1alpha1.json(was 5)serviceAccountcarriesnameonly, rootrequired: [spec], roles pattern includes the numeric-project formpackage.yaml, pulled from ghcr.io./scripts/validate-links.sh./scripts/validate-doc-claims.shThe schema check is the meaningful one: it proves source → release → registry → catalog all line up, including the namespace-confinement fix made during review.
Still not verified
Nothing here has run against a live GCP project. The provider has never authenticated and the composition has never created an IAM binding — design criteria 18–21 need a rebuild. A healthy
ClusterProviderConfigproves nothing on its own; the firstProjectIAMMemberis the real test of the Workload Identity binding.