Skip to main content
NetApp virtualization solutions
本繁體中文版使用機器翻譯,譯文僅供參考,若與英文版本牴觸,應以英文版本為準。

手動部署 Shift Operator(標準模式)

貢獻者 netapp-jsnyder

手動將 NetApp Shift 工具包與 NetApp Trident CSI 和 Migration Toolkit for Virtualization (MTV) 一起部署為容器化服務。此程序可實現自動化儲存配置和虛擬機器磁碟遷移,並利用註解和標籤在元件之間正確路由請求。

架構組件

了解 NetApp Shift 工具包、Trident CSI 和 Migration Toolkit for Virtualization 如何協同運作,以在您的 OpenShift 環境中實現自動化儲存佈建和 VM 磁碟遷移。

Shift 運算子架構圖

NetApp Shift 工具組

  • 透過鏡像倉庫以容器化服務的形式部署

  • 公開一個端點,用於監聽來自 MTV 並帶有特定註解的持久性磁碟區宣告 (PVC) 請求。

  • 負責處理虛擬機器磁碟遷移任務,包括格式轉換

NetApp Trident CSI(版本 26.06 或更高版本)

  • 充當容器儲存介面 (CSI) 配置器

  • 接收來自 Shift 工具包的 PVC 匯入請求

  • 根據 PVC 註解和標籤套用邏輯,以確定是直接處理請求還是將其重新導向至 Shift

Migration Toolkit for Virtualization (MTV 2.12 或更高版本)

  • 統籌虛擬機器遷移計劃

  • 在虛擬機器遷移期間,發出儲存配置所需的 PVC 請求

  • 添加註釋以指導下游處理

開始之前

在部署 Shift 操作員之前,請確認您的 OpenShift 環境中已安裝並設定所需的元件。

  • 虛擬化遷移工具包 Operator 執行版本為 2.12 或更新版本

  • Trident 透過 OpenShift OperatorHub 安裝 - "Trident 安裝指南"

  • NetApp Shift 以容器形式部署,NetApp Trident 可存取 Shift 端點。

  • 專門為 Shift 工具包使用而建立並標註的 Storage Class

  • 這些註解將 Shift 工具包識別為預期的處理程序,並指定目標 Trident 後端。

  • MTV 對 PVC 包含以下註解: forklift.konveyor.io/netapp-shift: "true"

步驟 1:下載並解壓縮 Shift 安裝程式

Shift 安裝套件包含部署 Shift 操作員及安裝 Shift 所需的一切。

註 如果您的叢集無法存取 quay.io,請跳過此步驟並改為按照 [離線安裝(氣隙叢集)] 程序操作。完成離線映像匯入後,請返回步驟 2。
步驟
  1. "NetApp 支援網站工具箱" 下載最新版本的 Shift 安裝程式。

    Shift 安裝程式下載頁面
  2. 解壓縮安裝包:

    tar -xf Shift-installer-1.0.0.tar.gz
  3. 切換到安裝程式目錄:

    cd shift-installer

步驟 2:建立 Shift 命名空間和 API 憑證

為 Shift 操作員設定專用命名空間,並建立安全 API 存取所需的憑證。

步驟
  1. 建立 Shift 命名空間:

    oc create ns shift
  2. 在 Shift 命名空間內建立 Shift API 存取的 Secret。請將範例值替換為您環境中的唯一使用者名稱和強式密碼:

    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

步驟
  1. 建立 TLS 憑證的 ConfigMap:

    oc create configmap shift-toolkit-service-server-crt -n shift \
      --from-file=server.cert=server.cert
  2. 建立 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 套件。

步驟
  1. 指向 --from-file `server.cert`PEM 檔案。

    ConfigMap 中的金鑰必須為 ca.crt。有了此 ConfigMap,監聽器便會以 `INSECURE_TLS=false`執行,並使用 `SHIFT_CA_CERT_FILE`針對此套件組合驗證 Shift 憑證。

  2. 建立 CA 套件組合的 ConfigMap:

    oc create configmap shift-toolkit-service-ca -n shift \
      --from-file=ca.crt=ca.cert

