7.5.2.3.4. 使用命令行启用动态密钥注入
您可以使用命令行为虚拟机启用动态密钥注入。然后,您可以在运行时更新公共 SSH 密钥。
注意
只有 Red Hat Enterprise Linux (RHEL) 9 支持动态密钥注入。
密钥由 QEMU 客户机代理添加到虚拟机,该代理使用 RHEL 9 自动安装安装。
先决条件
-
您可以通过运行
ssh-keygen命令生成 SSH 密钥对。
流程
为
VirtualMachine对象和Secret对象创建清单文件:清单示例
apiVersion: kubevirt.io/v1 kind: VirtualMachine metadata: name: example-vm namespace: example-namespace spec: dataVolumeTemplates: - metadata: name: example-vm-volume spec: sourceRef: kind: DataSource name: rhel9 namespace: openshift-virtualization-os-images storage: resources: {} instancetype: name: u1.medium preference: name: rhel.9 running: true template: spec: domain: devices: {} volumes: - dataVolume: name: example-vm-volume name: rootdisk - cloudInitNoCloud: userData: |- #cloud-config runcmd: - [ setsebool, -P, virt_qemu_ga_manage_ssh, on ] name: cloudinitdisk accessCredentials: - sshPublicKey: propagationMethod: qemuGuestAgent: users: ["cloud-user"] source: secret: secretName: authorized-keys --- apiVersion: v1 kind: Secret metadata: name: authorized-keys data: key: c3NoLXJzYSB...-
spec.template.spec.volumes.cloudInitNoCloud定义数据源,如userData。 -
spec.template.spec.accessCredentials.sshPublicKey.source.secret.secretName定义secret对象名称。 -
secret对象中的data.key定义完整公共 SSH 密钥。
-
运行以下命令来创建
VirtualMachine和Secret对象:$ oc create -f <manifest_file>.yaml运行以下命令来启动虚拟机:
$ virtctl start vm example-vm -n example-namespace
验证
获取虚拟机配置:
$ oc describe vm example-vm -n example-namespace输出示例
apiVersion: kubevirt.io/v1 kind: VirtualMachine metadata: name: example-vm namespace: example-namespace spec: template: spec: accessCredentials: - sshPublicKey: propagationMethod: qemuGuestAgent: users: ["cloud-user"] source: secret: secretName: authorized-keys # ...