feat!: remove the Gate CRD from extraObjects (shipped by platform-crds) - #62
Merged
Merged
Conversation
The gates.platform.glueops.dev CustomResourceDefinition is now delivered by the platform-crds layer-0 bundle, which captain_utils applies with server-side apply before the argocd release and before the platform chart. Rendering the same CRD from the argocd Helm release would make two writers own one object, so the argocd release stops shipping it. The gatekeeper Namespace, ServiceAccount, ClusterRole, ClusterRoleBinding, Deployment and Service stay in extraObjects, as does the argocd-server-api Ingress. crds.install stays false: ArgoCD's own CRDs also come from the bundle. Also reword the comment above the argoproj.io_Application health customization: it only takes effect for Applications that are children of another Application (tenant apps under captain-manifests); the platform chart's own Applications are created by Helm and have no parent, so the old "we are using sync-waves" rationale was misleading. BREAKING CHANGE: on existing clusters the next helm upgrade of the argocd release deletes the live gates.platform.glueops.dev CRD (no Gate resources exist in prod). Run the captain_utils crds step again after the argocd upgrade to recreate it from the bundle. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019uDhM6cLPHUeRb7GFNo96c
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.
Summary
Platform CRDs are moving to a layer-0 bundle: the new
GlueOps/platform-crdsOCI chart is applied bycaptain_utils → crdswith server-side apply before the argocd release and before the platform chart, and no Helm release or ArgoCD Application renders a CRD any more. Thegates.platform.glueops.devCustomResourceDefinition was the one CRD still shipped by the argocd release (extraObjects); this PR removes it so the bundle is the single owner of that object (plan decision 7).The gatekeeper workload itself (Namespace, ServiceAccount, ClusterRole, ClusterRoleBinding, Deployment, Service) and the
argocd-server-apiIngress stay inextraObjects.crds.install: falsestays: ArgoCD's own CRDs also come from the bundle.While in the file, the comment above the
argoproj.io_Applicationhealth customization is reworded: that customization only takes effect for Applications that are children of another Application (tenant apps under captain-manifests); the platform chart's own Applications are created by Helm and have no parent, so the previous "we are using sync-waves" rationale was misleading.Changes
argocd.yaml.tplapiextensions.k8s.io/v1CustomResourceDefinitiongates.platform.glueops.deventry fromextraObjects(99 lines: the whole entry through the end of itsstatusschema).extraObjectsgoes from 8 entries to 7; no other entry is touched.resource.customizations.health.argoproj.io_Applicationblock (was:# enables health check assessment for argocd applications as we are using sync-waves).crds.install: falseis unchanged.Verification
Run from the repo root on this branch (yq v4.53.3, OpenTofu v1.11.11 as
terraform):(The planned check
yq -e '.extraObjects | map(.kind) | index("CustomResourceDefinition") == null'does not parse in mikefarah yq v4 (indexis not an operator there); the twoselect/containsforms above are the equivalent and both pass.)Notes for the reviewer
gates.platform.glueops.devCRD today, so the nexthelm upgradeof the argocd release with these values deletes it. No Gate resources exist in prod, so nothing is garbage-collected. Thecaptain_utils crdsstep must run again after the argocd upgrade to recreate the CRD from the bundle; gatekeeper does not crash while the CRD is absent (it uses a per-request dynamic client). Sequence per cluster:crds → argocd → crds → glueops-platform.platform-crdsbundle exists and thecaptain_utilscrdsstep (GlueOps/codespaces) is available; the terraform module (terraform-module-cloud-multy-prerequisites) bump that picks up this docs-argocd release should land together with theplatform_crds_versionpin so a single module?ref=bump carries both. Roll out nonprod first.?ref=back below this release regeneratesargocd.yamlwith the CRD inextraObjectsagain;helm upgrade argocdwould then fail Helm's ownership pre-flight (exists and cannot be imported into the current release) because the bundle owns the CRD. Skip the argocd step in that case, or run once by hand with--take-ownership. Neverhelm rollback argocdto a pre-migration revision.feat!:so release-please cuts a minor bump (release-please-config.json has bump-minor-pre-major: true, so this lands as v0.20.0).🤖 Generated with Claude Code
https://claude.ai/code/session_019uDhM6cLPHUeRb7GFNo96c