Kubernetes 集群安全扫描之-Popeye
一 背景
Popeye 是一种实用程序,可扫描实时 Kubernetes 集群并报告已部署资源和配置的潜在问题。它根据部署的内容为您的集群消毒。通过扫描您的集群,它可以检测错误配置并帮助您确保最佳实践到位,从而防止未来出现问题。它旨在减少在运行 Kubernetes 集群时面临的认知过载。此外,如果您的集群使用metric-server,它会报告潜在的资源分配过多/不足,并在您的集群容量不足时尝试警告您。
Popeye 是一个只读工具,它不会以任何方式改变您的任何 Kubernetes 资源!Popeye 会扫描您的集群以寻找最佳实践和潜在问题。目前,Popeye 只查看节点、命名空间、pod 和服务。消毒器的目的是发现错误配置,即端口不匹配、无效或未使用的资源、指标利用率、探针、容器映像、RBAC 规则、裸露资源等。
二 Popeye简介
Popeye可以在 Linux,OSX 和 Windows 平台上使用。
Popeye 会扫描集群中的最佳实践和潜在问题。目前,Popeye 只关注节点、名称空间、Node和服务。很快就会有更检测去,的是检测错误配置,例如端口不匹配、死的或未使用的资源、度量利用、探针、容器图像、 RBAC 规则、裸资源等。Popeye 不是另一个静态分析工具。它运行和检查库伯内特斯资源的活动集群和净化资源。
详细检测项目:full list of codes
三 实战测试
3.1 安装
Popeye 适合 Kubernetes 1.13+,您可以将 Popeye 容器化并作为一次性或 CronJob 直接在您的 Kubernetes 集群中运行。它可在 Linux、MacOS 和 Windows 平台上使用。
- linux演示Popeye的使用:
wget https://github.com/derailed/popeye/releases/download/v0.9.8/popeye_Linux_x86_64.tar.gztar -zxf popeye_Linux_x86_64.tar.gz
tar -zxf popeye_Linux_x86_64.tar.gz
- Mac 安装
brew install derailed/popeye/popeye
3.2 使用
大力水手使用256色终端模式。在“尼克斯”系统上确保设置相应的 TERM。
$ export TERM=xterm-256color
# 执行检测
$ ./popeye version
# 保持报告
$ POPEYE_REPORT_DIR=$(pwd) popeye --save --out html --output-file report.html
查看检测输出报告
3.3 将Popeye部署在k8s内
可以在kubernetes内部将popeye作为cronjob来运行,定时检查集群监控状态。
$ kubectl apply -f k8s/popeye/ns.yml && kubectl apply -f k8s/popeye
$ cat > k8s/popeye/ns.yml <<EOF
apiVersion: batch/v1
kind: CronJob
metadata:
name: popeye
namespace: popeye
spec:
schedule: "* */1 * * *" # Fire off Popeye once an hour
concurrencyPolicy: Forbid
jobTemplate:
spec:
template:
spec:
serviceAccountName: popeye
restartPolicy: Never
containers:
- name: popeye
image: derailed/popeye
imagePullPolicy: IfNotPresent
args:
- -o
- yaml
- --force-exit-zero
- true
resources:
limits:
cpu: 500m
memory: 100Mi
EOF
四 其他
可以利用popeye检测集群及应用状态,可以配合定时任务和将报告发送出来,供集群管理员修复及时刻关注集群状态。
参考链接
- 点赞
- 收藏
- 关注作者
评论(0)