Skip to main content
Moderne OnlyThis recipe is proprietary to Moderne and runs on the Moderne platform or CLI — it isn’t part of the open-source catalog. Available with a Moderne subscription.Contact Sales

Change k0rdent template version

Recipe IDorg.openrewrite.kubernetes.k0rdent.ChangeTemplateVersion
Artifactorg.openrewrite.recipe:rewrite-kubernetes

Move a k0rdent ClusterTemplate, ProviderTemplate or ServiceTemplate to a new chart version, taking its name and everything that points at that name along with it. k0rdent encodes the chart version in the template's metadata.name, so a version bump renames the resource: aws-standalone-cp-1-0-42 becomes aws-standalone-cp-1-0-43. That name is referenced from ClusterDeployment.spec.template, from services[].template on a ClusterDeployment or MultiClusterService, from Release.spec.kcm.template, spec.regional.template, spec.capi.template and spec.providers[].template, from spec.core.kcm.template, spec.core.capi.template and spec.providers[].template on a Management or Region, and from the supportedTemplates of a ClusterTemplateChain or ServiceTemplateChain. All of them move together here, along with any file whose name encodes the template name, because a rename that misses one of them leaves a reference the controller cannot resolve. A template in a file that renders through a template engine is reported and left alone, and so are its referrers: its name is whatever the engine produces, so nothing can be moved without stranding the rest. This changes the template's own spec.helm.chartSpec.version too, but not the chart it points at. Run org.openrewrite.kubernetes.helm.ChangeChartVersion alongside it to move the chart's own Chart.yaml, the charts that depend on it, and any Flux HelmRelease.

Single recipeOpenRewriteModerne Proprietary License
Try in PlatformTry this recipe in the Moderne platform. Not a user yet? You’ll get a no-setup demo environment, with nothing to install or configure.

Options

3 parameters
2 required1 optional
ParameterExampleTypeRequired
chartaws-standalone-cpStringRequired
The chart the template wraps, as written in its spec.helm.chartSpec.chart.
newVersion1.0.43StringRequired
The new chart version. Must be an exact semantic version.
oldVersion1.0.42StringOptional
The version being replaced. When omitted, whatever version the template currently declares is used.

Examples

yaml, yaml
ParameterValue
chartaws-standalone-cp
oldVersionnull
newVersion1.0.43
Before
apiVersion: k0rdent.mirantis.com/v1beta1
kind: ClusterDeployment
metadata:
name: aws-dev
spec:
template: aws-standalone-cp-1-0-42
credential: aws-cluster-identity-cred
---
apiVersion: k0rdent.mirantis.com/v1beta1
kind: ClusterDeployment
metadata:
name: azure-dev
spec:
template: azure-standalone-cp-1-0-44
credential: azure-cluster-identity-cred
After
apiVersion: k0rdent.mirantis.com/v1beta1
kind: ClusterDeployment
metadata:
name: aws-dev
spec:
template: aws-standalone-cp-1-0-43
credential: aws-cluster-identity-cred
---
apiVersion: k0rdent.mirantis.com/v1beta1
kind: ClusterDeployment
metadata:
name: azure-dev
spec:
template: azure-standalone-cp-1-0-44
credential: azure-cluster-identity-cred
Before
apiVersion: k0rdent.mirantis.com/v1beta1
kind: ClusterTemplate
metadata:
name: aws-standalone-cp-1-0-42
annotations:
helm.sh/resource-policy: keep
spec:
helm:
chartSpec:
chart: aws-standalone-cp
version: 1.0.42
interval: 10m0s
After
apiVersion: k0rdent.mirantis.com/v1beta1
kind: ClusterTemplate
metadata:
name: aws-standalone-cp-1-0-43
annotations:
helm.sh/resource-policy: keep
spec:
helm:
chartSpec:
chart: aws-standalone-cp
version: 1.0.43
interval: 10m0s

Usage

Run this recipe

You will need to have configured the Moderne CLI on your machine before you can run the following command.

shell
mod run . --recipe ChangeTemplateVersion --recipe-option "chart=aws-standalone-cp" --recipe-option "oldVersion=1.0.42" --recipe-option "newVersion=1.0.43"

If the recipe is not available locally, then you can install it using:

RELEASE resolves to the newest release and LATEST to the newest build of any kind, including snapshots. Either one lets mod config recipes upgrade pull in later versions without editing this command; a pinned version stays where you put it.

mod config recipes jar install org.openrewrite.recipe:rewrite-kubernetes:RELEASE

Data tables

k0rdent template name changes
org.openrewrite.kubernetes.table.TemplateNameChanges

The template resource that was renamed, every reference that moved with it, and the templates that were left alone.

ColumnDescription
Source pathThe path of the manifest that was changed, or would have been.
KindThe kind of the resource holding the name or the reference to it.
FieldThe field the name was found in, relative to the document root.
Old valueThe value before the change.
New valueThe value after the change, or the unchanged value when nothing was changed.
OutcomeRenamed for the template itself, Reference for a resource that points at it, Renamed file for a file whose name encodes it, Templated when the file renders through Helm, which pins the template's referrers as well as the template, or Name does not encode the version when the template's own name holds no version to substitute into.
Source files that had results
org.openrewrite.table.SourcesFileResults

Source files that were modified by the recipe run.

ColumnDescription
Source path before the runThe source path of the file before the run. null when a source file was created during the run.
Source path after the runA recipe may modify the source path. This is the path after the run. null when a source file was deleted during the run.
Parent of the recipe that made changesIn a hierarchical recipe, the parent of the recipe that made a change. Empty if this is the root of a hierarchy or if the recipe is not hierarchical at all.
Recipe that made changesThe specific recipe that made a change.
Estimated time savingAn estimated effort that a developer to fix manually instead of using this recipe, in unit of seconds.
CycleThe recipe cycle in which the change was made.
Source files that had search results
org.openrewrite.table.SearchResults

Search results that were found during the recipe run.

ColumnDescription
Source path of search result before the runThe source path of the file with the search result markers present.
Source path of search result after run the runA recipe may modify the source path. This is the path after the run. null when a source file was deleted during the run.
ResultThe trimmed printed tree of the LST element that the marker is attached to.
DescriptionThe content of the description of the marker.
Recipe that added the search markerThe specific recipe that added the Search marker.
Source files that errored on a recipe
org.openrewrite.table.SourcesFileErrors

The details of all errors produced by a recipe run.

ColumnDescription
Source pathThe file that failed to parse.
Recipe that made changesThe specific recipe that made a change.
Stack traceThe stack trace of the failure.
Recipe performance
org.openrewrite.table.RecipeRunStats

Statistics used in analyzing the performance of recipes.

ColumnDescription
The recipeThe recipe whose stats are being measured both individually and cumulatively.
Source file countThe number of source files the recipe ran over.
Source file changed countThe number of source files which were changed in the recipe run. Includes files created, deleted, and edited.
Cumulative scanning time (ns)The total time spent across the scanning phase of this recipe.
Max scanning time (ns)The max time scanning any one source file.
Cumulative edit time (ns)The total time spent across the editing phase of this recipe.
Max edit time (ns)The max time editing any one source file.