当前位置: 首页 > article >正文

智云-一个抓取web流量的轻量级蜜罐-k8s快速搭建教程

智云-一个抓取web流量的轻量级蜜罐-k8s快速搭建教程

github地址
https://github.com/xiaoxiaoranxxx/POT-ZHIYUN

k8s搭建教程

首先下载代码文件

git clone https://github.com/xiaoxiaoranxxx/POT-ZHIYUN.git
cd POT-ZHIYUN

编译镜像

代码相关文件在github
https://github.com/xiaoxiaoranxxx/POT-ZHIYUN

docker build -t install/pot-main:v1 .

在这里插入图片描述

创建命名空间和configmap

kubectl create -f pot-mysql-init.yaml

# 查看创建情况
kubectl get configmaps -n pot-zhiyun

在这里插入图片描述

创建pv,pvc,mysql

kubectl create -f pot-mysql.yaml

在这里插入图片描述

查看mysql容器中的init.sql是否成功初始化

kubectl logs -n pot-zhiyun pot-mysql-0

在这里插入图片描述

创建pv,pvc,web

kubectl create -f pot-web-deployment.yaml

在这里插入图片描述

确认正常安装

kubectl get pods -n pot-zhiyun

pot-zhiyun空间下所有pod都为Running状态

在这里插入图片描述

kubectl get svc -n pot-zhiyun

查看svc的状态,pot-web 的NodePort出口端口为31394,因此访问http://127.0.0.1:31394/为200说明搭建成功

在这里插入图片描述

设计思路

mysql

mysql为StatefulSet类型,单数据库来存储

通过configMap来初始化数据库文件

通过pv卷来实现持久化存储,默认分配大小为10G

创建一个services,可通过pot-mysql来获取主机名

web

web为Deployment类型,可生成多个pod来实现负载

通过pv卷来实现runtime目录共享,达到多个pod数据同步问题

pv卷默认分配大小为1G

创建一个services,可通过Local来获取真实IP地址

NodePort会对外映射一个端口

面对多个扫描器同时扫描可达到负载效果,可以在内网多个节点配置蜜罐来达到内网多节点蜜罐

在这里插入图片描述

相关配置文件

pot-mysql-init.yaml

apiVersion: v1
kind: Namespace
metadata:
  name: pot-zhiyun
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: mysql-initdb-config
  namespace: pot-zhiyun
data:
  init.sql: |
    SET NAMES utf8mb4;
    SET FOREIGN_KEY_CHECKS = 0;
...

pot-mysql.yaml

apiVersion: v1
kind: PersistentVolume
metadata:
  name: mysql-pv
  namespace: pot-zhiyun
spec:
  capacity:
    storage: 10Gi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: standard-pot-mysql
  hostPath: 
    path: /mnt/data/pot-mysql
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysql-data-pot-mysql
  namespace: pot-zhiyun
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
  storageClassName: standard-pot-mysql
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: pot-mysql
  namespace: pot-zhiyun
spec:
  serviceName: "pot-mysql"
  replicas: 1
  selector:
    matchLabels:
      app: pot-mysql
  template:
    metadata:
      labels:
        app: pot-mysql
    spec:
      volumes:
      - name: init-scripts
        configMap:
          name: mysql-initdb-config
      containers:
      - name: pot-mysql
        image: mysql:8.0.22
        env:
        - name: MYSQL_DATABASE
          value: pot_admin
        - name: MYSQL_USER
          value: root
        - name: MYSQL_ROOT_PASSWORD
          value: pot_admin@123
        ports:
        - containerPort: 3306
        volumeMounts:
        - name: mysql-data-pot
          mountPath: /var/lib/mysql
        - name: init-scripts
          mountPath: /docker-entrypoint-initdb.d
  volumeClaimTemplates:
  - metadata:
      name: mysql-data-pot
    spec:
      accessModes: ["ReadWriteOnce"]
      resources:
        requests:
          storage: 10Gi
---
apiVersion: v1
kind: Service
metadata:
  name: pot-mysql
  namespace: pot-zhiyun
spec:
  ports:
    - port: 3306
      targetPort: 3306
  selector:
    app: pot-mysql

pot-web-deployment.yaml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysql-data-pot-web
  namespace: pot-zhiyun
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
  storageClassName: standard-pot-web
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pot-web-pv
spec:
  capacity:
    storage: 1Gi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: standard-pot-web
  hostPath:
    path: /mnt/data/pot-web
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: pot-web
  namespace: pot-zhiyun
spec:
  replicas: 5
  selector:
    matchLabels:
      app: pot-web
  template:
    metadata:
      labels:
        app: pot-web
    spec:
      initContainers:
        - name: init-permissions
          image: busybox
          command: ["sh", "-c", "chmod -R 777 /var/www/html/runtime/"]
          volumeMounts:
            - name: mysql-data-pot
              mountPath: /var/www/html/runtime/
      containers:
        - name: pot-web
          image: install/pot-main:v1
          ports:
            - containerPort: 80
          volumeMounts:
            - name: mysql-data-pot
              mountPath: /var/www/html/runtime/
      volumes:
        - name: mysql-data-pot
          persistentVolumeClaim:
            claimName: mysql-data-pot-web
---
apiVersion: v1
kind: Service
metadata:
  name: pot-web
  namespace: pot-zhiyun
spec:
  type: NodePort
  externalTrafficPolicy: Local
  ports:
    - port: 80
      targetPort: 80
  selector:
    app: pot-web

http://www.kler.cn/a/525875.html

相关文章:

  • 国产碳化硅(SiC)MOSFET模块在电镀电源中全面取代进口IGBT模块
  • 【Rust自学】15.0. 智能指针(序):什么是智能指针及Rust智能指针的特性
  • 实验七 带函数查询和综合查询(2)
  • 图漾相机——C++语言属性设置
  • 乌兰巴托的夜---音乐里的故事
  • SVG 矩形:深入理解与实际应用
  • 基于 WEB 开发的在线考试系统设计与实现
  • [创业之路-269]:《创业讨论会》- 系统之韵:从麻雀到5G系统的共通性探索
  • 蓝桥杯之c++入门(一)【C++入门】
  • OpenEuler学习笔记(十六):搭建postgresql高可用数据库环境
  • 什么是线性化PDF?
  • Effective Objective-C 2.0 读书笔记—— 消息转发
  • 登录管理——认证方案(JWT、拦截器、ThreadLocal)
  • 代码随想录算法训练营第三十九天-动态规划-337. 打家劫舍 III
  • 批量解密,再也没有任何限制了
  • 【逻辑学导论】1.4论证与说明
  • AI领域的技术评估与地缘政治困境 ——评析Anthropic CEO关于DeepSeek的矛盾论述
  • 【测试】开发模型和测试模型
  • C++,STL 头文件组织:结构、分类与最佳实践
  • 【BUUCTF】[GXYCTF2019]BabysqliV3.01
  • 【MySQL】我在广州学Mysql 系列——MySQL用户管理示例
  • 级数论存在重大错误的原因:中学数学对无穷数列的认识存在重大错误
  • android获取EditText内容,TextWatcher按条件触发
  • 图论——floyd算法
  • 【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.23 数据工厂:高级初始化模式解析
  • 【letta】The Letta Platform LETTA平台