创建内容库并使用虚拟机模板填充内容库后,请使用 vSphere Client 将库添加到命名空间。通过将库添加到命名空间,您可以授予 DevOps 用户访问库的权限。此外,还可以使用数据中心 CLI (DCLI) 命令将可写或只读内容库添加到命名空间,或者在集群级别分配只读库。

使用 vSphere Client 将虚拟机内容库添加到命名空间

使用 vSphere Client 添加的内容库是只读的。DevOps 用户可以访问此内容库中的映像,但无法将虚拟机映像发布到此库。

可以将多个内容库添加到单个命名空间。可以将同一内容库添加到不同的命名空间。
注: 此过程仅适用于虚拟机服务的内容库。必须从 Tanzu Kubernetes Grid 卡视图管理 Tanzu Kubernetes Grid 内容库。

前提条件

所需特权:
  • 命名空间.修改集群范围的配置
  • 命名空间.修改命名空间配置

过程

  1. vSphere Client 中,转到命名空间。
    1. vSphere Client 主菜单中,选择工作负载管理
    2. 单击命名空间选项卡,然后单击命名空间。
  2. 添加内容库。
    1. 虚拟机服务卡视图中,单击添加内容库
    2. 选择一个或多个内容库,然后单击确定

使用 vSphere Client 管理命名空间上的虚拟机内容库

将库与命名空间关联后,可以使用 vSphere Client 将其从命名空间移除。您还可以添加更多库。

从命名空间移除内容库不会影响之前使用库映像部署的虚拟机。
注: 此过程仅适用于虚拟机服务的内容库。必须从 Tanzu Kubernetes Grid 卡视图管理 Tanzu Kubernetes Grid 内容库。

前提条件

所需特权:
  • 命名空间.修改集群范围的配置
  • 命名空间.修改命名空间配置

过程

  1. vSphere Client 中,转到命名空间。
    1. vSphere Client 主菜单中,选择工作负载管理
    2. 单击命名空间选项卡,然后单击命名空间。
  2. 添加或移除内容库。
    1. 虚拟机服务卡片中,单击管理内容库
    2. 执行以下操作之一。
      选项 描述
      移除内容库 取消选择内容库,然后单击确定
      添加内容库 选择一个或多个内容库,然后单击确定

下一步做什么

库的 OVF 模板将在 Kubernetes 命名空间中作为虚拟机映像提供,并且可供 DevOps 以自助方式使用虚拟机。请参见 在 vSphere IaaS control plane 中部署虚拟机
注: 命名空间中仅显示库中的 OVF 模板。其他类型的内容不会显示在命名空间中。

使用数据中心 CLI 将虚拟机内容库添加到命名空间

作为 vSphere 管理员,您可以使用数据中心 CLI (DCLI) 命令将内容库分配给命名空间。分配库时,可以将与命名空间关联的库指定为可写库。当库可写时,除了查看库和库中的映像外,DevOps 用户还可以向库发布新的虚拟机映像。

使用 DCLI 命令,可以将任何类型的库(包括本地库、已发布库和已订阅库)添加到命名空间。但是,只能将本地库和已发布库链接为可写库。内容库和库项目仅在关联的命名空间中可用。

过程

  1. 使用 root 用户帐户登录 vCenter Server
  2. 键入 dcli +i,以在交互模式下使用 DCLI。
  3. 获取要与命名空间关联的内容库的 ID。
    dcli > namespacemanagement content library list
  4. 运行以下命令,将内容库与命名空间相关联。
    更新操作并非增量操作。只有列表中指定的库才会与命名空间相关联,并且之前添加的库将被移除,除非指定了这些库的 ID。例如,如果先更新 '[{"content_library": "CLA", "writable": "true"}]' 再更新 '[{"content_library": "CLB", "writable": "true"}]',系统将移除 CLA,而仅添加 CLB。如果要同时关联 CLA 和 CLB,则必须指定两个库: '[{"content_library": "CLA", "writable": "true"}, {"content_library": "CLB", "writable": "true"}]'
    dcli > namespaces instances update --namespace namespace_name --content-libraries '[{"content_library": "content_library_ID", "writable": "true | false"}]' 
    使用以下参数:
    • --namespace namespace_name - 命名空间的名称。
    • --content_libraries content_library_ID writable: true | false - 要与命名空间关联的内容库的 ID,以及库是否可写。
    例如,
    dcli > namespaces instances update --namespace lb-edit-ns --content-libraries '[{"content_library": "cl-b585915ddxxxxxxxx", "writable": "true"}]' 
  5. 要从命名空间中删除内容库,请重复 namespaces instances update 命令,从阵列列表中移除内容库条目。
    例如,
    dcli > namespaces instances update --namespace lb-edit-ns --content-libraries '[]'

