Openshiftにおいて仮想マシンにラベルを付与する際にマニフェストのどこにlabelを付与するかによって挙動の違いがあるようだったので整理する
環境
Openshift4.18.42
OpenshiftVirtualization4.18.36
検証
・label付与対象はVirtualMachineのマニフェスト
・付与する位置はmetadata.labelあるいはspec.template.metadataの2パターン
1.metadata.labelにlabelを付与
以下のようにVirtualMachineにlabelを付与します
metadata:
(...snip)
labels:
app: rhel9-scarlet-crab-76
kubevirt.io/dynamic-credentials-support: 'true'
test: true
仮想マシンを確認するとlabelが付与されていた。

しかしVirtlauncherPodを見るとlabelは付与されていなかった。

仮想マシンを再起動しても変わらずでった

2.spec.template.metadataにlabelを付与
以下のようにVirtualMachineにlabelを付与します
apiVersion: kubevirt.io/v1
kind: VirtualMachine
metadata:
(..snip)
spec:
(...snip)
template:
metadata:
annotations:
vm.kubevirt.io/flavor: small
vm.kubevirt.io/os: rhel9
vm.kubevirt.io/workload: server
creationTimestamp: null
labels:
kubevirt.io/domain: rhel9-scarlet-crab-76
kubevirt.io/size: small
network.kubevirt.io/headlessService: headless
test2: 'true'
仮想マシンを確認 labelは付与されていない

VM Podにを付与されず

仮想マシン再起動
仮想マシンは変わらず

VM Podにラベルが付与

*VMの再起動を行いVirtlauncherPodの再作成が行われその際にlabelが付与されていそう
結果
VM側へloabelを反映させるにはmetadata.labelに記載
VM podへlabelを反映させるにはspec.template.metadataに記載しなおかつVMの再起動を行う必要がある
再起動させたくない場合は,VM podへ直接labelを付与すればよい