Shiftオペレーターを手動でデプロイする(標準モード)
NetApp Shift ツールキットを、NetApp Trident CSI および Migration Toolkit for Virtualization (MTV) を使用してコンテナ化されたサービスとして手動でデプロイします。このプロセスにより、ストレージ プロビジョニングの自動化と仮想マシンのディスク移行が可能になり、アノテーションとラベルを活用してコンポーネント間でリクエストを適切にルーティングします。
アーキテクチャコンポーネント
NetApp Shift ツールキット、Trident CSI、および Migration Toolkit for Virtualization が連携して、OpenShift 環境における自動化されたストレージ プロビジョニングと VM ディスクの移行を実現する仕組みについて説明します。
NetApp Shift ツールキット
-
イメージレジストリを介してコンテナ化されたサービスとしてデプロイされます
-
特定のアノテーションを持つ MTV から発信される Persistent Volume Claim (PVC) リクエストをリッスンするエンドポイントを公開します。
-
VMディスク移行タスク(フォーマット変換を含む)の処理を担当
NetApp Trident CSI(バージョン26.06以降)
-
コンテナストレージインターフェース(CSI)プロビジョナーとして機能します
-
ShiftツールキットからPVCインポートリクエストを受け取ります
-
PVC注釈とラベルに基づくロジックを適用して、リクエストを直接処理するかShiftにリダイレクトするかを決定します。
Migration Toolkit for Virtualization(MTV 2.12以降)
-
仮想マシンの移行計画を統括します
-
VM移行中のストレージ プロビジョニングに必要なPVCリクエストを発行します
-
下流処理をガイドするための注釈を追加します
開始する前に
OpenShift 環境に必要なコンポーネントがインストールされ、構成されていることを、Shift オペレーターをデプロイする前に確認してください。
-
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オペレーターをデプロイしてShiftをインストールするために必要なものがすべて含まれています。
|
|
クラスターが quay.io にアクセスできない場合は、この手順をスキップして、[オフラインインストール(エアギャップされたクラスター)]の手順に従ってください。オフラインイメージのインポートが完了したら、手順 2 に戻ってください。 |
-
Shift インストーラーの最新バージョンを "NetApp Support Site ツールチェスト" からダウンロードしてください。
-
インストーラーパッケージを解凍します。
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 を作成する
Shift サービスが HTTPS トラフィックを処理するために使用する TLS 証明書と秘密鍵を提供する ConfigMaps を作成します。
証明書は、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が使用されていない場合は、 `INSECURE_TLS=true`を `bundle.yaml`に設定します。HTTPSが無効になっていてTLS証明書がアクティブに使用されていない場合でも、必要なConfigMapsは上記の説明どおりに作成する必要があります。 |
ステップ4:CA バンドル ConfigMap を作成する
PVC リスナーが Shift サービスの TLS 証明書を検証するために使用する CA バンドルを提供する ConfigMap を作成します。
-
PEMファイル `--from-file`を `server.cert`指定します。
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 オペレーターのデプロイでバンドルをデプロイする前に作成され、利用可能になっている必要があります。 -
filedb PVC マニフェストを適用します:
oc apply -f deploy/filedb-pvc.yaml -
ログPVCマニフェストを適用します。
oc apply -f deploy/logs-pvc.yaml
ステップ6:Shift オペレーターをデプロイする
Shift オペレーター構成を OpenShift クラスターに適用し、必要なポッドが正常に実行されていることを確認します。
-
shift-installerディレクトリから、deployコマンドを実行します。
oc apply -f deploy/shift-bundle.yaml -
ポッド作成ステータスを使用してインストールを確認します。
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統合用のストレージクラスを設定する
Shiftとの統合に必要な注釈を追加して、新しいStorage Classを作成するか、既存の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バックエンドのUUIDは、以下のコマンドを実行することで取得できます oc get tbc -n trident -
既存のストレージクラスを確認します:
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を示しています。
移行計画が正常に完了しました — 5台の仮想マシンと約5 TBのデータが約6分で移行されました。
移行が完了したら、各クローンボリュームをデタッチする必要があります。デタッチ方法は ONTAP バージョンによって異なります。ONTAP 9.17.1 以降では クローン スプリット を使用し、それ以前のバージョンでは vol move を使用してください。
クローン スプリットとボリューム移動はどちらもバックグラウンド操作であり、実行中は本番環境のワークロードに影響を与えません。切り離しプロセスを開始するスクリプトは、NetApp Console Automation Catalog の Post Migrate Detach ウィジェット内にあります。
オフラインインストール(エアギャップされたクラスター)
このセクションでは、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
-
-
内部レジストリを有効にする(一度限りの手順。既に設定済みの場合はスキップしてください):
oc patch configs.imageregistry.operator.openshift.io cluster \ --type=merge -p '{"spec":{"defaultRoute":true}}' oc get route default-route -n openshift-image-registry -
アクティブな `oc`セッションを使用してレジストリ資格情報を生成します:
生のサービスアカウントトークンは使用しないでください。ブロブのアップロード中にエラーが発生する可能性があります。 `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