Skip to content

快速开始

如果你想要部署一个 CdsCTF 实例,这其实不是一件很容易的事情,但是,我保证后面会让事情变得简单一点。

这篇 快速开始 并不会直接教你详细的部署方法,而是教你选择符合自己需求的部署方式并且给予一些必要的前置帮助。

不难发现,CdsCTF 有两种推荐的部署方式,一个是 Docker + K3s 组合式部署,还有一种是 仅 K3s 部署,可能选择上会有点困难。但事先声明,不论是哪一种部署方式,本指南都不提供 SSL 的适配方法。

部署方式对比

仅 K3s 部署

推荐的部署方式

这种部署方式适用于可长期运行的站点,用于长期存储题目或举办大型比赛

这种部署方式中,CdsCTF、数据库、缓存等基础设施和题目动态环境都运行于 K3s 集群中。可以最大化地利用 K3s 的优势,以及实现更可靠的数据监控。只不过学习成本稍微有点高。

Docker 和 K3s 组合式部署

最小化且最方便的部署方式

这种部署方式适用于个人使用 CdsCTF 存储题目、举办小型比赛(含校赛)

在这种方式下,CdsCTF、数据库、缓存等服务都运行于一个 Docker 实例中,并使用 Docker Compose 对这些服务进行编排,但是题目动态环境将运行于远程的 K3s。这种方式最显著的优势就是,不会涉及太多 K3s 的知识点,即使是新手运维也可以轻松驾驭。

前置服务

在大多数 CTF 平台中,我们通常使用 Docker 或者 Kubernetes 来实现题目动态环境(或者说靶机)的控制。简单来说,Docker 是一个能将应用及其依赖 打包成轻量级、可移植容器 的工具,而 Kubernetes 又是一个 用于管理和编排容器 的强大平台。但是 CdsCTF 执着于使用 Kubernetes 来管理题目动态环境。所以不论如何,都需要安装一个 Kubernetes,所以接下来的教程会先引导你在一台 Linux 服务器上安装 Kubernetes。

仅仅是引导,因为互联网上有很多基础教程,这里仅仅是提供一些提示,以防付出不必要的努力。

在与 CdsCTF 相关的实践中,推荐使用 K3s 作为 Kubernetes 的实现。可以参考 官方文档 进行部署。

针对国内用户,可以使用 K3s 的加速安装命令:

bash
curl –sfL \
    https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | \
    INSTALL_K3S_MIRROR=cn sh -s - \
    --system-default-registry "registry.cn-hangzhou.aliyuncs.com"

如果你想要让 K3s 的容器运行时为 Docker 而非 containerd,你只需要在运行上面的安装命令之前,在终端使用命令,这是 以测试为目的,否则不建议这么做:

bash
INSTALL_K3S_EXEC="--docker"

随后再运行 K3s 的安装命令,从现在开始,你的 K3s 的容器运行时就是 Docker 了。

还有一个需要注意的点,就是 K3s 通常会捆绑一个 Traefik 作为集群的 Ingress Controller,如果你不想要,或者说自行部署,可以在命令的后面再加一条:

bash
--disable=traefik

在不采取额外措施安装完 K3s 后,你的宿主机会有一个小变化。就是不论是访问 http://127.0.0.1 还是 https://127.0.0.1,返回都是 404 page not found,因为此时你宿主机的 80 和 443 端口,全都会被 K3s 的 Traefik 接管。如果你后续使用 Docker + K3s 的方式部署或者另有安排,那么我们可能需要对此做出一点调整,可详见文档更多内容。