vSphere 管理者がコンテンツ ライブラリを名前空間またはクラスタに割り当てた後に、DevOps ユーザーはライブラリにアクセスし、そのアイテムを使用してライブラリ内の仮想マシン イメージから仮想マシンをデプロイできます。名前空間に割り当てられたライブラリが書き込み可能な場合、編集権限を持つ DevOps ユーザーもライブラリ アイテムを管理し、新しい仮想マシン イメージを公開できます。

注: 使用する仮想マシン イメージに制限はありません。すぐに使用可能な OVA イメージをテストする場合は、「 Recommended Images」ページからイメージをダウンロードできます。これらのイメージは POC での使用を目的としたものであることに注意してください。本番環境では、最新のパッチと必要なセキュリティ設定を使用し、企業のセキュリティ ポリシーに従ったイメージを作成してください。

前提条件

DevOps ユーザーとして、次の要件を満たしていることを確認します。

手順

  1. ライブラリ アイテムを管理します。
    1. 名前空間でコンテンツ ライブラリが使用可能であることを確認します。
      注: ライブラリ内のライブラリ アイテムを管理する場合、またはライブラリに仮想マシン イメージを公開する場合は、その書き込み可能ステータスが 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 権限かそれより上のレベルの権限がある場合です。
      アイテムを削除すると、対応する 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. yaml ファイルを作成して、ソース仮想マシンをデプロイします。
      VirtualMachine 仕様の imageName が、コンテンツ ライブラリ内のいずれかの仮想マシン イメージを参照していることを確認します。
      たとえば、 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. デプロイされた仮想マシンに関する情報を取得し、仮想マシンに接続して、実行されていることを確認します。
      次のような出力が表示されます。
      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 など。要求で、イメージを公開するソース仮想マシンとターゲット コンテンツ ライブラリの名前を指定します。ライブラリが書き込み可能であることを確認します。
      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. 公開要求について説明します。
      公開要求が Ready ステータスで、 ImageName が設定されていることを確認します。
      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
    この新しいイメージを使用して、新しい仮想マシンをデプロイできます。