《云原生机密计算最佳实践白皮书》——06运行时底座——海光CSV机密容器——基于runtime-attestation使用机密容器(2) https://developer.aliyun.com/article/1231359?groupCode=aliyun_linux
步骤二:安装kata 环境
Kata Containers是一个开源的、致力于用轻量级虚拟机构建一个安全的容器运行时的实现,这些虚拟机在感觉和执行上与容器类似,但使用硬件虚拟化技术作为第二层防御,提供了更强的工作负载隔离。
关于项目的更多信息,请参见kata-container。
1. 安装kata-containers
1、请执行以下命令,安装kata-containers。
yum install -y kata-static
2、运行以下命令,查看kata-containers是否安装成功。
tree /opt/kata/
2. 安装qemu
此处使用的qemu基于6.2.0构建。
yum install -y qemu-system-x86_64
3. 安装guest kernel,initrd,ovmf
ccv0-guest中包含kata运行CSV VM所需的guest kernel、initrd、OVMF、cmdline等文件。 其中: guest的rootfs和kernel,需使用efifi_secret的内核模块以支持向文件系统中注入secret,加入AA并修改AA设置,自行构建请参考guest Rootfs and Kernel ; 这里提供的OVMF是基于f0f3f5aae7c4d346ea5e24970936d80dc5b60657 进行构建的,也可以使用edk2-stable202108后的版本自行构建,以支持CSV。
yum install -y ccv0-guest
cmdline中记录了CSV VM启动时所需的参数信息,需根据实际使用情况进行修改。可参考以下命令:
cat <<EOF | sudo tee /opt/csv/ccv0-guest/cmdline tsc=reliable no_timer_check rcupdate.rcu_expedited=1 i8042.direct=1 i8042.dumbkbd=1 i8042.nopnp=1 i8042.noaux=1 noreplace-smp reboot=k console=hvc0 console=hvc1 crypto mgr.notests net.ifnames=0 pci=lastbus=0 quiet panic=1 nr_cpus=`cat /proc/cpuinfo| grep processor | wc -l` scsi_mod.scan=none agent.confifig_fifile=/etc/agent-confifig.toml EOF
4. 安装kata-runtime
kata-runtime运行CSV VM。
yum -y install kata-runtime
5. 配置kata-runtime
执行以下命令,配置kata 运行时: 这里修改了kata-runtime默认配置中的qemu、guest kernel && initrd && OVMF路径; 使能confifidential-guest选项并加入attestation-agent-confifig配置; 将默认内存大小由2048调整为8000; 将共享文件系统由"virtio-fs"调整为"virtio-9p"。
mkdir -p /etc/kata-containers/ && \ cp /opt/kata/share/defaults/kata-containers/confifiguration.toml /etc/kata-containers/ && \ cd /etc/kata-containers/ && \ sed -i 's/opt\/kata\/bin\/qemu-system-x86_64/opt\/qemu\/bin\/qemu-system-x86_64/' confifigura tion.toml && \ sed -i 's/kata\/share\/kata-containers\/vmlinux.container/csv\/ccv0-guest\/vmlinuz-5.15.0-rc5+/' confifiguration.toml && \ sed -i 's/image = \"\/opt\/kata\/share\/kata-containers\/kata-containers/initrd = \"\/opt\/csv\/c cv0-guest\/initrd.run/' confifiguration.toml && \ sed -i 's/\# confifidential_guest/confifidential_guest/' confifiguration.toml && \ sed -i 's/kernel_params = \"\"/kernel_params = \"agent.confifig_fifile=\/etc\/agent-confifig.toml\"/' confifigu ration.toml && \ sed -i 's/fifirmware = \"\"/fifirmware = \"\/opt\/csv\/ccv0-guest\/OVMF.fd\"/' confifiguration.toml && \ sed -i 's/default_memory = 2048/default_memory = 8000/' confifiguration.toml && \ sed -i 's/shared_fs = \"virtio-fs\"/shared_fs = \"virtio-9p\"/' confifiguration.toml && \ sed -i 's/\#service_offlfflffload/service_offlfflffload/' confifiguration.toml
步骤三:安装containerd
Containerd是一个行业标准的容器运行时,强调简单性、健壮性和可移植性。它可以作为Linux和Windows的守护进程,可以管理其主机系统的完整容器生命周期:图像传输和存储、容器执行和监督、底层存储和网络附件等。 更多信息请参考containerd
1、执行以下命令,安装containerd
sudo yum install -y containerd
2、启动containerd
sudo systemctl enable /etc/systemd/system/containerd.service sudo systemctl daemon-reload sudo service containerd restart
预期输出类似如下:
● containerd.service - containerd container runtime Loaded: loaded (/etc/systemd/system/containerd.service; disabled; vendor preset: disabled) Active: active (running) since Thu 2022-03-31 16:52:43 CST; 1s ago Docs: https://containerd.io Process: 1884520 ExecStartPre=/sbin/modprobe overlay (code=exited, status=0/SUCCESS) Main PID: 1884522 (containerd) Tasks: 34 Memory: 46.8M CGroup: /system.slice/containerd.service └─1884522 /usr/bin/containerd
步骤四:搭建kubernetes运行环境
请参考kubernetes官方指南安装Kubernetes cluster。搭建kubernetes运行环境。
《云原生机密计算最佳实践白皮书》——06运行时底座——海光CSV机密容器——基于runtime-attestation使用机密容器(4) https://developer.aliyun.com/article/1231357?groupCode=aliyun_linux