为了使能K8s对TEE资源的感知和管理,TrustZone提供了TEE设备插件,以便K8s能够将CA/TA容器调度到合适的节点上。
1 2 3 4 5 |
yum install make gcc wget https://go.dev/dl/go1.15.15.linux-arm64.tar.gz tar xzvf go1.15.15.linux-arm64.tar.gz export PATH=$PWD/go/bin/:$PATH go version |
git clone -b tee-device-plugin https://gitee.com/openeuler/kunpengsecl.git git clone https://gitee.com/openeuler/itrustee_sdk.git
1 2 |
mkdir -p kunpengsecl/tee-device-plugin/cmd/TA/TA_cert mkdir -p kunpengsecl/tee-device-plugin/cmd/TA/signed_config |
拷贝后的目录结构如下:
1
|
vim kunpengsecl/tee-device-plugin/cmd/TA/manifest.txt
|
1
|
vim kunpengsecl/tee-device-plugin/cmd/CA/libteememca/tee_mem_ca.c
|
1 2 |
cd kunpengsecl/tee-device-plugin make |
编译完成后,将在“pkg”目录下生成如下文件。
若直接在宿主机上部署插件,可通过如下命令部署和启动。
1 2 3 4 |
cp pkg/libteememca.so /usr/lib64/ cp pkg/tee-device-plugin /vendor/bin cp pkg/*.sec /data/ /vendor/bin/tee-device-plugin |
应该从和基础镜像一致的系统上拷贝,以免系统差异导致应用或库无法使用。
1 2 3 4 |
cp pkg/* docker/ cp /usr/bin/tlogcat docker/ cp /usr/lib64/libteec.so docker/ cp /usr/lib64/libboundscheck.so docker/ |
1 2 |
cd docker docker build -t tee-device-plugin . |
1 2 |
docker tag tee-device-plugin:latest <repository>/tee-device-plugin:latest docker push <repository>/tee-device-plugin:latest |
1
|
kubectl label nodes <node-name> teetype=trustzone |
1 2 |
cd ../deploy vim tee-device-plugin.yml |
1 2 |
kubectl create -f tee-device-plugin.yml kubectl get pods -A -o wide |
至此,插件已成功部署至支持TrustZone的计算节点。
1
|
vim test-pod.yml
|
1 2 |
kubectl create -f test-pod.yml kubectl describe node <node-name> |
1
|
kubectl get pods -A -o wide |
1
|
kubectl logs -f k8s-tee-device-plugin-ds-<xxxxx> -n kube-system |
其中xxxxx为随机字符串,可根据插件PoD的实际name进行修改。
1
|
kubectl logs -f test-pod-ta |