Skip to content

Commit ba478e1

Browse files
authored
Migration documentation for rancher-turtles (#996)
Describes the updated install and migration steps for rancher-turtles in 3.5
1 parent 0c3224d commit ba478e1

File tree

6 files changed

+123
-108
lines changed

6 files changed

+123
-108
lines changed

asciidoc/components/turtles.adoc

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[#components-rancher-turtles]
22
= Rancher Turtles
3-
:revdate: 2025-04-25
3+
:revdate: 2025-12-15
44
:page-revdate: {revdate}
55
:experimental:
66

@@ -26,20 +26,24 @@ ____
2626

2727
* Automatically import CAPI clusters into Rancher, by installing the Rancher Cluster Agent in CAPI provisioned clusters.
2828
* Install and configure CAPI controller dependencies via the https://cluster-api-operator.sigs.k8s.io/[CAPI Operator].
29+
* Manage installed CAPI provider dependencies via the `CAPIProvider` API
2930

3031
== Rancher Turtles use in SUSE Edge
3132

32-
The SUSE Edge stack provides a helm wrapper chart which installs Rancher Turtles with a specific configuration that enables:
33+
The SUSE Edge stack provides a `rancher-turtles-providers` helm chart that enables certain CAPI providers via the `CAPIProvider` API:
3334

34-
* Core CAPI controller components
35-
* RKE2 Control Plane and Bootstrap provider components
36-
* <<components-metal3,Metal3>> infrastructure provider components
35+
* RKE2 Control Plane and Bootstrap provider
36+
* <<components-metal3,Metal3>> infrastructure provider
37+
* <<components-metal3,Metal3>> IPAM provider (currently not supported)
38+
* Fleet addon provider
3739

3840
Only the default providers installed via the wrapper chart are supported - alternative Control Plane, Bootstrap and Infrastructure providers are not currently supported as part of the SUSE Edge stack.
3941

4042
== Installing Rancher Turtles
4143

42-
Rancher Turtles may be installed by following the <<quickstart-metal3,Metal3 Quickstart>> guide, or the <<atip-management-cluster,Management Cluster>> documentation.
44+
Since Rancher 2.13, Rancher Turtles is enabled by default when installing Rancher.
45+
46+
Rancher Turtles Providers may be installed by following the <<quickstart-metal3,Metal3 Quickstart>> guide, or the <<atip-management-cluster,Management Cluster>> documentation.
4347

4448
== Additional Resources
4549

asciidoc/day2/migration.adoc

Lines changed: 83 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[#day2-migration]
22
= Edge {version-edge} migration
3-
:revdate: 2025-09-30
3+
:revdate: 2026-01-19
44
:page-revdate: {revdate}
55
:experimental:
66

@@ -13,9 +13,9 @@ ifdef::env-github[]
1313
:warning-caption: :warning:
1414
endif::[]
1515
:toc: preamble
16-
:previous-edge-version: 3.3
17-
:static-edge-version: 3.4.0
18-
:static-fleet-examples-tag: release-3.4.0
16+
:previous-edge-version: 3.4
17+
:static-edge-version: 3.5.0
18+
:static-fleet-examples-tag: release-3.5.0
1919

2020
This section explains how to migrate your `management` and `downstream` clusters from `Edge {previous-edge-version}` to `Edge {static-edge-version}`.
2121

@@ -62,7 +62,7 @@ This section covers the following topics:
6262

6363
[NOTE]
6464
====
65-
Applies only to clusters that require a <<components-metal3>> chart upgrade.
65+
Applies only to CAPI/Metal3 management clusters that require a <<components-metal3>> chart upgrade.
6666
====
6767

6868
The `Metal^3^` Helm chart includes the link:https://book.metal3.io/bmo/introduction.html[Bare Metal Operator (BMO)] CRDs by leveraging Helm's link:https://helm.sh/docs/chart_best_practices/custom_resource_definitions/#method-1-let-helm-do-it-for-you[CRD] directory.
@@ -260,6 +260,84 @@ helm upgrade longhorn oci://dp.apps.rancher.io/charts/suse-storage \
260260
+
261261
You can provide a `values.yaml` file by appending `-f values.yaml` to the upgrade command if you wish.
262262

263+
==== Prepare for Rancher Turtles upgrade
264+
265+
[NOTE]
266+
====
267+
Applies only to CAPI/Metal3 management clusters that require a rancher turtles chart upgrade.
268+
269+
You must ensure the management cluster is first updated to the latest 3.4 z-stream, which contains the necessary 0.24.3 Rancher Turtles version.
270+
====
271+
272+
Starting with Rancher 2.13, Rancher Turtles is installed by default, therefore it is necessary to follow some additional migration steps as described in the https://turtles.docs.rancher.com/turtles/next/en/tutorials/migration.html[Rancher Turtles Documentation]
273+
274+
First we remove the installed `CAPIProvider` resources:
275+
276+
[,bash,subs="attributes"]
277+
----
278+
kubectl delete capiprovider -A --all
279+
----
280+
281+
After waiting for the step above to complete, we next remove the installed rancher-turtles chart and rancher-turtles-airgap-resources (if installed),
282+
when installed via Edge Image Builder this requires removal of the corresponding `HelmChart` resources:
283+
284+
[,bash,subs="attributes"]
285+
----
286+
kubectl delete -n kube-system helmchart rancher-turtles
287+
kubectl delete -n kube-system helmchart rancher-turtles-airgap-resources
288+
----
289+
290+
Next we must patch the CRD resources as described in the https://turtles.docs.rancher.com/turtles/next/en/tutorials/migration.html[Rancher Turtles Documentation]
291+
292+
[,bash]
293+
----
294+
kubectl patch crd capiproviders.turtles-capi.cattle.io --type=json -p='[{"op": "add", "path": "/metadata/annotations/meta.helm.sh~1release-namespace", "value": "cattle-turtles-system"}]'
295+
kubectl patch crd clusterctlconfigs.turtles-capi.cattle.io --type=json -p='[{"op": "add", "path": "/metadata/annotations/meta.helm.sh~1release-namespace", "value": "cattle-turtles-system"}]'
296+
----
297+
298+
Now follow the regular steps to upgrade the management cluster to `Edge {static-edge-version}`
299+
300+
==== Rancher Turtles post-upgrade
301+
302+
*After* following the steps below to upgrade to `Edge {static-edge-version}` it is necessary to install the new `rancher-turtles-providers` helm chart - this creates new `CAPIProvider` resources to replace those removed in the pre-upgrade steps above.
303+
304+
This chart installation should be done via a `HelmChart` resource to enable future automated upgrade via the upgrade controller:
305+
306+
[,shell,subs="attributes,specialchars"]
307+
----
308+
helm pull oci://registry.suse.com/edge/charts/rancher-turtles-providers --version {version-rancher-turtles-providers-chart}
309+
310+
cat > turtles-providers-helmchart.yaml <<EOF
311+
apiVersion: helm.cattle.io/v1
312+
kind: HelmChart
313+
metadata:
314+
annotations:
315+
edge.suse.com/repository-url: oci://registry.suse.com/edge/charts/rancher-turtles-providers
316+
name: rancher-turtles-providers
317+
namespace: kube-system
318+
spec:
319+
chartContent: $(base64 -w 0 rancher-turtles-providers-{version-rancher-turtles-providers-chart}.tgz)
320+
failurePolicy: reinstall
321+
createNamespace: true
322+
targetNamespace: cattle-turtles-system
323+
version: {version-rancher-turtles-providers-chart}
324+
EOF
325+
kubectl apply -f turtles-providers-helmchart.yaml
326+
----
327+
328+
After a few minutes, output similar to the following should be observed:
329+
330+
[,shell]
331+
----
332+
kubectl get capiprovider -A
333+
NAMESPACE NAME TYPE PROVIDERNAME INSTALLEDVERSION PHASE
334+
capm3-system metal3 infrastructure metal3 v1.10.4 Ready
335+
cattle-capi-system cluster-api core cluster-api v1.10.6 Ready
336+
fleet-addon-system fleet addon rancher-fleet v0.12.0 Ready
337+
metal3-ipam-system metal3ipam ipam metal3ipam v1.10.4 Ready
338+
rke2-bootstrap-system rke2-bootstrap bootstrap rke2 v0.21.1 Ready
339+
rke2-control-plane-system rke2-control-plane controlPlane rke2 v0.21.1 Ready
340+
----
263341

264342
[#day2-migration-mgmt-upgrade-controller]
265343
=== Upgrade Controller

asciidoc/edge-book/versions.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@
8686
:version-neuvector-crd-chart: 108.0.1+up2.8.10
8787
:version-neuvector-dashboard-extension-chart: 2.1.5
8888
:version-rancher-chart: 2.13.1
89-
:version-rancher-turtles-chart: 304.0.6+up0.24.0
89+
:version-rancher-turtles-providers-chart: 305.0.4+up0.25.1
9090
:version-sriov-crd-chart: 305.0.4+up1.6.0
9191
:version-sriov-network-operator-chart: 305.0.4+up1.6.0
9292
:version-sriov-upstream: 1.6.0

asciidoc/product/atip-management-cluster.adoc

Lines changed: 17 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[#atip-management-cluster]
22
== Setting up the management cluster
3-
:revdate: 2025-07-31
3+
:revdate: 2025-12-01
44
:page-revdate: {revdate}
55
:experimental:
66

@@ -64,7 +64,6 @@ The following are the main steps to set up the management cluster using a declar
6464
- xref:mgmt-cluster-image-definition-file-airgap[Modifications in the definition file]: The `mgmt-cluster.yaml` file must be modified to include the `embeddedArtifactRegistry` section with the `images` field set to all container images to be included into the EIB output image.
6565
- xref:mgmt-cluster-custom-folder-airgap[Modifications in the custom folder]: The `custom` folder must be modified to include the resources needed to run the management cluster in an air-gap environment.
6666
** Register script: The `custom/scripts/99-register.sh` script must be removed when you use an air-gap environment.
67-
- xref:mgmt-cluster-helm-values-folder-airgap[Modifications in the helm values folder]: The `helm/values` folder must be modified to include the configuration needed to run the management cluster in an air-gap environment.
6867

6968
. **xref:mgmt-cluster-image-creation[Image creation]**: This step covers the creation of the image using the Edge Image Builder tool (for both, connected and air-gap scenarios). Check the <<components-eib,prerequisites>> to run the Edge Image Builder tool on your system.
7069

@@ -195,10 +194,10 @@ kubernetes:
195194
createNamespace: true
196195
installationNamespace: kube-system
197196
valuesFile: metal3.yaml
198-
- name: rancher-turtles
199-
version: {version-rancher-turtles-chart}
197+
- name: rancher-turtles-providers
198+
version: {version-rancher-turtles-providers-chart}
200199
repositoryName: suse-edge-charts
201-
targetNamespace: rancher-turtles-system
200+
targetNamespace: cattle-turtles-system
202201
createNamespace: true
203202
installationNamespace: kube-system
204203
- name: neuvector-crd
@@ -320,10 +319,10 @@ kubernetes:
320319
createNamespace: true
321320
installationNamespace: kube-system
322321
valuesFile: metal3.yaml
323-
- name: rancher-turtles
324-
version: {version-rancher-turtles-chart}
322+
- name: rancher-turtles-providers
323+
version: {version-rancher-turtles-providers-chart}
325324
repositoryName: suse-edge-charts
326-
targetNamespace: rancher-turtles-system
325+
targetNamespace: cattle-turtles-system
327326
createNamespace: true
328327
installationNamespace: kube-system
329328
- name: neuvector-crd
@@ -514,21 +513,6 @@ if [ $(${KUBECTL} get svc -n ${METAL3_CHART_TARGETNAMESPACE} metal3-metal3-ironi
514513
EOF
515514
fi
516515
517-
# If rancher is deployed
518-
if [ $(${KUBECTL} get pods -n ${RANCHER_CHART_TARGETNAMESPACE} -l app=rancher -o name | wc -l) -ge 1 ]; then
519-
cat <<-EOF | ${KUBECTL} apply -f -
520-
apiVersion: management.cattle.io/v3
521-
kind: Feature
522-
metadata:
523-
name: embedded-cluster-api
524-
spec:
525-
value: false
526-
EOF
527-
528-
# Disable Rancher webhooks for CAPI
529-
${KUBECTL} delete --ignore-not-found=true mutatingwebhookconfiguration.admissionregistration.k8s.io mutating-webhook-configuration
530-
${KUBECTL} delete --ignore-not-found=true validatingwebhookconfigurations.admissionregistration.k8s.io validating-webhook-configuration
531-
${KUBECTL} wait --for=delete namespace/cattle-provisioning-capi-system --timeout=300s
532516
fi
533517
534518
# Clean up the lock cm
@@ -997,7 +981,6 @@ interfaces:
997981
This section describes how to prepare the image for air-gap environments showing only the differences from the previous sections. The following changes to the previous section (xref:mgmt-cluster-image-preparation-connected[Image preparation for connected environments]) are required to prepare the image for air-gap environments:
998982

999983
- The `mgmt-cluster.yaml` file must be modified to include the `embeddedArtifactRegistry` section with the `images` field set to all container images to be included into the EIB output image.
1000-
- The `mgmt-cluster.yaml` file must be modified to include `rancher-turtles-airgap-resources` helm chart.
1001984
- The `custom/scripts/99-register.sh` script must be removed when use an air-gap environment.
1002985

1003986
[#mgmt-cluster-image-definition-file-airgap]
@@ -1012,8 +995,6 @@ The following is an example of the `mgmt-cluster.yaml` file with the `embeddedAr
1012995
Make sure to the listed images contain the component versions you need.
1013996
====
1014997

1015-
The `rancher-turtles-airgap-resources` helm chart must also be added, this creates resources as described in the https://documentation.suse.com/cloudnative/cluster-api/{rancher-turtles-docs-version}/en/getting-started/air-gapped-environment.html[Rancher Turtles Airgap Documentation]. This also requires a turtles.yaml values file for the rancher-turtles chart to specify the necessary configuration.
1016-
1017998
[,yaml,subs="attributes"]
1018999
----
10191000
apiVersion: {version-eib-api-latest}
@@ -1057,17 +1038,10 @@ kubernetes:
10571038
createNamespace: true
10581039
installationNamespace: kube-system
10591040
valuesFile: metal3.yaml
1060-
- name: rancher-turtles
1061-
version: {version-rancher-turtles-chart}
1062-
repositoryName: suse-edge-charts
1063-
targetNamespace: rancher-turtles-system
1064-
createNamespace: true
1065-
installationNamespace: kube-system
1066-
valuesFile: turtles.yaml
1067-
- name: rancher-turtles-airgap-resources
1068-
version: {version-rancher-turtles-chart}
1041+
- name: rancher-turtles-providers
1042+
version: {version-rancher-turtles-providers-chart}
10691043
repositoryName: suse-edge-charts
1070-
targetNamespace: rancher-turtles-system
1044+
targetNamespace: cattle-turtles-system
10711045
createNamespace: true
10721046
installationNamespace: kube-system
10731047
- name: neuvector-crd
@@ -1144,17 +1118,18 @@ embeddedArtifactRegistry:
11441118
- name: registry.rancher.com/rancher/fleet:v0.13.1
11451119
- name: registry.rancher.com/rancher/hardened-node-feature-discovery:v0.15.7-build20250425
11461120
- name: registry.rancher.com/rancher/rancher-webhook:v0.8.1
1147-
- name: registry.rancher.com/rancher/rancher/turtles:v0.24.0
1121+
- name: registry.rancher.com/rancher/rancher/turtles:v0.25.0
11481122
- name: registry.rancher.com/rancher/rancher:v2.12.1
11491123
- name: registry.rancher.com/rancher/rancher-agent:v2.12.1
11501124
- name: registry.rancher.com/rancher/shell:v0.5.0
11511125
- name: registry.rancher.com/rancher/system-upgrade-controller:v0.16.0
1152-
- name: registry.suse.com/rancher/cluster-api-controller:v1.10.5
1153-
- name: registry.suse.com/rancher/cluster-api-provider-metal3:v1.10.2
1154-
- name: registry.suse.com/rancher/cluster-api-provider-rke2-bootstrap:v0.20.1
1155-
- name: registry.suse.com/rancher/cluster-api-provider-rke2-controlplane:v0.20.1
1126+
- name: registry.suse.com/rancher/cluster-api-controller:v1.10.6
1127+
- name: registry.suse.com/rancher/cluster-api-provider-metal3:v1.10.4
1128+
- name: registry.suse.com/rancher/ip-address-manager:v1.10.4
1129+
- name: registry.suse.com/rancher/cluster-api-provider-rke2-bootstrap:v0.21.1
1130+
- name: registry.suse.com/rancher/cluster-api-provider-rke2-controlplane:v0.21.1
1131+
- name: registry.suse.com/rancher/cluster-api-addon-provider-fleet:v0.12.0
11561132
- name: registry.suse.com/rancher/hardened-sriov-network-operator:v1.5.0-build20250425
1157-
- name: registry.suse.com/rancher/ip-address-manager:v1.10.2
11581133
- name: registry.rancher.com/rancher/kubectl:v1.32.2
11591134
- name: registry.rancher.com/rancher/mirrored-cluster-api-controller:v1.9.5
11601135
----
@@ -1165,38 +1140,6 @@ embeddedArtifactRegistry:
11651140
- The `custom/scripts/99-register.sh` script must be removed when using an air-gap environment. As you can see in the directory structure, the `99-register.sh` script is not included in the `custom/scripts` folder.
11661141

11671142

1168-
[#mgmt-cluster-helm-values-folder-airgap]
1169-
==== Modifications in the helm values folder
1170-
1171-
- The `turtles.yaml`: contains the configuration required to specify airgapped operation for Rancher Turtles, note this depends on installation of the rancher-turtles-airgap-resources chart.
1172-
+
1173-
[,yaml]
1174-
----
1175-
cluster-api-operator:
1176-
cluster-api:
1177-
core:
1178-
fetchConfig:
1179-
selector: "{\"matchLabels\": {\"provider-components\": \"core\"}}"
1180-
rke2:
1181-
bootstrap:
1182-
fetchConfig:
1183-
selector: "{\"matchLabels\": {\"provider-components\": \"rke2-bootstrap\"}}"
1184-
controlPlane:
1185-
fetchConfig:
1186-
selector: "{\"matchLabels\": {\"provider-components\": \"rke2-control-plane\"}}"
1187-
metal3:
1188-
infrastructure:
1189-
fetchConfig:
1190-
selector: "{\"matchLabels\": {\"provider-components\": \"metal3\"}}"
1191-
ipam:
1192-
fetchConfig:
1193-
selector: "{\"matchLabels\": {\"provider-components\": \"metal3ipam\"}}"
1194-
fleet:
1195-
addon:
1196-
fetchConfig:
1197-
selector: "{\"matchLabels\": {\"provider-components\": \"fleet\"}}"
1198-
----
1199-
12001143
[#mgmt-cluster-image-creation]
12011144
=== Image creation
12021145

asciidoc/quickstart/metal3.adoc

Lines changed: 8 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[#quickstart-metal3]
22
= BMC automated deployments with Metal^3^
3-
:revdate: 2025-07-29
3+
:revdate: 2025-12-15
44
:page-revdate: {revdate}
55
:experimental:
66

@@ -64,7 +64,7 @@ The basic steps to install a management cluster and use Metal^3^ are:
6464
. Install Rancher
6565
. Install a storage provider (optional)
6666
. Install the Metal^3^ dependencies
67-
. Install CAPI dependencies via Rancher Turtles
67+
. Install CAPI provider dependencies
6868
. Build a SLEMicro OS image for downstream cluster hosts
6969
. Register BareMetalHost CRs to define the bare-metal inventory
7070
. Create a downstream cluster by defining CAPI resources
@@ -154,29 +154,19 @@ metal3-metal3-mariadb-7c7d6fdbd8-64c7l 1/1 Running 0
154154

155155
WARNING: Do not proceed to the following steps until all pods in the `metal3-system` namespace are running.
156156

157-
=== Installing cluster API dependencies
157+
=== Installing cluster API provider dependencies
158158

159-
Cluster API dependencies are managed via the Rancher Turtles Helm chart:
159+
Cluster API provider dependencies are managed via the Rancher Turtles Providers Helm chart:
160160

161161
[,bash,subs="attributes,specialchars"]
162162
----
163-
cat > values.yaml <<EOF
164-
rancherTurtles:
165-
features:
166-
embedded-capi:
167-
disabled: true
168-
rancher-webhook:
169-
cleanup: true
170-
EOF
171-
172163
helm install \
173-
rancher-turtles oci://registry.suse.com/edge/charts/rancher-turtles \
174-
--namespace rancher-turtles-system \
175-
--create-namespace \
176-
-f values.yaml
164+
rancher-turtles oci://registry.suse.com/edge/charts/rancher-turtles-providers \
165+
--namespace cattle-turtles-system \
166+
--create-namespace
177167
----
178168

179-
After some time, the controller pods should be running in the `capi-system`, `capm3-system`, `rke2-bootstrap-system` and `rke2-control-plane-system` namespaces.
169+
After some time, the controller pods should be running in the `cattle-capi-system`, `capm3-system`, `rke2-bootstrap-system` and `rke2-control-plane-system` namespaces.
180170

181171
=== Prepare downstream cluster image
182172

0 commit comments

Comments
 (0)