9.7. Web コンソールをカスタマイズする
クラスター管理者は、動的プラグインを統合することで、OpenShift Container Platform の Web コンソールをカスタマイズできます。仮想マシン (VM) の所有者は、Virtualization ページのさまざまなタブから、これらのプラグインによって提供されるアクションを使用できるようになります。
9.7.1. 仮想マシンの一括操作を有効にする リンクのコピーリンクがクリップボードにコピーされました!
仮想マシン (VM) の所有者が、バックアップやストレージ移行などの大規模な管理タスクを、複数の仮想マシンに対して同時に実行できるようにするには、Web コンソールで一括操作を可能にする動的プラグインを作成する必要があります。
この統合により、マルチ仮想マシン環境における手作業が削減され、カスタムアクションが Virtualization ページ内からネイティブな一括操作として選択可能になります。
前提条件
- 動的プラグインを作成している。
- クラスター管理者の権限がある。
- OpenShift Virtualization がインストールされている OpenShift Container Platform クラスターへアクセスできる。
手順
プラグインの設定ファイルに、
console.action/provider拡張機能を追加します。一括操作を有効にするには、
VirtualMachineリソースの配列を対象とするcontextIdフィールドを使用する必要があります。console-extensions.jsonファイルの抜粋例:{ type: 'console.action/provider', properties: { contextId: 'kubevirt.io~v1~VirtualMachine[]', provider: { $codeRef: 'useSimpleBulkActions', }, }, }-
properties.contextIdは、KubeVirtプラグインがサポートを宣言する文字列を指定します。 -
properties.providerは、アクションアイテムを生成するソースコード内の React フックまたは関数を指定します。
-
拡張機能が参照するソースファイル内で、選択されたリソースの配列を処理するフックを実装します。
プラグインの例:
import { type ExtensionHook, AccessReviewResourceAttributes, Action, } from '@openshift-console/dynamic-plugin-sdk'; import { V1VirtualMachine } from '@kubevirt-ui-ext/kubevirt-api/kubevirt'; import { VirtualMachineModel } from '@kubevirt-ui-ext/kubevirt-api/console'; import { useMemo } from 'react'; const useSimpleBulkActions: ExtensionHook<Action[], (V1VirtualMachine & { cluster?: string })[]> = ( vms, ) => { const areAllRunning = vms.every((vm) => vm.status?.printableStatus === 'Running'); const isCrossCluster = new Set(vms.map((vm) => vm.cluster)).size > 1; const firstVm = vms[0]; const accessReview: AccessReviewResourceAttributes = useMemo( () => ({ cluster: firstVm?.cluster, group: VirtualMachineModel.apiGroup, name: firstVm?.metadata?.name, namespace: firstVm?.metadata?.namespace, resource: VirtualMachineModel.plural, verb: 'delete', }), [firstVm?.cluster, firstVm?.metadata?.name, firstVm?.metadata?.namespace], ); const checkAllRunningAction: Action = useMemo( () => ({ id: 'check-all-running', cta: () => console.log('All selected VMs are running?', areAllRunning), label: 'Check VMs are running', disabled: isCrossCluster, disabledTooltip: isCrossCluster ? 'VMs from different clusters detected' : '', accessReview, }), [areAllRunning, isCrossCluster, accessReview], ); const actions = useMemo(() => [checkAllRunningAction], [checkAllRunningAction]); return [actions, true, null]; }; export default useSimpleBulkActions;前の例で示したプラグインは、選択されたすべての仮想マシンが実行されているかを確認し、ログメッセージをコンソールに出力します。
- プラグインをクラスターにデプロイします。
検証
- OpenShift Container Platform Web コンソールにログインします。
仮想マシンに対して一括操作を適用できることを確認します。
-
Virtualization
VirtualMachines に移動します。 - 既存の仮想マシンが 2 つ以上ある場合は、該当するチェックボックスを選択します。
- Actions ドロップダウンメニューをクリックします。作成したカスタムアクションが実行できることを確認します。
-
Virtualization