Helm 部署
CBCTF Chart 位于仓库根目录的 chart/。默认会创建应用 Deployment、Service、Ingress、ServiceAccount、ClusterRole、共享 PVC,以及内置
PostgreSQL 和 Redis。
前置要求
- Kubernetes 集群可用
- Helm 可用
- 集群可以拉取
ghcr.io/0rays/cbctf、PostgreSQL、Redis 以及题目镜像 - 如启用持久化,集群需要可用 StorageClass
- 动态附件建议使用支持
ReadWriteMany的共享存储 - VPC 靶机需要提前安装 Kube-OVN 和 Multus CNI
- KubeVirt VM 靶机需要提前安装 KubeVirt,并确认节点支持虚拟化
安装
添加 Helm Repo
须使用自定义 values
Helm values 会渲染为容器内 /app/config.yaml。升级 values 后会滚动重启:
升级和卸载
共享 PVC 默认带有保留策略,卸载不会删除 /app/data 中的数据。PostgreSQL 和 Redis 的 PVC 也应在确认备份后再手动清理。
常用 Values
应用配置
上传大小限制已拆分为 cbctf.gin.upload.picture、cbctf.gin.upload.challenge、cbctf.gin.upload.writeup。旧的 cbctf.gin.upload.max 不再生效。
JWT、PostgreSQL 和 Redis 密钥会写入 /app/config.yaml。
管理后台不能修改 PostgreSQL/GORM、Redis、数据目录、Gin 监听地址和监听端口。
PostgreSQL 和 Redis
当前 Chart values 中没有外部 PostgreSQL 或外部 Redis 的 externalHost 配置项。如果需要使用外部数据库,需要同步调整 Chart
模板或用等价的 Service 名称接入。
Kubernetes 靶机配置
Chart 创建的 ClusterRole 包含 Pod、Service、Job、NetworkPolicy、EndpointSlice、Multus NAD、KubeVirt VirtualMachine、Kube-OVN Subnet/VPC/IP 等资源权限。Chart 不会安装 KubeVirt、Kube-OVN 或 Multus,需要时请先在集群层面安装这些组件。
Chart 不会安装 KubeVirt、Kube-OVN 或 Multus,需要时请先在集群层面安装这些组件。
如果使用自定义 ServiceAccount 或外部 RBAC,可以用下面的命令提前检查关键权限:
Ingress 示例
安装后检查
检查初始管理员密码:
如果 Pod 反复重启,优先检查日志中的数据库、Redis、RBAC、PVC、KubeVirt、Kube-OVN/Multus 相关错误。
启动时资源检查与创建
Helm 安装后,应用启动时会检查或创建以下资源:
- 命名空间:
{namespace} - 共享存储 PVC:
{namespace}-shared-volume - Kubernetes API 权限:上方 RBAC 表中的所有 verbs
PVC 缺失会导致动态附件不可用。KubeVirt 资源不会在启动时创建,只有启动包含 x-kubevirt: true 的 VM 靶机时才会创建对应
VirtualMachine。
