Skip to content

Commit 10b12e0

Browse files
committed
Migration documentation for rancher-turtles
Describes the updated install and migration steps for rancher-turtles in 3.5
1 parent 872d32e commit 10b12e0

File tree

6 files changed

+124
-108
lines changed

6 files changed

+124
-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: 84 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-13
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.
@@ -80,6 +80,85 @@ On a machine with `Helm` installed and `kubectl` configured to point to your `{c
8080
helm show crds oci://registry.suse.com/edge/charts/metal3 --version {version-metal3-chart} | kubectl apply -f -
8181
----
8282

83+
==== Prepare for Rancher Turtles upgrade
84+
85+
[NOTE]
86+
====
87+
Applies only to CAPI/Metal3 management clusters that require a rancher turtles chart upgrade.
88+
89+
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.
90+
====
91+
92+
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]
93+
94+
First we remove the installed `CAPIProvider` resources:
95+
96+
[,bash,subs="attributes"]
97+
----
98+
kubectl delete capiprovider -A --all
99+
----
100+
101+
After waiting for the step above to complete, we next remove the installed rancher-turtles chart and rancher-turtles-airgap-resources (if installed),
102+
when installed via Edge Image Builder this requires removal of the corresponding `HelmChart` resources:
103+
104+
[,bash,subs="attributes"]
105+
----
106+
kubectl delete -n kube-system helmchart rancher-turtles
107+
kubectl delete -n kube-system helmchart rancher-turtles-airgap-resources
108+
----
109+
110+
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]
111+
112+
[,bash]
113+
----
114+
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"}]'
115+
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"}]'
116+
----
117+
118+
Now follow the regular steps to upgrade the management cluster to `Edge {static-edge-version}`
119+
120+
==== Rancher Turtles post-upgrade
121+
122+
*After* follwing 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.
123+
124+
This chart installation should be done via a `HelmChart` resource to enable future automated upgrade via the upgrade controller:
125+
126+
[,shell,subs="attributes,specialchars"]
127+
----
128+
helm pull oci://registry.suse.com/edge/charts/rancher-turtles-providers --version {version-rancher-turtles-providers-chart}
129+
130+
cat > turtles-providers-helmchart.yaml <<EOF
131+
apiVersion: helm.cattle.io/v1
132+
kind: HelmChart
133+
metadata:
134+
annotations:
135+
edge.suse.com/repository-url: oci://registry.suse.com/edge/charts/rancher-turtles-providers
136+
name: rancher-turtles-providers
137+
namespace: kube-system
138+
spec:
139+
chartContent: $(base64 -w 0 rancher-turtles-providers-{version-rancher-turtles-providers-chart}.tgz)
140+
failurePolicy: reinstall
141+
createNamespace: true
142+
targetNamespace: cattle-turtles-system
143+
version: {version-rancher-turtles-providers-chart}
144+
EOF
145+
kubectl apply -f turtles-providers-helmchart.yaml
146+
----
147+
148+
After a few minutes, output similar to the following should be observed:
149+
150+
[,shell]
151+
----
152+
kubectl get capiprovider -A
153+
NAMESPACE NAME TYPE PROVIDERNAME INSTALLEDVERSION PHASE
154+
capm3-system metal3 infrastructure metal3 v1.10.4 Ready
155+
cattle-capi-system cluster-api core cluster-api v1.10.6 Ready
156+
fleet-addon-system fleet addon rancher-fleet v0.12.0 Ready
157+
metal3-ipam-system metal3ipam ipam metal3ipam v1.10.4 Ready
158+
rke2-bootstrap-system rke2-bootstrap bootstrap rke2 v0.21.1 Ready
159+
rke2-control-plane-system rke2-control-plane controlPlane rke2 v0.21.1 Ready
160+
----
161+
83162
[#day2-migration-mgmt-upgrade-controller]
84163
=== Upgrade Controller
85164

asciidoc/edge-book/versions.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@
8787
:version-neuvector-crd-chart: 108.0.1+up2.8.10
8888
:version-neuvector-dashboard-extension-chart: 2.1.5
8989
:version-rancher-chart: 2.13.1
90-
:version-rancher-turtles-chart: 304.0.6+up0.24.0
90+
:version-rancher-turtles-providers-chart: 305.0.4+up0.25.1
9191
:version-sriov-crd-chart: 305.0.4+up1.6.0
9292
:version-sriov-network-operator-chart: 305.0.4+up1.6.0
9393
: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

@@ -200,10 +199,10 @@ kubernetes:
200199
createNamespace: true
201200
installationNamespace: kube-system
202201
valuesFile: metal3.yaml
203-
- name: rancher-turtles
204-
version: {version-rancher-turtles-chart}
202+
- name: rancher-turtles-providers
203+
version: {version-rancher-turtles-providers-chart}
205204
repositoryName: suse-edge-charts
206-
targetNamespace: rancher-turtles-system
205+
targetNamespace: cattle-turtles-system
207206
createNamespace: true
208207
installationNamespace: kube-system
209208
- name: neuvector-crd
@@ -330,10 +329,10 @@ kubernetes:
330329
createNamespace: true
331330
installationNamespace: kube-system
332331
valuesFile: metal3.yaml
333-
- name: rancher-turtles
334-
version: {version-rancher-turtles-chart}
332+
- name: rancher-turtles-providers
333+
version: {version-rancher-turtles-providers-chart}
335334
repositoryName: suse-edge-charts
336-
targetNamespace: rancher-turtles-system
335+
targetNamespace: cattle-turtles-system
337336
createNamespace: true
338337
installationNamespace: kube-system
339338
- name: neuvector-crd
@@ -524,21 +523,6 @@ if [ $(${KUBECTL} get svc -n ${METAL3_CHART_TARGETNAMESPACE} metal3-metal3-ironi
524523
EOF
525524
fi
526525
527-
# If rancher is deployed
528-
if [ $(${KUBECTL} get pods -n ${RANCHER_CHART_TARGETNAMESPACE} -l app=rancher -o name | wc -l) -ge 1 ]; then
529-
cat <<-EOF | ${KUBECTL} apply -f -
530-
apiVersion: management.cattle.io/v3
531-
kind: Feature
532-
metadata:
533-
name: embedded-cluster-api
534-
spec:
535-
value: false
536-
EOF
537-
538-
# Disable Rancher webhooks for CAPI
539-
${KUBECTL} delete --ignore-not-found=true mutatingwebhookconfiguration.admissionregistration.k8s.io mutating-webhook-configuration
540-
${KUBECTL} delete --ignore-not-found=true validatingwebhookconfigurations.admissionregistration.k8s.io validating-webhook-configuration
541-
${KUBECTL} wait --for=delete namespace/cattle-provisioning-capi-system --timeout=300s
542526
fi
543527
544528
# Clean up the lock cm
@@ -1007,7 +991,6 @@ interfaces:
1007991
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:
1008992

1009993
- 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.
1010-
- The `mgmt-cluster.yaml` file must be modified to include `rancher-turtles-airgap-resources` helm chart.
1011994
- The `custom/scripts/99-register.sh` script must be removed when use an air-gap environment.
1012995

1013996
[#mgmt-cluster-image-definition-file-airgap]
@@ -1022,8 +1005,6 @@ The following is an example of the `mgmt-cluster.yaml` file with the `embeddedAr
10221005
Make sure to the listed images contain the component versions you need.
10231006
====
10241007

