使用 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 的设置。
过程
- 创建一个包含以下参数的 YAML 文件。
- 在注释中,启用机密 vSphere Pod 功能。
...
annotations:
vmware/confidential-pod: enabled
...
- 指定容器的内存资源。
确保将内存请求和内存限制设置为与此示例相同的值。
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"
- 登录到 主管集群。
kubectl vsphere login --server=https://<server_adress> --vsphere-username <your user account name>
- 切换到要在其中部署应用程序的命名空间。
kubectl config use-context <namespace>
- 从该 YAML 文件部署机密 vSphere Pod。
kubectl apply -f <yaml file name>.yaml
注: 部署
vSphere Pod 时,DRS 会将其置于支持 SEV-ES 的
ESXi 节点。如果没有此类节点可用,
vSphere Pod 节点标记为“失败”。
启动的机密 vSphere Pod 为在该 Pod 上运行的所有工作负载提供硬件内存加密支持。
- 运行以下命令,以验证是否已创建机密 vSphere Pod。
kubectl describe pod/<yaml name>
下一步做什么
vSphere 管理员可查看机密
vSphere Pod。在
vSphere Client 中,其显示时带有
加密模式:机密计算标记。