7.5.2.3.4. 使用命令行启用动态密钥注入


您可以使用命令行为虚拟机启用动态密钥注入。然后,您可以在运行时更新公共 SSH 密钥。

注意

只有 Red Hat Enterprise Linux (RHEL) 9 支持动态密钥注入。

密钥由 QEMU 客户机代理添加到虚拟机,该代理使用 RHEL 9 自动安装安装。

先决条件

  • 您可以通过运行 ssh-keygen 命令生成 SSH 密钥对。

流程

  1. 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 密钥。
  2. 运行以下命令来创建 VirtualMachineSecret 对象:

    $ oc create -f <manifest_file>.yaml
  3. 运行以下命令来启动虚拟机:

    $ 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
    # ...

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

关于红帽文档

Legal Notice

Theme

© 2026 Red Hat
返回顶部