1025-
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.
1026-
10271008
[,yaml,subs="attributes"]
10281009
----
10291010
apiVersion: {version-eib-api-latest}
@@ -1073,17 +1054,10 @@ kubernetes:
10731054
createNamespace: true
10741055
installationNamespace: kube-system
10751056
valuesFile: metal3.yaml
1076-
- name: rancher-turtles
1077-
version: {version-rancher-turtles-chart}
1078-
repositoryName: suse-edge-charts
1079-
targetNamespace: rancher-turtles-system
1080-
createNamespace: true
1081-
installationNamespace: kube-system
1082-
valuesFile: turtles.yaml
1083-
- name: rancher-turtles-airgap-resources
1084-
version: {version-rancher-turtles-chart}
1057+
- name: rancher-turtles-providers
1058+
version: {version-rancher-turtles-providers-chart}
10851059
repositoryName: suse-edge-charts
1086-
targetNamespace: rancher-turtles-system
1060+
targetNamespace: cattle-turtles-system
10871061
createNamespace: true
10881062
installationNamespace: kube-system
10891063
- name: neuvector-crd
@@ -1160,17 +1134,18 @@ embeddedArtifactRegistry:
11601134
- name: registry.rancher.com/rancher/fleet:v0.13.1
11611135
- name: registry.rancher.com/rancher/hardened-node-feature-discovery:v0.15.7-build20250425
11621136
- name: registry.rancher.com/rancher/rancher-webhook:v0.8.1
1163-
- name: registry.rancher.com/rancher/rancher/turtles:v0.24.0
1137+
- name: registry.rancher.com/rancher/rancher/turtles:v0.25.0
11641138
- name: registry.rancher.com/rancher/rancher:v2.12.1
11651139
- name: registry.rancher.com/rancher/rancher-agent:v2.12.1
11661140
- name: registry.rancher.com/rancher/shell:v0.5.0
11671141
- name: registry.rancher.com/rancher/system-upgrade-controller:v0.16.0
1168-
- name: registry.suse.com/rancher/cluster-api-controller:v1.10.5
1169-
- name: registry.suse.com/rancher/cluster-api-provider-metal3:v1.10.2
1170-
- name: registry.suse.com/rancher/cluster-api-provider-rke2-bootstrap:v0.20.1
1171-
- name: registry.suse.com/rancher/cluster-api-provider-rke2-controlplane:v0.20.1
1142+
- name: registry.suse.com/rancher/cluster-api-controller:v1.10.6
1143+
- name: registry.suse.com/rancher/cluster-api-provider-metal3:v1.10.4
1144+
- name: registry.suse.com/rancher/ip-address-manager:v1.10.4
1145+
- name: registry.suse.com/rancher/cluster-api-provider-rke2-bootstrap:v0.21.1
1146+
- name: registry.suse.com/rancher/cluster-api-provider-rke2-controlplane:v0.21.1
1147+
- name: registry.suse.com/rancher/cluster-api-addon-provider-fleet:v0.12.0
11721148
- name: registry.suse.com/rancher/hardened-sriov-network-operator:v1.5.0-build20250425
1173-
- name: registry.suse.com/rancher/ip-address-manager:v1.10.2
11741149
- name: registry.rancher.com/rancher/kubectl:v1.32.2
11751150
- name: registry.rancher.com/rancher/mirrored-cluster-api-controller:v1.9.5
11761151
----
@@ -1181,38 +1156,6 @@ embeddedArtifactRegistry:
11811156
- 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.
11821157

