9.7. 自定义 Web 控制台
作为集群管理员,您可以通过集成动态插件来自定义 OpenShift Container Platform Web 控制台。然后,虚拟机(VM)所有者可以使用来自 Virtualization 页面中不同标签页提供的那些插件。
9.7.1. 为虚拟机启用批量操作 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
您可以通过创建一个在 web 控制台中启用批量操作的动态插件,使虚拟机(VM)所有者能够同时执行大规模管理任务,如备份和存储迁移。
此集成减少了多虚拟机环境的手动任务,并确保自定义操作作为原生的、可选择的批量操作在 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 hook,或在生成操作项目的源代码中指定 React hook。
-
在扩展引用的源文件中,实施可处理选定资源数组的 hook。
插件示例:
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。 - 选中两个或多个现有虚拟机的复选框。
- 点 Actions 下拉菜单。确认您可以运行您创建的自定义操作。
-
进入 Virtualization