7.4.2.2.3. 명령줄을 사용하여 VM을 생성할 때 키 추가
명령줄을 사용하여 VM(가상 머신)을 생성할 때 정적으로 관리되는 공용 SSH 키를 추가할 수 있습니다. 키는 처음 부팅할 때 VM에 추가됩니다.
키가 VM에 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: <.> userData: |- #cloud-config user: cloud-user password: <password> chpasswd: { expire: False } name: cloudinitdisk accessCredentials: - sshPublicKey: propagationMethod: configDrive: {} source: secret: secretName: authorized-keys <.> --- apiVersion: v1 kind: Secret metadata: name: authorized-keys data: key: | MIIEpQIBAAKCAQEAulqb/Y... <.><.> 구성 드라이브를 생성하려면
cloudInitConfigCryostat를 지정합니다. <.>Secret오브젝트 이름을 지정합니다. <.> 공용 SSH 키를 붙여넣습니다.VirtualMachine및Secret오브젝트를 생성합니다.$ oc create -f <manifest_file>.yamlVM을 시작합니다.
$ virtctl start vm example-vm -n example-namespace
검증
VM 구성을 가져옵니다.
$ 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 # ...