7.4.2.2.3. コマンドラインを使用して仮想マシンを作成するときにキーを追加する
コマンドラインを使用して仮想マシンを作成するときに、静的に管理される公開 SSH キーを追加できます。鍵は最初の起動時に仮想マシンに追加されます。
鍵は、cloud-init データソースとして仮想マシンに追加されます。この方法では、cloud-init ユーザーデータ内のアプリケーションデータからアクセス認証情報が分離されます。この方法は、cloud-init ユーザーデータには影響しません。
前提条件
-
ssh-keygenコマンドを実行して、SSH 鍵ペアを生成しました。
手順
VirtualMachineオブジェクトとSecretオブジェクトのマニフェストファイルを作成します。apiVersion: kubevirt.io/v1 kind: VirtualMachine metadata: name: example-vm namespace: example-namespace spec: dataVolumeTemplates: - apiVersion: cdi.kubevirt.io/v1beta1 kind: DataVolume metadata: name: example-vm-disk spec: sourceRef: kind: DataSource name: rhel9 namespace: openshift-virtualization-os-images storage: resources: requests: storage: 30Gi running: false template: metadata: labels: kubevirt.io/domain: example-vm spec: domain: cpu: cores: 1 sockets: 2 threads: 1 devices: disks: - disk: bus: virtio name: rootdisk - disk: bus: virtio name: cloudinitdisk interfaces: - masquerade: {} name: default rng: {} features: smm: enabled: true firmware: bootloader: efi: {} resources: requests: memory: 8Gi evictionStrategy: LiveMigrate networks: - name: default pod: {} volumes: - dataVolume: name: example-volume name: example-vm-disk - cloudInitConfigDrive:1 userData: |- #cloud-config user: cloud-user password: <password> chpasswd: { expire: False } name: cloudinitdisk accessCredentials: - sshPublicKey: propagationMethod: configDrive: {} source: secret: secretName: authorized-keys2 --- apiVersion: v1 kind: Secret metadata: name: authorized-keys data: key: | MIIEpQIBAAKCAQEAulqb/Y...3 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: configDrive: {} source: secret: secretName: authorized-keys # ...