vSphere 관리자가 컨텐츠 라이브러리를 네임스페이스 또는 클러스터에 할당하면 DevOps 사용자는 라이브러리에 액세스하고 해당 항목을 사용하여 라이브러리의 VM 이미지에서 VM을 배포할 수 있습니다. 네임스페이스에 할당된 라이브러리에 쓰기 가능한 경우 편집 권한이 있는 DevOps 사용자는 라이브러리 항목을 관리하고 새 VM 이미지를 게시할 수도 있습니다.

참고: 사용하는 VM 이미지에는 제한이 없습니다. 바로 사용할 수 있는 OVA 이미지를 테스트하려면 권장 이미지 페이지에서 다운로드하면 됩니다. 이러한 이미지는 POC용으로만 사용됩니다. 운영 환경에서는 회사 보안 정책을 따르는 최신 패치 및 필수 보안 설정으로 이미지를 생성합니다.

사전 요구 사항

DevOps 사용자는 다음 요구 사항을 따라야 합니다.

  • vSphere 네임스페이스에 대한 Edit 권한이 있습니다.
  • vSphere 관리자가 쓰기 가능한 컨텐츠 라이브러리를 네임스페이스에 할당했습니다. Data Center CLI를 사용하여 감독자에 VM 컨텐츠 라이브러리 추가의 내용을 참조하십시오.
  • 컨텐츠 라이브러리가 로컬이거나 게시되어 있습니다. 구독한 라이브러리는 편집할 수 없습니다.

프로시저

  1. 라이브러리 항목을 관리합니다.
    1. 네임스페이스에서 컨텐츠 라이브러리를 사용할 수 있는지 확인합니다.
      참고: 라이브러리에서 라이브러리 항목을 관리하거나 라이브러리에 VM 이미지를 게시하려면 writable 상태가 true인지 확인합니다.
      kubectl get cl -n <namespace-name>
         NAME                   VSPHERENAME   TYPE    WRITABLE   STORAGETYPE   AGE
         cl-b585915ddxxxxxxxx   Test-ns-cl-1  Local   true       Datastore     3m9s
         cl-535d4b3dnxxxyyyyy   Test-ns-cl-1  Local   false      Datastore     3m9s
    2. 라이브러리의 컨텐츠를 확인합니다.
      kubectl get clitem -n <namespace-name>
       NAME                 VSPHERENAME     CONTENTLIBRAYREF        TYPE   READY   AGE
       clitem-d2wnmq.....   item 1          cl-b585915ddxxxxxxxx    Ovf    True    26c
       clitem-55088d.....   item 2          cl-b585915ddxxxxxxxx    Ovf    True    26c
       clitem-xyzxyz.....   xyzxyz          cl-535d4b3dnxxxyyyyy    Ovf    True    26c
    3. 컨텐츠 라이브러리에서 이미지를 삭제합니다.
      참고: 쓰기 가능한 라이브러리에서만 항목을 삭제할 수 있으며, Edit 권한이나 더 높은 수준의 권한이 있는 경우에만 가능합니다.
      clitem을 삭제하면 해당 vmi 리소스도 삭제됩니다.
      kubectl delete clitem clitem-55088d.....
       NAME                 VSPHERENAME     CONTENTLIBRAYREF        TYPE   READY   AGE
       clitem-d2wnmq.....   item 1          cl-b585915ddxxxxxxxx    Ovf    True    26c
       clitem-xyzxyz.....   xyzxyz          cl-535d4b3dnxxxyyyyy    Ovf    True    26c
    4. 이미지 세부정보를 가져옵니다.
      kubectl get vmi -n <namespace-name>
       NAME              PROVIDER-NAME      CONTENT-LIBRAY-NAME    IMAGE-NAME VERSION   OS-TYPE        FORMAT   AGE
       vmi-d2wnmq.....   clitem-d2wnmq..... cl-b585915ddxxxxxxxx   item 1               ubuntu64guest  ovf      26c
       vmi-55088d.....   clitem-55088d..... cl-b585915ddxxxxxxxx   item 2               otherguest     ovf      26c
  2. 컨텐츠 라이브러리에 이미지를 게시합니다.
    1. 소스 VM을 배포하기 위한 yaml 파일을 생성합니다.
      VirtualMachine 규격의 imageName이 컨텐츠 라이브러리의 VM 이미지 중 하나를 참조하는지 확인합니다.
      예: source-vm.yaml
      apiVersion: vmoperator.vmware.com/v1alpha2
      kind: VirtualMachine
      metadata:
        name: source-vm
        namespace: test-publish-ns
      spec:
        className: best-effort-small
        storageClass: wcpglobal-storage-profile
        imageName: vmi-d2wnmq.....
        powerState: poweredOn
        vmMetadata:
          transport: CloudInit
    2. 배포된 VM에 대한 정보를 얻고 VM에 연결하여 실행 중인지 확인합니다.
      다음과 유사한 출력이 표시됩니다.
      kubectl get vm -n <namespace-name>
      NAME        POWER-STATE   CLASS             IMAGE           PRIMARY-IP        AGE
      source-vm   poweredOn     best-effort-small vmi-d2wnmq..... 192.168.000.00   9m32s
    3. 새 대상 이미지에 대한 게시 요청을 생성합니다.
      예를 들면 vmpub.yaml입니다. 요청에서 소스 VM 및 이미지를 게시할 대상 컨텐츠 라이브러리의 이름을 나타냅니다. 라이브러리에 쓰기 가능한지 확인합니다.
      apiVersion: vmoperator.vmware.com/v1alpha2
      kind: VirtualMachinePublishRequest
      metadata:
        name: vmpub-1
        namespace: test-publish-ns
      spec:
        source:
          apiVersion: vmoperator.vmware.com/v1alpha2
          kind: VirtualMachine
          name: source-vm # If empty, the name of this VirtualMachinePublishRequest will be used as the source VM name ("vmpub-1" in this example).
        target:
          item:
            name: publish-image-1 # If empty, the target item name is <source-vm-name>-image by default
          location:
            apiVersion: imageregistry.vmware.com/v1alpha2
            kind: ContentLibrary
            name: cl-b585915ddxxxxxxxx
      
    4. 게시 요청을 설명합니다.
      게시 요청이 ImageName이 설정된 Ready 상태인지 확인합니다.
      kubectl describe vmpub vmpub-1 -n <namespace-name>
      ==================
      Status:
        imageName: vmi-12980cddd...
        ready: true
      ==================
    5. 게시 요청이 완료된 후 새 이미지가 컨텐츠 라이브러리에 추가되었는지 확인합니다.
      kubectl get vmi
       NAME              PROVIDER-NAME      CONTENT-LIBRAY-NAME    IMAGE-NAME      VERSION   OS-TYPE        FORMAT   AGE
       vmi-12980cddd..   clitem-12980cddd.. cl-b585915ddxxxxxxxx   publish-image-1           ubuntu64guest  ovf      7m12s
       vmi-d2wnmq.....   clitem-d2wnmq..... cl-b585915ddxxxxxxxx   item 1                    ubuntu64guest  ovf      26m
       vmi-55088d.....   clitem-55088d..... cl-b585915ddxxxxxxxx   item 2                    otherguest     ovf      26m
    이 새 이미지를 사용하여 새 VM을 배포할 수 있습니다.