0.4.0 - Declarative Multi-Cluster Deployment
This release introduces kuberise.yaml, a declarative cluster manifest that describes the full desired state of all clusters managed by a client repo. The new kr up command reads this file and handles the complete lifecycle: bootstrapping clusters that need initialization and deploying all layers to clusters that are already running. Clusters are processed in parallel with automatic retry for clusters that are not yet accessible (e.g., clusters being provisioned by CAPI).
Added:
kr upcommand - the primary command for managing clusters. Readskuberise.yaml, detects whether each cluster needs initialization (viahelm status argocd), runskr initfor new clusters, then deploys all layers. Accessible clusters are processed in parallel; inaccessible clusters are retried with configurable interval and timeout (--retry-interval,--retry-timeout).kr downcommand - alias forkr uninstall, providing an intuitiveup/downpair.kuberise.yamlsupport - declarative cluster manifest at the root of each client repo. Declaresclient.repoURL,kuberise.repoURL/targetRevision, and aclusters:map where each cluster defines itscontext,domain, andlayers. Each layer specifies aname, optionalrepoURL(kuberisefor the OSS repo, omit for the client repo, or an explicit URL), optionaltargetRevision, and optionaltoken(environment variable name for authentication).--dry-runflag forkr deployandkr up- preview all Kubernetes manifests that would be applied without making changes.--clusterfilter forkr deployandkr up- target a single cluster instead of all clusters defined inkuberise.yaml.--layerfilter forkr up- deploy only a specific layer within each cluster.- Remote config fetching -
kr up --repo <URL>can fetchkuberise.yamlfrom a remote git repo via shallow clone when not running from the client repo directory. - Per-layer token resolution - each layer in
kuberise.yamlcan specify atoken:field with the name of an environment variable, enabling secure authentication to private repos without storing credentials in git. - ADR-0023 documenting the single AppProject-per-cluster pattern (supersedes ADR-0013).
- ADR-0024 documenting the rationale for per-repository authentication.
Changed:
kr deploynow readskuberise.yaml- resolves clusters, layers, and repos from the config file instead of requiring all values as CLI flags. CLI flags (--repo,--revision,--token) override the config file values.- Parallel multi-cluster deployment - both
kr deployandkr upprocess accessible clusters in parallel using background processes with PID tracking and error collection. A single cluster deploys inline (no background process overhead). - AppProject management - the ArgoCD AppProject is now created imperatively via
kubectl applyinkr deployinstead of via Helm template, breaking the circular dependency during uninstall (ADR-0023). - Enhanced uninstall -
kr uninstall(andkr down) now clears finalizers on stuck resources, handles PVCs/PVs in Terminating state, removes orphaned ValidatingWebhookConfigurations and MutatingWebhookConfigurations, and cleans up OIDC context/user entries from kubeconfig. - Enabler file naming - enabler files now use
values-{clusterName}-{layerName}.yamlconvention for multi-cluster support (e.g.,values-dev-platform.yaml).