eskechivoi/k8s-ctf

GitHub: eskechivoi/k8s-ctf

一个基于 Kubernetes 与 Helm 的 CTF 挑战部署框架,解决安全培训中环境快速编排与分发问题。

Stars: 2 | Forks: 0

# k8s-ctf 前端、API 和 Helm 图表,用于在 Kubernetes 上轻松部署 CTF 挑战。 ## ctf-api 提供一些端点来更新 CTF 挑战的图表,并为 CTF 玩家部署新的挑战。 `challenge-commons` 图表被挂载到 `ctf-api` Pod 中作为卷。API 会将新的依赖项添加到这个挂载的卷中。一个初始化容器负责从 GitHub 下载 `challenge-commons` 图表并将其添加到挂载的卷中。 ### 端点: - /api/dependencies - GET:返回集群中安装的所有挑战图表。 - POST:在集群中安装一个新的挑战。 - challenge_name: str, chart_file: file(格式为 .tar)——(application/json) - /api/deploy - POST:为用户部署一个新的挑战。 - user_name: str, challenge_name: str(application/json) ## 大量图表,需要初始化吗? 实际上,每个图表文件夹在这个整体架构中都有其独立的作用: - `challenge-commons`:是挑战的“父图表”。它被挂载到 API Pod 中。 - 为挑战定义 Ingress 规则。 - 为挑战图表定义全局值。 - `k8s-ctf-chart`:是后端和前端 Pod 的“父图表”。 - 定义访问后端和前端的 Ingress 规则。 - 定义全局值,如副本数、标签等。 - `challenge-chart-template`:用于为挑战创建新图表的模板。 - API 图表:后端 Deployment 和 Service。 - 前端图表:前端 Deployment 和 Service。 ## 安装 首先,你需要确保 ctf-api 和 ctf-frontend 镜像已经构建完成,并且在 Kubernetes 集群中可访问。 假设你使用的是本地环境(如 minikube),只需在本地构建镜像即可。 一旦镜像可以从集群中访问,运行以下命令: ``` cd k8s-ctf-chart helm dependency build helm install k8s-ctf . \ --namespace k8sctf \ --create-namespace ``` 这将创建 k8sctf 命名空间,并在其中安装 API 和前端。 ### 在 minikube 内部构建镜像 ``` minikube docker-env & minikube -p minikube docker-env --shell powershell | Invoke-Expression # In powershell ``` ## 卸载 ``` helm uninstall k8s-ctf --namespace k8sctf ```
标签:API, chart, cve, devops, Helm, Ingress, k8s-ctf, Minikube, NIDS, SEO, 依赖管理, 初始化容器, 前端, 后端, 命名空间, 图表, 子域名突变, 容器化, 挑战, 日志审计, 服务, 本地开发, 模板, 部署