使用 vSphere with Tanzu,可以在 主管集群 上运行机密 vSphere Pod。机密 vSphere Pod 采用保持客户机操作系统内存加密的硬件技术,从而防止从 Hypervisor 对其进行访问。

从 vSphere 7.0 Update 2 开始,可添加 Secure Encrypted Virtualization-Encrypted State (SEV-ES) 以额外增强安全性,从而创建机密 vSphere Pod。SEV-ES 可防止 CPU 寄存器将寄存器中的信息泄漏给 Hypervisor 等组件。SEV-ES 还可以检测对 CPU 寄存器状态的恶意修改。有关在 vSphere 环境中使用 SEV-ES 技术的更多信息,请参见 使用 AMD Secure Encrypted Virtualization-Encrypted State 保护虚拟机

前提条件

要在 ESXi 主机上启用 SEV-ES ,vSphere 管理员必须遵循以下准则:
  • 使用支持 SEV-ES 功能的主机。目前,SEV-ES 仅支持 AMD EPYC 7xx2 CPU(名为 Rome 的代码)和更高版本的 CPU。
  • 使用 ESXi 7.0 Update 2 或更高版本。
  • ESXi 系统的 BIOS 配置中启用 SEV-ES。有关访问 BIOS 配置的详细信息,请参见系统的文档。
  • 在 BIOS 中启用 SEV-ES 时,请为最小 SEV 非 ES ASID设置输入一个等于主机上的 SEV-ES 虚拟机和机密 vSphere Pod 数加 1 的值。例如,如果计划运行 100 个 SEV-ES 虚拟机和 128 个 vSphere Pod,则至少输入 229。可以输入一个最高为 500 的设置。

过程

  1. 创建一个包含以下参数的 YAML 文件。
    1. 在注释中,启用机密 vSphere Pod 功能。
      ...
      annotations:
              vmware/confidential-pod: enabled
      ...
    2. 指定容器的内存资源。
      确保将内存请求和内存限制设置为与此示例相同的值。
      resources:
            requests:
              memory: "512Mi"
            limits:
              memory: "512Mi"
      可参考以下 YAML 文件示例:
      apiVersion: v1
      kind: Pod
      metadata:
        name: photon-pod
        namespace: my-podvm-ns
        annotations:
          vmware/confidential-pod: enabled
      spec:  # specification of the pod's contents
        restartPolicy: Never
        containers:
        - name: photon
          image: wcp-docker-ci.artifactory.eng.vmware.com/vmware/photon:1.0
          command: ["/bin/sh"]
          args:    ["-c", "while true; do echo hello, world!; sleep 1; done"]
          resources:
            requests:
              memory: "512Mi"
            limits:
              memory: "512Mi"
  2. 登录到 主管集群
    kubectl vsphere login --server=https://<server_adress> --vsphere-username <your user account name>
  3. 切换到要在其中部署应用程序的命名空间。
    kubectl config use-context <namespace>
  4. 从该 YAML 文件部署机密 vSphere Pod
    kubectl apply -f <yaml file name>.yaml
    注: 部署 vSphere Pod 时,DRS 会将其置于支持 SEV-ES 的 ESXi 节点。如果没有此类节点可用, vSphere Pod 节点标记为“失败”。

    启动的机密 vSphere Pod 为在该 Pod 上运行的所有工作负载提供硬件内存加密支持。

  5. 运行以下命令,以验证是否已创建机密 vSphere Pod
    kubectl describe pod/<yaml name>

下一步做什么

vSphere 管理员可查看机密 vSphere Pod。在 vSphere Client 中,其显示时带有 加密模式:机密计算标记。