部署

INFO

部署篇章将会省略平台的配置内容,如有需要请参考 快速上手 章节及 appsettings.json 配置 章节。

GZCTF 提供多种可行的部署方式,按照推荐度排序如下所示:

K8s 集群部署

推荐使用 👍

这种部署方式适用于大型比赛和长期比赛,以及持续化部署。

GZCTF、数据库、题目容器均在同一 k8s 集群中,使用命名空间进行隔离。可以最大程度地利用 k8s 的优势,同时可以利用 grafana、prometheus 等监控工具进行监控,也有更完善的统计数据可以收集,但是部署过程较为复杂,学习成本较高。不过是持续化部署的首选查看细节

Docker 和 K8s 分离部署

易于使用 👍

这种部署方式适用于小型比赛和校赛,部署过程更加亲民。

GZCTF、数据库在一个 Docker 实例中,并使用远程 k8s 作为题目容器平台。这样的部署方式可以在可接受的成本下最大化地利用 k8s 的安全性和部署优势,部署过程更加亲民。采用 k3s 作为 k8s 发行版,可以实现低难度部署,对于一般 CTF 比赛和校赛来说是一个不错的选择查看细节

WARNING

在使用 Docker 和 K8s 分离部署时,无法使用平台流量代理及流量捕获功能

如果您只有一台机器,强烈不建议在一台机器上同时运行 k3s 和 Docker,并使用 Docker 运行 GZCTF。

Docker 单机部署

仅供测试 ⚠️

这种部署方式适用于单机测试和最小化部署,不适用于生产环境

GZCTF、数据库、题目容器均在同一 Docker 实例中,这样的部署方式可以在单机小资源的情况下进行部署,但是安全性较低,资源限制相关功能不够完善,仅推荐在单机测试、最小化部署的情况下使用仍在施工,参考快速开始

Docker Swarm 集群部署

不推荐 🚫

不推荐使用 Docker Swarm 集群部署,由于缺少部署经验,且相对于上述部署方式可能存在一些安全性问题。

GZCTF、数据库、题目容器均在 Docker Swarm 集群中,目前 Docker Swarm 集群部署的功能虽然可用,但由于缺少部署经验,且相对于上述部署方式可能存在一些安全性问题,不推荐使用