《云原生机密计算最佳实践白皮书》——06运行时底座——海光CSV机密容器——基于pre-attestation使用机密容器(1) https://developer.aliyun.com/article/1231283?groupCode=aliyun_linux
步骤五:安装并启动GOP KBS
GOP(guest owner proxy)用于验证CSV VM的启动,并有条件地提供一个secret,是一项非常复杂的操
作。该工具设计用于在可信环境中运行,提供验证和sercret注入服务。
1. 请执行以下命令,安装GOP KBS
yum install -y gop
初始化:
cd /opt/csv/guest-owner-proxy ./make_grpc.sh
2. 安装hag
hag是海光提供的工具,主要用于建立和管理服务器的csv证书链,确保csv虚拟机在安全可靠的环境下执行,不受主机干扰。
yum install -y hag
3. 使用hag生成证书链
rm -rf /opt/csv/*cert /opt/csv/*txt /opt/csv/*bin /tmp/csv-guest-owner-proxy/ && \ cd /opt/csv && \ hag --pdh_cert_export
4. 修改脚本适配本机环境
将keysets.json中的min-api-major、min-api-minor、allowed-build-ids分别改为hag --platform_status显示的api_major、api_minor、build_id
将gop-client.py中hw_api_major、hw_api_minor、hw_build_id分别改为hag --platform_status显示的api_major、api_minor、build_id
将gop-server.py中的build_id值改为与gop-client.py中hw_build_id相同
5. 启动GOP server
cd /opt/csv/guest-owner-proxy/ && \ ./make_grpc.sh && \ ./gop-server.py
步骤六:制作加密镜像
1. 制作加密镜像
请参考指南制作加密镜像。 在本例中可以使用 docker.io/haosanzi/busybox-v1:encrypted 作为镜像进行测试。
2. 将加密key保存到GOP的keys.json文件中
GOP的keys.json文件路径:/opt/csv/guest-owner-proxy/keys.json 。
步骤七:部署加密镜像
1. 创建RuntimeClass对象kata
用户可以使用RuntimeClass为pod指定不同的运行时,这里使用kata作为验证时使用的运行时。在集群中执行以下命令,创建RuntimeClass对象kata。
cat <<-EOF | kubectl apply -f - apiVersion: node.k8s.io/v1 kind: RuntimeClass metadata: name: kata handler: kata EOF
2. 部署pod
用如果 pod 的 runtimeClassName 设置为 kata,CRI 插件会使用 Kata Containers 运行时运行 pod。执行以下命令,部署名称为busybox的pod。
cat <<-EOF | kubectl apply -f - apiVersion: v1 kind: Pod metadata: name: nginx-sandbox spec: runtimeClassName: kata containers: - image: docker.io/haosanzi/busybox-v1:encrypted command: - top imagePullPolicy: IfNotPresent name: alphine-haosanzi restartPolicy: Never EOF
3. 测试加密镜像是否部署成功
执行以下命令,查看加密镜像是否部署成功:
kubectl get pods
从上述输出信息可知已部署成功。
NAME READY STATUS RESTARTS AGE nginx-sandbox 1/1 Running 0 50s