前言
目前,vArmor 仅兼容 containerd 环境,所以 K3S 不要设置成启动 docker,按下面步骤默认就行。
两台 ubuntu22.04 虚拟机,一台做 master,一台做 worker,两台虚拟机之间通信正常。
安装 K3S
机器 master 上安装 master 节点
curl –sfL
https://rancher-mirror.oss-cn-beijing.aliyuncs.com/k3s/k3s-install.sh |
INSTALL_K3S_MIRROR=cn sh -s -
--system-default-registry "registry.cn-hangzhou.aliyuncs.com"
--write-kubeconfig ~/.kube/config
--write-kubeconfig-mode 666
--disable traefik
如果出现下图信息, apt update
apt install policycoreutils
,再重新执行上面的安装命令。
成功安装,
其他的一些设置
# 配置 containerd 的 mirror
cat > /etc/rancher/k3s/registries.yaml <<EOF
mirrors:
:
endpoint:
"http://hub-mirror.c.163.com"
"https://docker.mirrors.ustc.edu.cn"
"https://registry.docker-cn.com"
EOF
systemctl restart k3s
# 开机自启
systemctl enable k3s --now
# 启动服务
systemctl start k3s
systemctl status k3s
机器 worker1 上安装 worker 节点
查看 master 节点的 ip
kubectl get nodes -o wide
获取 master 节点的 token
cat /var/lib/rancher/k3s/server/node-token
填入下方命令
要保证两台机器网络互通。
apt update
apt install policycoreutils
curl -sfL https://rancher-mirror.oss-cn-beijing.aliyuncs.com/k3s/k3s-install.sh | K3S_KUBECONFIG_OUTPUT=~/.kube/config INSTALL_K3S_MIRROR=cn K3S_URL=https://192.168.171.1:6443 K3S_TOKEN=K10b877a0f89a40de60d362d986d71543a66d66558ed8e731c6b3fc2e4d4e67b749::server:0266ee37851c8550c51d3afb634aeeea sh -
添加 worker 角色标签
kubectl label node worker1 node-role.kubernetes.io/worker=true --overwrite
其他的一些设置
// 开机自启
systemctl daemon-reload
systemctl enable k3s-agent
// 启动服务
systemctl start k3s-agent
systemctl status k3s-agent
// 重启服务
systemctl restart k3s-agent
// agent 查看配置信息,可以进行修改
vim /etc/systemd/system/k3s-agent.service.env
卸载 K3S
# 一键卸载 server
k3s-uninstall.sh
# 一键卸载 agent
k3s-agent-uninstall.sh
安装 helm
wget https://get.helm.sh/helm-v3.13.2-linux-amd64.tar.gz
tar -zxvf helm-v3.13.2-linux-amd64.tar.gz
cp linux-amd64/helm /usr/local/bin/
helm version
helm ls
安装 vArmor
拉取 chart 包
helm pull oci://elkeid-cn-beijing.cr.volces.com/varmor/varmor --version 0.5.4
安装
这里是 k3s + containerd 环境的安装命令,和项目中【快速上手】给出 k8s + containerd 环境的命令不一样,原因请看 https://github.com/bytedance/vArmor/issues/9
防御全开,
环境部署到这里,我目前的资源使用情况如下,还行,我这小小办公电脑顶得住。
示例测试
# 创建测试命名空间
kubectl create ns demo
# 创建 VarmorPolicy,对符合 .spec.target.selector 的 Deployment 开启 AlwaysAllow 模式沙箱
kubectl create -f test/demo/1/policy-init.yaml
# 查看 VarmorPolicy & ArmorProfile 状态
kubectl get VarmorPolicy -n demo
kubectl get ArmorProfile -n demo
# 创建 Deployment
kubectl create -f test/demo/1/deploy.yaml
# 获取 Pod name
POD_NAME=$(kubectl get Pods -n demo -l app=demo-1 -o name)
# 在 c1 容器中执行命令,读取 secret token
kubectl exec -n demo $POD_NAME -c c1 -- cat /run/secrets/kubernetes.io/serviceaccount/token
# 更新 VarmorPolicy 策略,禁止 Deployment 读取 secret token
kubectl apply -f test/demo/1/policy.yaml
# 在 c1 容器中执行命令,读取 secret token,验证读取行为被禁止
kubectl exec -n demo $POD_NAME -c c1 -- cat /run/secrets/kubernetes.io/serviceaccount/token
原文始发于微信公众号(安全小将李坦然):K3S 上部署 vArmor
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论