步驟 5:建立持續性磁碟區宣告

在部署套件組合之前,建立 Shift filedb(資料庫)和日誌所需的 PVC。

步驟
  1. 在套用 PVC 定義之前,請更新 deploy/filedb-pvc.yaml`和 `deploy/logs-pvc.yaml,以指定適合您叢集的 storageClassName(例如, ontap-storageclass)。

    註 這些 PVC 必須在步驟 6:部署 Shift 運算子中部署套件組合之前建立並可供使用。
  2. 套用 filedb PVC 清單:

    oc apply -f deploy/filedb-pvc.yaml
  3. 套用日誌 PVC 清單:

    oc apply -f deploy/logs-pvc.yaml

步驟 6:部署 Shift 運算子

將 Shift 操作員配置套用到您的 OpenShift 叢集,並驗證所需的 pod 是否成功運作。

步驟
  1. 從 shift-installer 目錄執行部署指令:

    oc apply -f deploy/shift-bundle.yaml
  2. 使用 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

建立新的 Storage Class 或使用 Shift 整合所需的註解更新現有 Storage Class。

關於此任務

儲存類別必須包含以下註解:

  • shift.netapp.io/storage-class-type

  • shift.netapp.io/trident-backend-uuid

步驟
  1. 使用所需的註解修補儲存類別:

    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
    註 可以透過執行以下命令來取得後端 UUID: oc get tbc -n trident
  2. 驗證現有儲存類別:

    oc get sc

    範例輸出:

    nimnas1172 (default)   csi.trident.netapp.io   Delete          Immediate         true

步驟 8:建立並觸發 MTV 計畫

完成 Shift 操作員部署和儲存類別配置後,即可建立並觸發 MTV 方案。

MTV 遷移計畫

有關製定 MTV 計劃的詳細資訊,請參閱"Migration Toolkit for Virtualization 文件"

以下螢幕截圖顯示觸發移轉計畫時執行的步驟順序。

遷移計劃執行步驟

以下螢幕截圖顯示了使用 Shift 工具包轉換並隨後由 NetApp Trident 匯入的 PVC。

由 NetApp Trident 匯入的 PVC
遷移計劃已成功完成

遷移計畫已成功完成 — 5 台虛擬機器和約 5 TB 的資料在約 6 分鐘內完成遷移。

接下來

遷移完成後,必須分離每個複製磁碟區。分離方法取決於 ONTAP 版本:ONTAP 9.17.1 及更新版本使用 clone split,舊版則使用 vol move。

克隆分割和磁碟區移動都是背景操作,運作期間不會影響生產工作負載。您可以在 NetApp Console 自動化目錄中的「遷移後分離」小工具中找到用於啟動分離程序的腳本。

離線安裝(氣隙叢集)

本節介紹一種適用於無法存取 quay.io 的叢集的*替代安裝路徑*。如果您的叢集可以存取 quay.io,請依照步驟 1–8 操作。

對於無法存取 quay.io 的叢集,請在部署套件組合之前,將映像檔 tarball 匯入 OpenShift 內部登錄。

無需外部鏡像倉庫路由。鏡像推送操作和套件鏡像引用均使用 image-registry.openshift-image-registry.svc:5000,可透過叢集網路存取並由叢集 CA 保護。

開始之前
  • oc CLI 已使用叢集管理員權限登入

  • skopeo 已安裝

  • 主機上可用的映像 tarball:

    • shift-toolkit-1.0.0-image.tar

    • shift-toolkit-listener-1.0.0-image.tar

步驟
  1. 啟用內部登錄(一次性步驟;如已設定,請跳過):

    oc patch configs.imageregistry.operator.openshift.io cluster \
      --type=merge -p '{"spec":{"defaultRoute":true}}'
    oc get route default-route -n openshift-image-registry
  2. 使用作用中 `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
  3. 將 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
  4. 將 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
  5. 更新 `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
  6. 部署軟體包:

    oc apply -f deploy/bundle.yaml