结果

添加的内容库将在 DevOps 命名空间视图中可用。
DevOps 用户可以运行以下命令来验证是否已添加或删除内容库。
kubectl get cl -n lb-edit-ns
   NAMESPACE    NAME                   VSPHERENAME   TYPE    WRITABLE   STORAGETYPE   AGE
   lb-edit-ns   cl-b585915ddxxxxxxxx   Test-ns-cl    Local   true       Datastore     3m9s
kubectl describe cl cl-b585915ddxxxxxxxx -n lb-edit-ns
kubectl get clitem -n lb-edit-ns

使用数据中心 CLI 将虚拟机内容库添加到 主管

除了在命名空间级别分配内容库外,vSphere 管理员还可以使用数据中心 CLI (DCLI) 命令将库与 主管 集群相关联。内容库将可用于 主管 中的所有命名空间。

可以关联所有类型的库,包括本地库、已发布库和已订阅库。

注: 使用 主管 关联的内容库是只读的。DevOps 用户只能访问此内容库中的虚拟机映像,但无法将虚拟机映像发布到此库。

前提条件

有关 DCLI 命令的详细信息,请参见 VMware 数据中心 CLI

过程

  1. 使用 root 用户帐户登录 vCenter Server
  2. 键入 dcli +i,以在交互模式下使用 DCLI。
  3. 获取 主管 的名称以及要连接到 主管 的内容库的 ID。
    1. 从集群列表获取 主管 的名称。
      该命令将列出 vCenter Server 上可用的所有集群。
      dcli > namespacemanagement clusters list
    2. 列出 vCenter Server 上可用的所有类型的所有内容库的 ID。
      dcli > library list
    3. 验证特定库的详细信息。
      dcli > library get --library-id content_library_ID
  4. 将一个或多个内容库与 主管 相关联。
    更新操作并非增量操作。只有列表中指定的库才会与命名空间相关联,并且之前添加的库将被移除,除非指定了这些库的 ID。例如,如果先更新 '[{"content_library": "CLA", "writable": "true"}]' 再更新 '[{"content_library": "CLB", "writable": "true"}]',系统将移除 CLA,而仅添加 CLB。如果要同时关联 CLA 和 CLB,则必须指定两个库: '[{"content_library": "CLA", "writable": "true"}, {"content_library": "CLB", "writable": "true"}]'
    dcli > namespacemanagement clusters update --cluster cluster_name --content-libraries '[{"content_library": content_library_ID_1}, {"content-library": content_library_ID_2}]'
    使用以下参数:
    • --cluster cluster_name - 主管 集群的标识符。
    • --content-libraries content_library_ID - 要与 主管 关联的内容库的 ID。您可以列出多个 ID。
      例如,
      dcli > namespacemanagement clusters update --cluster cluster_name --content-libraries '[{"content_library": 535d4b3d-xxxx-xxxx-xxxx-xxxxxxxxxxxx}, {"content-library": b5aa7f68-xxxx-xxxx-xxxx-xxxxxxxxxxxx}]'
  5. 确认内容库已连接到集群。
    dcli > namespacemanagement clusters get --cluster cluster_name
    输出必须包含已连接内容库的 ID。
  6. 要从集群中删除关联的内容库,请重复 namespacemanagement clusters update 命令,从内容库阵列列表中移除内容库条目。
    例如,
    dcli > namespacemanagement clusters update --cluster cluster_name --content-libraries '[]'

结果

新添加的内容库将在 DevOps 集群视图中可用。vSphere 管理员对内容库所做的任何更改都将反映在 DevOps 视图中。DevOps 用户可以运行以下命令以列出内容库并描述其内容:
  • kubectl get ccl - 集群级别所有可用内容库的列表。输出可能类似于以下内容。
    NAME                   VSPHERENAME                          TYPE         STORAGETYPE   AGE
    cl-f28af8153fb849bd7   Kubernetes Service Content Library   Subscribed   Datastore     6d5h
    cl-knounwp7xxxxxxxxx   Image Registry Content Library       Local        Datastore     6d4h
  • kubectl get cclitem - 集群级别内容库中所有项目的列表。
  • kubectl describe ccl NAME - 集群级别特定内容库的详细信息。