11831158

1184-
[#mgmt-cluster-helm-values-folder-airgap]
1185-
==== Modifications in the helm values folder
1186-
1187-
- 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.
1188-
+
1189-
[,yaml]
1190-
----
1191-
cluster-api-operator:
1192-
cluster-api:
1193-
core:
1194-
fetchConfig:
1195-
selector: "{\"matchLabels\": {\"provider-components\": \"core\"}}"
1196-
rke2:
1197-
bootstrap:
1198-
fetchConfig:
1199-
selector: "{\"matchLabels\": {\"provider-components\": \"rke2-bootstrap\"}}"
1200-
controlPlane:
1201-
fetchConfig:
1202-
selector: "{\"matchLabels\": {\"provider-components\": \"rke2-control-plane\"}}"
1203-
metal3:
1204-
infrastructure:
1205-
fetchConfig:
1206-
selector: "{\"matchLabels\": {\"provider-components\": \"metal3\"}}"
1207-
ipam:
1208-
fetchConfig:
1209-
selector: "{\"matchLabels\": {\"provider-components\": \"metal3ipam\"}}"
1210-
fleet:
1211-
addon:
1212-
fetchConfig:
1213-
selector: "{\"matchLabels\": {\"provider-components\": \"fleet\"}}"
1214-
----
1215-
12161159
[#mgmt-cluster-image-creation]
12171160
=== Image creation
12181161

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)