27 Edge 3.1 迁移 #
本节提供将现有 Edge 3.0
版(包括 3.0.1 和 3.0.2 等次要版本)管理和下游群集迁移到
Edge 3.1.0
版的迁移指南。
有关 Edge 3.1.0
组件版本的列表,请参见发行说明(第 45.1 节 “摘要”)。
27.1 管理群集 #
本节介绍如何将管理
群集从 Edge 3.0
迁移到
Edge 3.1.0
。
管理
群集组件应按以下顺序迁移:
操作系统 (OS)(第 27.1.1 节 “操作系统 (OS)”)
RKE2(第 27.1.2 节 “RKE2”)
Edge Helm chart(第 27.1.3 节 “Edge Helm chart”)
27.1.1 操作系统 (OS) #
本节介绍将管理
群集节点的操作系统迁移到 Edge 3.1.0
支持的版本所需的步骤。
应对管理
群集的每个节点执行以下步骤。
为了避免任何不可预见的问题,请先迁移群集的控制平面
节点,然后再迁移工作
节点。
27.1.1.1 先决条件 #
已向 SCC 注册的节点
- 确保您的群集节点的操作系统已使用相应的订阅密钥注册,该密钥支持Edge 3.1
发行说明(第 45.1 节 “摘要”)中指定的操作系统版本。
隔离:
镜像 SUSE RPM 储存库
- 与Edge 3.1.0
版本(第 45.1 节 “摘要”)中指定的操作系统相关的 RPM 储存库应镜像到本地,以便transactional-update
可以访问。方法是使用 RMT 或 SUMA。
27.1.1.2 迁移步骤 #
以下步骤假设您以 root
身份运行,并且 kubectl
已配置为连接到管理
群集。
将节点标记为不可调度:
kubectl cordon <node_name>
有关
cordon
命令选项的完整列表,请参见 kubectl cordon。或者,在某些情况下,您可能希望
清空
节点的工作负载:kubectl drain <node>
有关
drain
命令选项的完整列表,请参见 kubectl drain。在迁移之前,您需要确保当前操作系统上的软件包已更新。为此,请执行:
transactional-update
上述命令执行 zypper up 以更新操作系统软件包。有关
transactional-update
的详细信息,请参见 transactional-update 指南。继续执行操作系统迁移:
transactional-update --continue migration
注意此处使用
--continue
选项来重用上一个快照,而无需重引导系统。成功运行
transactional-update
后,要使更改在系统上生效,您需要重引导:reboot
主机重引导后,验证操作系统是否已迁移到
SUSE Linux Micro 6.0
:cat /etc/os-release
输出应类似于:
NAME="SL-Micro" VERSION="6.0" VERSION_ID="6.0" PRETTY_NAME="SUSE Linux Micro 6.0" ID="sl-micro" ID_LIKE="suse" ANSI_COLOR="0;32" CPE_NAME="cpe:/o:suse:sl-micro:6.0" HOME_URL="https://www.suse.com/products/micro/" DOCUMENTATION_URL="https://documentation.suse.com/sl-micro/6.0/"
注意如果迁移失败,您可以使用以下命令回滚到上一个正常工作的快照:
transactional-update rollback last
您需要重引导系统才能使
回滚
生效。有关回滚过程的详细信息,请参见官方的transactional-update
文档。将节点标记为可调度:
kubectl uncordon <node_name>
27.1.2 RKE2 #
您可以使用 RKE2 安装脚本将 RKE2 版本升级到 Edge 3.1.0
,如下所示:
将节点标记为不可调度:
kubectl cordon <node_name>
有关
cordon
命令选项的完整列表,请参见 kubectl cordon。或者,在某些情况下,您可能希望
清空
节点的工作负载:kubectl drain <node>
有关
drain
命令选项的完整列表,请参见 kubectl drain。使用 RKE2 安装脚本安装
Edge 3.1.0
兼容的正确 RKE2 版本:curl -sfL https://get.rke2.io | INSTALL_RKE2_VERSION=v1.30.3+rke2r1 sh -
重新启动
rke2
进程:# For control-plane nodes: systemctl restart rke2-server # For worker nodes: systemctl restart rke2-agent
验证节点的 RKE2 版本是否已升级:
kubectl get nodes
将节点标记为可调度:
kubectl uncordon <node_name>
27.1.3 Edge Helm chart #
本节提供特定 Edge 版本的 Helm chart 组件的升级指南,涵盖以下主题:
升级过程存在的已知限制(第 27.1.3.1 节 “已知限制”)。
如何通过
Rancher Turtles
Helm chart 迁移群集 API 控制器(第 27.1.3.2 节 “群集 API 控制器迁移”)。如何升级通过 EIB(第 9 章 “Edge Image Builder”)部署的 Edge Helm chart(第 27.1.3.3 节 “Edge Helm chart 升级 - EIB”)。
如何升级通过非 EIB 方式部署的 Edge Helm chart(第 27.1.3.4 节 “Edge Helm chart 升级 - 非 EIB”)。
27.1.3.1 已知限制 #
本节介绍当前迁移过程的已知限制。用户在升级他们的 Helm chart 之前,应先完成此处所述的步骤。
27.1.3.1.1 Rancher 升级 #
Edge 3.1.0
使用的当前 RKE2 版本存在一个问题,即所有不包含
IngressClass
的入口都会被入口控制器忽略。为了解决这种情况,用户需要手动将默认
IngressClass
的名称添加到默认 Rancher
入口中。
有关以下步骤修复的问题的详细信息,请参见上游 RKE2 问题,以及此评论中的具体说明。
某些情况下,默认 IngressClass
的名称可能并非 nginx
。
请确保运行以下命令来验证名称:
kubectl get ingressclass
在升级 Rancher
之前,请确保执行以下命令:
如果
Rancher
是通过 EIB(第 9 章 “Edge Image Builder”)部署的:kubectl patch helmchart rancher -n <namespace> --type='merge' -p '{"spec":{"set":{"ingress.ingressClassName":"nginx"}}}'
如果
Rancher
是通过 Helm 部署的,请在 upgrade 命令中添加--set ingress.ingressClassName=nginx
标志。有关如何使用此选项的完整示例,请参见 第 27.1.3.4.1 节 “示例”。
27.1.3.2 群集 API 控制器迁移 #
从 Edge 3.1.0
开始,Metal3
管理群集上的群集 API (CAPI) 控制器将通过 Rancher Turtles 进行管理。
要将 CAPI 控制器版本迁移到 Edge 3.1.0
兼容的版本,请安装 Rancher
Turtles
chart:
helm install rancher-turtles oci://registry.suse.com/edge/3.1/rancher-turtles-chart --version 0.3.2 --namespace rancher-turtles-system --create-namespace
一段时间后,在
capi-system
、capm3-system
、rke2-bootstrap-system
和 rke2-control-plane-system
名称空间中运行的控制器 Pod 会升级为与
Edge 3.1.0
兼容的控制器版本。
有关如何在隔离环境中安装 Rancher Turtles
的信息,请参见"Rancher Turtles
隔离式安装"(第 27.1.3.2.1 节 “Rancher Turtles 隔离式安装”)。
27.1.3.2.1 Rancher Turtles 隔离式安装 #
以下步骤假设 kubectl
已配置为连接到要升级的管理
群集。
在安装下面提到的
rancher-turtles-airgap-resources
Helm chart 之前,请确保它对clusterctl
创建的名称空间拥有正确的所有权:capi-system
所有权更改:kubectl label namespace capi-system app.kubernetes.io/managed-by=Helm --overwrite kubectl annotate namespace capi-system meta.helm.sh/release-name=rancher-turtles-airgap-resources --overwrite kubectl annotate namespace capi-system meta.helm.sh/release-namespace=rancher-turtles-system --overwrite
capm3-system
所有权更改:kubectl label namespace capm3-system app.kubernetes.io/managed-by=Helm --overwrite kubectl annotate namespace capm3-system meta.helm.sh/release-name=rancher-turtles-airgap-resources --overwrite kubectl annotate namespace capm3-system meta.helm.sh/release-namespace=rancher-turtles-system --overwrite
rke2-bootstrap-system
所有权更改:kubectl label namespace rke2-bootstrap-system app.kubernetes.io/managed-by=Helm --overwrite kubectl annotate namespace rke2-bootstrap-system meta.helm.sh/release-name=rancher-turtles-airgap-resources --overwrite kubectl annotate namespace rke2-bootstrap-system meta.helm.sh/release-namespace=rancher-turtles-system --overwrite
rke2-control-plane-system
所有权更改:kubectl label namespace rke2-control-plane-system app.kubernetes.io/managed-by=Helm --overwrite kubectl annotate namespace rke2-control-plane-system meta.helm.sh/release-name=rancher-turtles-airgap-resources --overwrite kubectl annotate namespace rke2-control-plane-system meta.helm.sh/release-namespace=rancher-turtles-system --overwrite
提取
rancher-turtles-airgap-resources
和rancher-turtles
chart 存档:helm pull oci://registry.suse.com/edge/3.1/rancher-turtles-airgap-resources-chart --version 0.3.2 helm pull oci://registry.suse.com/edge/3.1/rancher-turtles-chart --version 0.3.2
为了向
Rancher Turtles
Helm chart 的隔离式安装提供所需的资源,请安装rancher-turtles-airgap-resources
Helm chart:helm install rancher-turtles-airgap-resources ./rancher-turtles-airgap-resources-chart-0.3.2.tgz --namespace rancher-turtles-system --create-namespace
在
Rancher Turtles
Helm chart 中配置cluster-api-operator
,以从正确的位置获取控制器数据:cat > values.yaml <<EOF cluster-api-operator: cluster-api: core: fetchConfig: selector: "{\"matchLabels\": {\"provider-components\": \"core\"}}" rke2: bootstrap: fetchConfig: selector: "{\"matchLabels\": {\"provider-components\": \"rke2-bootstrap\"}}" controlPlane: fetchConfig: selector: "{\"matchLabels\": {\"provider-components\": \"rke2-control-plane\"}}" metal3: infrastructure: fetchConfig: selector: "{\"matchLabels\": {\"provider-components\": \"metal3\"}}" EOF
安装
Rancher Turtles
:helm install rancher-turtles ./rancher-turtles-chart-0.3.2.tgz --namespace rancher-turtles-system --create-namespace --values values.yaml
一段时间后,在
capi-system
、capm3-system
、rke2-bootstrap-system
和 rke2-control-plane-system
名称空间中运行的控制器 Pod 将升级为与
Edge 3.1.0
兼容的控制器版本。
27.1.3.3 Edge Helm chart 升级 - EIB #
本节介绍如何将 Helm chart 从通过 EIB(第 9 章 “Edge Image Builder”)部署的 Edge 组件堆栈升级到
Edge 3.1.0
兼容的版本。
27.1.3.3.1 先决条件 #
在 Edge 3.1
中,EIB 更改了部署 chart 的方式,不再使用 RKE2/K3s
清单自动部署机制。
这意味着,在升级到 Edge 3.1.0
兼容版本之前,使用 EIB 部署在 Edge
3.0
环境上的任何 Helm chart 都应从相关 Kubernetes 发行版的清单目录中去除其 chart 清单。
否者,任何 chart 升级都将在操作系统重新启动过程中由 RKE2/K3s 进程恢复。
去除 EIB 部署的任何 chart 清单涉及以下步骤:
为了确保能够实现灾难恢复,请备份每个 EIB 部署的清单:
注意EIB 部署的清单会有
"edge.suse.com/source:pedge image builder"
标签。注意确保您提供给以下命令的
<backup_location>
存在。grep -lrIZ 'edge.suse.com/source: edge-image-builder' /var/lib/rancher/rke2/server/manifests | xargs -0 -I{} cp {} <backup_location>
去除所有 EIB 部署的清单:
grep -lrIZ 'edge.suse.com/source: edge-image-builder' /var/lib/rancher/rke2/server/manifests | xargs -0 rm -f --
27.1.3.3.2 升级步骤 #
以下步骤假设 kubectl
已配置为连接到要升级的管理
群集。
查看发行说明(第 45.1 节 “摘要”),找到要迁移到的
Edge 3.1
兼容 chart 版本。提取所需的 Helm chart 版本:
对于托管在 HTTP 储存库中的 chart:
helm repo add <chart_repo_name> <chart_repo_urls> helm pull <chart_repo_name>/<chart_name> --version=X.Y.Z
对于托管在 OCI 注册表中的 chart:
helm pull oci://<chart_oci_url> --version=X.Y.Z
对提取的 chart 存档进行编码:
base64 -w 0 <chart_name>-X.Y.Z.tgz > <chart_name>-X.Y.Z.txt
如果需要对 chart 执行任何其他步骤,请查看“已知限制”(第 27.1.3.1 节 “已知限制”)一节。
为现有的
HelmChart
资源打补丁:重要确保为以下命令传递
HelmChart
名称、名称空间、编码文件和版本。kubectl patch helmchart <helmchart_name> --type=merge -p "{\"spec\":{\"chartContent\":\"$(cat <helmchart_name>-X.Y.Z.txt)\", \"version\":\"<helmchart_version>\"}}" -n <helmchart_namespace>
此操作将指示 helm-controller 安排一个作业,以创建将升级所需的 Helm chart 的 Pod。要查看创建的 Pod 的日志,请执行以下步骤:
找到创建的 Pod:
kubectl get pods -l helmcharts.helm.cattle.io/chart=<helmchart_name> -n <namespace>
查看 Pod 日志:
kubectl logs <pod_name> -n <namespace>
如果已完成
的 Pod 的日志没有任何错误,所需 Helm chart 的升级即告成功。
有关如何升级通过 EIB 部署的 Helm chart 的完整示例,请参见“示例”(第 27.1.3.3.3 节 “示例”)一节。
27.1.3.3.3 示例 #
本节提供的示例演示了如何将 Rancher
和
Metal3
Helm chart 升级到与
Edge 3.1.0
兼容的版本。它遵循“升级步骤”(第 27.1.3.3.2 节 “升级步骤”)一节中介绍的步骤。
用例:
当前的
Rancher
和Metal3
chart 需要升级到Edge 3.1.0
兼容的版本。Rancher
通过 EIB 部署,其HelmChart
部署在默认
名称空间中。Metal3
通过 EIB 部署,其HelmChart
部署在kube-system
名称空间中。
步骤:
在发行说明(第 45.1 节 “摘要”)中找到所需的
Rancher
和Metal3
版本。对于Edge 3.1.0
,Rancher 的版本为2.9.1
,Metal3 的版本为0.8.1
。提取所需的 chart 版本:
对于
Rancher
:helm repo add rancher-prime https://charts.rancher.com/server-charts/prime helm pull rancher-prime/rancher --version=2.9.1
对于
Metal3
:helm pull oci://registry.suse.com/edge/3.1/metal3-chart --version=0.8.1
对
Rancher
和Metal3
Helm chart 进行编码:base64 -w 0 rancher-2.9.1.tgz > rancher-2.9.1.txt base64 -w 0 metal3-chart-0.8.1.tgz > metal3-chart-0.8.1.txt
目录结构应类似于:
. ├── metal3-chart-0.8.1.tgz ├── metal3-chart-0.8.1.txt ├── rancher-2.9.1.tgz └── rancher-2.9.1.txt
如果需要对 chart 执行任何其他步骤,请查看“已知限制”(第 27.1.3.1 节 “已知限制”)一节。
对于
Rancher
:执行
已知限制
一节中描述的命令:# In this example the rancher helmchart is in the 'default' namespace kubectl patch helmchart rancher -n default --type='merge' -p '{"spec":{"set":{"ingress.ingressClassName":"nginx"}}}'
验证是否已成功添加
ingressClassName
属性:kubectl get ingress rancher -n cattle-system -o yaml | grep -w ingressClassName # Example output ingressClassName: nginx
为
Rancher
和Metal3
HelmChart 资源打补丁:# Rancher deployed in the default namespace kubectl patch helmchart rancher --type=merge -p "{\"spec\":{\"chartContent\":\"$(cat rancher-2.9.1.txt)\", \"version\":\"2.9.1\"}}" -n default # Metal3 deployed in the kube-system namespace kubectl patch helmchart metal3 --type=merge -p "{\"spec\":{\"chartContent\":\"$(cat metal3-chart-0.8.1.txt)\", \"version\":\"0.8.1\"}}" -n kube-system
找到由 Rancher 和 Metal3 Pod 创建的
helm-controller
:Rancher:
kubectl get pods -l helmcharts.helm.cattle.io/chart=rancher -n default # Example output NAME READY STATUS RESTARTS AGE helm-install-rancher-wg7nf 0/1 Completed 0 5m2s
Metal3:
kubectl get pods -l helmcharts.helm.cattle.io/chart=metal3 -n kube-system # Example output NAME READY STATUS RESTARTS AGE helm-install-metal3-57lz5 0/1 Completed 0 4m35s
使用 kubectl logs 查看每个 Pod 的日志:
Rancher:
kubectl logs helm-install-rancher-wg7nf -n default # Example successful output ... Upgrading rancher + helm_v3 upgrade --namespace cattle-system --create-namespace --version 2.9.1 --set-string global.clusterCIDR=10.42.0.0/16 --set-string global.clusterCIDRv4=10.42.0.0/16 --set-string global.clusterDNS=10.43.0.10 --set-string global.clusterDomain=cluster.local --set-string global.rke2DataDir=/var/lib/rancher/rke2 --set-string global.serviceCIDR=10.43.0.0/16 --set-string ingress.ingressClassName=nginx rancher /tmp/rancher.tgz --values /config/values-01_HelmChart.yaml Release "rancher" has been upgraded. Happy Helming! ...
Metal3:
kubectl logs helm-install-metal3-57lz5 -n kube-system # Example successful output ... Upgrading metal3 + echo 'Upgrading metal3' + shift 1 + helm_v3 upgrade --namespace metal3-system --create-namespace --version 0.8.1 --set-string global.clusterCIDR=10.42.0.0/16 --set-string global.clusterCIDRv4=10.42.0.0/16 --set-string global.clusterDNS=10.43.0.10 --set-string global.clusterDomain=cluster.local --set-string global.rke2DataDir=/var/lib/rancher/rke2 --set-string global.serviceCIDR=10.43.0.0/16 metal3 /tmp/metal3.tgz --values /config/values-01_HelmChart.yaml Release "metal3" has been upgraded. Happy Helming! ...
验证特定 chart 的 Pod 是否正在运行:
# For Rancher kubectl get pods -n cattle-system # For Metal3 kubectl get pods -n metal3-system
27.1.3.4 Edge Helm chart 升级 - 非 EIB #
本节介绍如何将 Helm chart 从通过 Helm 部署的 Edge 组件堆栈升级到 Edge 3.1.0
兼容的版本。
以下步骤假设 kubectl
已配置为连接到要升级的管理
群集。
查看发行说明(第 45.1 节 “摘要”),找到要迁移到的
Edge 3.1.0
兼容 chart 版本。获取当前运行的 Helm chart 的自定义值:
helm get values <chart_name> -n <chart_namespace> -o yaml > <chart_name>-values.yaml
如果需要对 chart 执行任何其他步骤或更改,请查看“已知限制”(第 27.1.3.1 节 “已知限制”)一节。
将 Helm chart 升级到所需版本:
对于非隔离式设置:
# For charts hosted in HTTP repositories helm upgrade <chart_name> <chart_repo>/<chart_name> --version <version> --values <chart_name>-values.yaml -n <chart_namespace> # For charts hosted in OCI registries helm upgrade <chart_name> oci://<oci_registry_url>/<chart_name> --namespace <chart_namespace> --values <chart_name>-values.yaml --version=X.Y.Z
对于隔离式设置:
在可以访问互联网的机器上,提取所需的 chart 版本:
# For charts hosted in HTTP repositories helm pull <chart_repo_name>/<chart_name> --version=X.Y.Z # For charts hosted in OCI registries helm pull oci://<chart_oci_url> --version=X.Y.Z
将 chart 存档传输到您的
管理
群集:scp <chart>.tgz <machine-address>:<filesystem-path>
升级 chart:
helm upgrade <chart_name> <chart>.tgz --values <chart_name>-values.yaml -n <chart_namespace>
验证 chart Pod 是否正在运行:
kubectl get pods -n <chart_namespace>
您可以通过检查 chart 特定的资源,对升级进行额外的验证。完成此操作后,升级便可视为成功。
有关完整示例,请参见“示例”(第 27.1.3.4.1 节 “示例”)一节。
27.1.3.4.1 示例 #
本节提供的示例演示了如何将 Rancher
和
Metal3
Helm chart 升级到与
Edge 3.1.0
兼容的版本。示例遵循“Edge Helm chart 升级 - 非 EIB”(第 27.1.3.4 节 “Edge Helm chart 升级 - 非 EIB”)一节中介绍的步骤。
用例:
当前的
Rancher
和Metal3
chart 需要升级到Edge 3.1.0
兼容的版本。Rancher
Helm chart 是从cattle-system
名称空间中的 Rancher Prime 储存库部署的。Rancher Prime
储存库通过以下方式添加:helm repo add rancher-prime https://charts.rancher.com/server-charts/prime
Metal3
是从metal3-system
名称空间中的registry.suse.com
OCI 注册表部署的。
步骤:
在发行说明(第 45.1 节 “摘要”)中找到所需的
Rancher
和Metal3
版本。对于Edge 3.1.0
,Rancher 的版本为2.9.1
,Metal3 的版本为0.8.1
。获取当前运行的
Rancher
和Metal3
Helm chart 的自定义值:# For Rancher helm get values rancher -n cattle-system -o yaml > rancher-values.yaml # For Metal3 helm get values metal3 -n metal3-system -o yaml > metal3-values.yaml
如果需要对 chart 执行任何其他步骤,请查看“已知限制”(第 27.1.3.1 节 “已知限制”)一节。
对于
Rancher
,需要在升级命令中添加--set ingress.ingressClassName=nginx
选项。
升级
Rancher
和Metal3
Helm chart:# For Rancher helm upgrade rancher rancher-prime/rancher --version 2.9.1 --set ingress.ingressClassName=nginx --values rancher-values.yaml -n cattle-system # For Metal3 helm upgrade metal3 oci://registry.suse.com/edge/3.1/metal3-chart --version 0.8.1 --values metal3-values.yaml -n metal3-system
验证
Rancher
和 Metal3 Pod 是否正在运行:# For Rancher kubectl get pods -n cattle-system # For Metal3 kubectl get pods -n metal3-system
27.2 下游群集 #
本节介绍如何将下游群集从 Edge 3.0.X
迁移到 Edge
3.1.0
。
27.2.1 先决条件 #
本节涵盖用户在开始迁移过程之前应完成的所有先决步骤。
27.2.1.1 通过 EIB 部署的 chart #
在 Edge 3.1
中,EIB(第 9 章 “Edge Image Builder”)更改了部署
chart 的方式,不再使用 RKE2/K3s
清单自动部署机制。
这意味着,在迁移到 Edge 3.1.0
兼容版本之前,使用 EIB 部署在 Edge
3.0
环境上的任何 Helm chart 都应从相关 Kubernetes 发行版的清单目录中去除其 chart 清单。
否者,任何 chart 升级都将在操作系统重新启动过程中由 RKE2/K3s 进程恢复。
在下游群集上,suse-edge/fleet-examples 储存库中名为 eib-charts-migration-prep 的 Fleet 会去除 EIB 创建的 chart 清单文件。
创建后,eib-charts-migration-prep
Fleet 会附带一个 SUC(第 19 章 “系统升级控制器”)计划,其中包含一个执行以下操作的脚本:
确定运行该脚本的当前节点是不是
初始化器
节点。如果不是,脚本不会执行任何操作。如果节点是
初始化器
,它将:检测 EIB 部署的所有
HelmChart
资源。找到上述每个
HelmChart
资源的清单文件。注意HelmChart
清单文件仅位于 RKE2 的/var/lib/rancher/rke2/server/manifests
和 K3s 的/var/lib/rancher/k3s/server/manifests
下的初始化器
节点上。为了确保能够实现灾难恢复,请备份
/tmp
下的每个清单:去除与 EIB 部署的
HelmChart
资源相关的每个清单文件。
eib-charts-migration-prep
Fleet 可以通过以下两种方式部署,具体取决于您的用例:
通过 GitRepo 资源 - 适用于有外部/本地 Git 服务器可用的用例。有关详细信息,请参见“EIB chart 迁移准备 Fleet 部署 - GitRepo”(第 27.2.1.1.1 节 “EIB chart 清单去除 Fleet 部署 - GitRepo”)。
通过捆绑包资源 - 适用于不支持本地 Git 服务器选项的隔离式用例。有关详细信息,请参见“EIB chart 清单去除 Fleet 部署 - 捆绑包”(第 27.2.1.1.2 节 “EIB chart 清单去除 Fleet 部署 - 捆绑包”)。
27.2.1.1.1 EIB chart 清单去除 Fleet 部署 - GitRepo #
在
管理
群集上,部署以下GitRepo
资源:kubectl apply -n fleet-default -f - <<EOF apiVersion: fleet.cattle.io/v1alpha1 kind: GitRepo metadata: name: eib-chart-migration-prep spec: revision: release-3.1.0 paths: - fleets/day2/system-upgrade-controller-plans/eib-charts-migration-prep repo: https://github.com/suse-edge/fleet-examples.git targets: - clusterSelector: CHANGEME # Example matching all clusters: # targets: # - clusterSelector: {} EOF
或者,也可以通过 Rancher UI 创建资源(如果有相关 UI)。有关详细信息,请参见在 Rancher UI 中访问 Fleet。
在您的
管理
群集上创建上述GitRepo
后,Fleet 将在与GitRepo
中指定的目标
相匹配的每个下游群集上部署名为eib-chart-migration-prep
的SUC 计划
。要监控此计划的生命周期,请参见“监控系统升级控制器计划”(第 19.3 节 “监控系统升级控制器计划”)。
27.2.1.1.2 EIB chart 清单去除 Fleet 部署 - 捆绑包 #
本节介绍如何将 eib-chart-migration-prep
Fleet 转换为捆绑包资源,以便在无法利用本地 git
服务器的隔离环境中使用。
步骤:
在连接网络的计算机上下载 fleet-cli:
注意确保您下载的 fleet-cli 版本与群集上部署的 Fleet 版本匹配。
对于 Mac 用户,有一个 fleet-cli Homebrew Formulae。
对于 Linux 用户,每个 Fleet 版本都会有作为资产存在的二进制文件。
检索所需的二进制文件:
Linux AMD:
curl -L -o fleet-cli https://github.com/rancher/fleet/releases/download/<FLEET_VERSION>/fleet-linux-amd64
Linux ARM:
curl -L -o fleet-cli https://github.com/rancher/fleet/releases/download/<FLEET_VERSION>/fleet-linux-arm64
将二进制文件移动到
/usr/local/bin
:sudo mkdir -p /usr/local/bin sudo mv ./fleet-cli /usr/local/bin/fleet-cli sudo chmod 755 /usr/local/bin/fleet-cli
克隆您希望使用其
eib-chart-migration-prep
Fleet 的 suse-edge/fleet-examples 版本:git clone -b release-3.1.0 https://github.com/suse-edge/fleet-examples.git
导航到 fleet-examples 储存库中的
eib-chart-migration-prep
Fleet:cd fleet-examples/fleets/day2/system-upgrade-controller-plans/eib-charts-migration-prep
创建一个指向您希望部署 Fleet 的所有下游群集的
targets.yaml
文件:cat > targets.yaml <<EOF targets: - clusterSelector: CHANGEME EOF
有关如何映射到下游群集的信息,请参见映射到下游群集。
继续构建捆绑包:
注意请确保您没有下载
fleet-examples/fleets/day2/system-upgrade-controller-plans/eib-charts-migration-prep
目录中的 fleet-cli,否则它将和捆绑包打包在一起,不建议这么做。fleet-cli apply --compress --targets-file=targets.yaml -n fleet-default -o - eib-chart-migration-prep . > eib-chart-migration-prep-bundle.yaml
有关此过程的详细信息,请参见将 Helm Chart 转换为捆绑包。
有关
fleet-cli apply
命令的详细信息,请参见 fleet apply。将 eib-chart-migration-prep-bundle.yaml 捆绑包传输到您的管理群集计算机:
scp eib-chart-migration-prep-bundle.yaml <machine-address>:<filesystem-path>
在您的管理群集上,部署 eib-chart-migration-prep-bundle.yaml 捆绑包:
kubectl apply -f eib-chart-migration-prep-bundle.yaml
在您的管理群集上,验证捆绑包是否已部署:
kubectl get bundle eib-chart-migration-prep -n fleet-default NAME BUNDLEDEPLOYMENTS-READY STATUS eib-chart-migration-prep 1/1
在您的
管理
群集上创建上述捆绑包
后,Fleet 将在与targets.yaml
中指定的目标
相匹配的每个下游群集上部署名为eib-chart-migration-prep
的SUC 计划
。要监控此计划的生命周期,请参见“监控系统升级控制器计划”(第 19.3 节 “监控系统升级控制器计划”)。
27.2.2 迁移步骤 #
执行先决条件(第 27.2.1 节 “先决条件”)步骤后,可以继续按照
Edge 3.1.0
版本的下游群集(第 29 章 “下游群集”)升级文档进行操作。