K8S 开发实践-CBCTF

终于是初步实现一两年前的想法,开发个CTF平台出来,写个部署过程,以免后续忘记

演示地址:https://test.jbnrz.com.cn

ESXI

  • VPC网络需要使用macvlan来实现,物理机层面须配置

  • 每个节点需要支持NFS挂载,以Ubuntu为例
sudo apt install nfs-common

Kubernetes

Install

  • 安装k8s本体,参考下列内容
https://kubernetes.io/zh-cn/docs/setup/production-environment/tools/kubeadm/install-kubeadm/
https://kubernetes.io/zh-cn/docs/setup/production-environment/container-runtimes/#cgroup-drivers
https://kubernetes.io/zh-cn/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/
https://jbnrz.com.cn/index.php/2024/10/20/k8s-first-contact-install/
  • 安装网络插件时使用:Kube-OVN Multus Thin Plugin
https://kubeovn.github.io/docs/stable/start/one-step-install/
https://github.com/k8snetworkplumbingwg/multus-cni/

CBCTF

config

  • 第一次运行自动生成默认配置
# 后端地址,为外部访问时使用的地址,末尾无 `/`
backend: "http://127.0.0.1:8000"
# 前端地址,为外部访问时使用的前端地址,末尾无 `/`;同时作为 CORS 策略使用
frontend: "http://127.0.0.1:3000"
# 数据存储路径,同时为 NFS 挂载路径;服务中使用 NFS 作为Pod文件传递途径
path: "./uploads"
# 日志
log:
  # DEBUG INFO WARNING ERROR
  level: "info"
  save: true
# Gin
gin:
  mode: "release"
  host: "127.0.0.1"
  port: 8000
  # 前端静态资源URI,将拼接URL为${backend}/platform,为前后端合并时使用,须与前端代码`vite.config.js => base: '/platform'`一同变动
  static_uri: "/platform"
  # 受信任的代理服务,获取客户端真实IP地址
  proxies:
    - "10.0.0.1"
  # 文件上传大小限制
  upload:
    # Size limited
    max: 8
  # 客户端访问频率限制
  rate:
    # 白名单
    whitelist:
      - "::1"
      - "127.0.0.1"
  log:
    # 日志白名单
    whitelist:
      - "/metrics"
# 数据库
gorm:
  mysql:
    host: "127.0.0.1"
    port: 3306
    user: "cbctf"
    pwd: "password"
    db: "cbctf"
    mxopen: 100
    mxidle: 10
  log:
    # INFO WARNING ERROR SILENT
    level: "silent"
# Redis
redis:
  host: "127.0.0.1"
  port: 6379
  pwd: "password"
# K8s
k8s:
  # Kubeconfig path
  config: "./admin.conf"
  # Also as prefix of resources
  namespace: "cbctf"
  # Maybe your k8s nodes cidr
  # https://kubeovn.github.io/docs/stable/vpc/vpc/#_2
  external_network:
    cidr: 192.168.0.0/16
    gateway: 192.168.0.1
    interface: "eth0"
    exclude_ips:
      - "192.168.0.1"
      - "192.168.0.254"
  # tcpdump 镜像,用于抓取pod流量
  tcpdump: "nicolaka/netshoot:latest"
  frpc:
    # frpc 开关,关闭时,默认使用节点所在网络中的地址访问靶机
    on: false
    # frpc 镜像,用于映射靶机端口
    image: "snowdreamtech/frpc:latest"
    # 可配置多个,随机选取进行映射
    frps:
      - host: "example.com"
        port: "7000"
        token: "token"
        allowed_ports:
          - from: 10000
            to: 30000
            exclude:
              - 20000
          - from: 40000
            to: 60000
            exclude:
              - 50000
  # Nodes of k8s cluster, used for external service, will auto get from k8s when run `./CBCTF k8s init`
  nodes:
    - "192.168.0.1"
  # 附件生成器启动数量倍率,每道题目将启动 节点数 * 倍率 个Pod使用
  generator_worker: 2
# NFS,将自动被挂载进Pod作为文件传输,同时须手动挂载至服务所在${path}路径
nfs:
  server: 127.0.0.1
  # Accessible path (RW) in NFS server
  path: /mnt/data
  # Gi, Mi
  storage: 10Gi
# 邮件激活服务,可配置多个SMTP服务器,随机选取进行发送
email:
  senders:
    - addr: "noreply@example.com"
      pwd: "password"
      host: "smtp.example.com"
      port: 25

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