手动部署 Shift operator(标准模式)
使用 NetApp Trident CSI 和 Migration Toolkit for Virtualization (MTV) 将 NetApp Shift toolkit 手动部署为容器化服务。此过程支持自动化存储资源调配和虚拟机磁盘迁移,利用注释和标签在组件之间适当路由请求。
架构组件
了解 NetApp Shift 工具包、Trident CSI 和 Migration Toolkit for Virtualization 如何协同工作,以实现 OpenShift 环境中的自动存储资源调配和虚拟机磁盘迁移。
NetApp Shift 工具包
-
通过映像注册表部署为容器化服务
-
公开一个端点,该端点侦听源自 MTV 的带有特定注释的持久卷声明 (PVC) 请求
-
负责处理 VM 磁盘迁移任务,包括格式转换
NetApp Trident CSI(版本 26.06 或更高版本)
-
充当容器存储接口(CSI)配置程序
-
接收来自 Shift 工具包的 PVC 导入请求
-
应用基于 PVC 注释和标签的逻辑,以确定是直接处理请求还是将其重定向到 Shift
Migration Toolkit for Virtualization(MTV 2.12 或更高版本)
-
协调虚拟机迁移计划
-
在 VM 迁移期间发出存储配置所需的 PVC 请求
-
添加注释以指导下游处理
开始之前
在部署 Shift 操作符之前,请验证您的 OpenShift 环境已安装并配置了所需的组件。
-
Migration Toolkit for Virtualization Operator 正在运行 2.12 或更高版本
-
Trident 通过 OpenShift OperatorHub 安装 - "Trident 安装指南"
-
NetApp Shift 作为容器部署,Shift 端点可供 NetApp Trident 访问
-
已专门为 Shift 工具包的使用创建和注释存储类
-
注释将 Shift 工具包标识为预期处理程序,并指定目标 Trident 后端
-
MTV包含以下关于PVC的注释:
forklift.konveyor.io/netapp-shift: "true"
步骤 1:下载并提取 Shift 安装程序
Shift 安装程序包包含部署 Shift operator 和安装 Shift 所需的一切。
|
|
如果您的集群无权访问 quay.io,请跳过此步骤并按照[离线安装(气隙集群)]过程进行操作。完成离线镜像导入后,请返回步骤 2。 |
-
从 "NetApp 支持站点 Toolchest" 下载最新版本的 Shift 安装程序。
-
提取安装程序包:
tar -xf Shift-installer-1.0.0.tar.gz -
更改为安装程序目录:
cd shift-installer
步骤 2:创建 Shift 命名空间和 API 凭据
为 Shift 操作员设置专用命名空间,并创建安全 API 访问所需的凭据。
-
创建 Shift 命名空间:
oc create ns shift -
在 Shift 命名空间中创建 Shift API 访问的密钥。将示例值替换为您环境的唯一用户名和强密码:
oc create secret generic shift-credentials -n shift \ --from-literal=username='admin' \ --from-literal=password='admin'
|
|
将密码替换为首选值。 |
步骤 3:创建 TLS 证书 ConfigMaps
创建 ConfigMaps,其中提供 Shift 服务用于处理 HTTPS 流量的 TLS 证书和私钥。
证书必须在 CN/SAN 设置为 shift-toolkit-service.shift.svc.cluster.local 的情况下颁发。证书和密钥文件必须分别命名为 server.cert 和 server.key。
-
为 TLS 证书创建 ConfigMap:
oc create configmap shift-toolkit-service-server-crt -n shift \ --from-file=server.cert=server.cert -
为 TLS 私钥创建 ConfigMap:
oc create configmap shift-toolkit-service-server-key -n shift \ --from-file=server.key=server.key
|
|
如果不使用 HTTPS,请在 bundle.yaml 中设置 INSECURE_TLS=true。即使禁用了 HTTPS 且未主动使用 TLS 证书,仍应按照上文所述创建所需的 ConfigMaps。
|
步骤 4:创建 CA 捆绑包 ConfigMap
创建 ConfigMap,其中提供 PVC 侦听器用于验证 Shift 服务的 TLS 证书的 CA 捆绑包。
-
指向
--from-file`server.cert`PEM 文件。ConfigMap 中的键必须为
ca.crt。有了此 ConfigMap,侦听器将使用 `INSECURE_TLS=false`运行,并使用 `SHIFT_CA_CERT_FILE`根据此捆绑包验证 Shift 证书。 -
为 CA 捆绑包创建 ConfigMap:
oc create configmap shift-toolkit-service-ca -n shift \ --from-file=ca.crt=ca.cert
第 5 步:创建持久卷声明
在部署捆绑包之前,创建 Shift filedb(数据库)和日志所需的 PVC。
-
在应用 PVC 定义之前,更新
deploy/filedb-pvc.yaml`和 `deploy/logs-pvc.yaml`以指定适合您的集群的 `storageClassName(例如ontap-storageclass)。这些 PVC 必须在步骤 6:部署 Shift operator 中部署捆绑包之前创建并可用。 -
应用 filedb PVC 清单:
oc apply -f deploy/filedb-pvc.yaml -
应用日志 PVC 清单:
oc apply -f deploy/logs-pvc.yaml
步骤 6:部署 Shift operator
将 Shift 运算符配置应用到您的 OpenShift 集群,并验证所需的 Pod 是否正在成功运行。
-
从 shift-installer 目录中,运行 deploy 命令:
oc apply -f deploy/shift-bundle.yaml -
使用 Pod 创建状态验证安装:
oc get pods -n shift输出示例:
NAME READY STATUS RESTARTS AGE shift-68ccd597c-dtsj7 1/1 Running 0 18s shift-pvc-listener-57d546f6b8-r9mgc 1/1 Running 0 18s
|
|
要取消部署,请运行 oc delete -f deploy/bundle.yaml --ignore-not-found。此命令可删除由 `bundle.yaml`部署的资源,同时保留命名空间和密钥。
|
步骤 7:配置 Shift 集成的存储类
创建新的 Storage Class 或使用 Shift 集成所需的注释更新现有 Storage Class。
存储类必须包含以下注释:
-
shift.netapp.io/storage-class-type -
shift.netapp.io/trident-backend-uuid
-
使用所需的注释修补存储类:
oc patch storageclass nimnas1172 \ --type=merge \ -p '{ "metadata": { "annotations": { "shift.netapp.io/storage-class-type": "shift", "shift.netapp.io/trident-backend-uuid": "facc3aad-83bb-423a-b6a1-ba0fb8811217" } } }'输出示例:
storageclass.storage.k8s.io/nimnas1172 patched可以通过运行 `oc get tbc -n trident`来获取后端 UUID -
验证现有存储类:
oc get sc输出示例:
nimnas1172 (default) csi.trident.netapp.io Delete Immediate true
第8步:创建和触发MTV计划
完成 Shift 操作员部署和存储类配置后,您可以创建并触发 MTV 计划。
有关创建 MTV 计划的详细信息,请参见 "Migration Toolkit for Virtualization 文档"。
以下屏幕截图显示了触发迁移计划时执行的步骤顺序。
以下屏幕截图显示了使用 Shift 工具包转换并随后由 NetApp Trident 导入的 PVC。
成功完成迁移计划 — 大约 6 分钟内迁移了 5 台虚拟机和大约 5 TB 的数据。
迁移完成后,必须分离每个克隆卷。分离方法取决于 ONTAP 版本:对 ONTAP 9.17.1 及更高版本使用克隆拆分,或对早期版本使用 vol move。
克隆拆分和卷移动都是后台操作,在运行时不会影响生产工作负载。NetApp Console 自动化目录中的*迁移后分离*小部件中提供了用于启动分离过程的脚本。
离线安装(气隙集群)
本节描述了无法访问 quay.io 的集群的*替代安装路径*。如果您的集群可以访问 quay.io,请按照步骤 1–8 进行操作。
对于无法访问 quay.io 的集群,请在部署捆绑包之前将镜像 tarball 导入 OpenShift 内部注册表。
不需要外部注册表路由。映像推送操作和捆绑映像引用都使用 image-registry.openshift-image-registry.svc:5000,可通过集群网络访问并由集群 CA 保护。
-
oc使用 cluster-admin 权限登录的 CLI -
skopeo已安装 -
主机上可用的镜像压缩包:
-
shift-toolkit-1.0.0-image.tar -
shift-toolkit-listener-1.0.0-image.tar
-
-
启用内部注册表(一次性步骤;如果已配置,则跳过):
oc patch configs.imageregistry.operator.openshift.io cluster \ --type=merge -p '{"spec":{"defaultRoute":true}}' oc get route default-route -n openshift-image-registry -
使用活动 `oc`会话生成注册表凭据:
不要使用原始服务帐户令牌,因为它可能会在 blob 上传期间失败。使用 `oc registry login`创建与注册表重定向流兼容的身份验证文件。
REGISTRY=image-registry.openshift-image-registry.svc:5000 oc registry login --skip-check \ --registry=$REGISTRY \ --to=/tmp/registry-auth.json -
将 Shift 工具包映像推送至内部注册表:
skopeo copy \ docker-archive:shift-toolkit-1.0.0-image.tar \ docker://$REGISTRY/shift/shift-toolkit:1.0.0 \ --dest-tls-verify=false \ --dest-authfile=/tmp/registry-auth.json -
将 Shift 工具包侦听器映像推送至内部注册表:
skopeo copy \ docker-archive:shift-toolkit-listener-1.0.0-image.tar \ docker://$REGISTRY/shift/shift-toolkit-listener:1.0.0 \ --dest-tls-verify=false \ --dest-authfile=/tmp/registry-auth.json -
更新 `deploy/bundle.yaml`中的映像引用以使用内部注册表:
sed -i \ -e "s|quay.io/netapp/shift-toolkit:1.0.0|$REGISTRY/shift/shift-toolkit:1.0.0|g" \ -e "s|quay.io/netapp/shift-toolkit-listener:1.0.0|$REGISTRY/shift/shift-toolkit-listener:1.0.0|g" \ -e "s|imagePullPolicy: Always|imagePullPolicy: IfNotPresent|g" \ deploy/bundle.yaml -
部署包:
oc apply -f deploy/bundle.yaml