9.4.2.3.4. CLI を使用して動的キーインジェクションを有効にする
コマンドラインを使用して、仮想マシンの動的キーインジェクションを有効にすることができます。その後、実行時に SSH 公開鍵を更新できます。
Red Hat Enterprise Linux (RHEL) 9 のみが動的キーインジェクションをサポートしています。
キーは QEMU ゲストエージェントによって仮想マシンに追加され、RHEL 9 とともに自動的にインストールされます。
前提条件
-
ssh-keygenコマンドを実行して、SSH 鍵ペアを生成しました。 -
OpenShift CLI (
oc) がインストールされている。
手順
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 runStrategy: Always 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 # ...