fastdp-ops 运维部署工具

最近写了一个小工具,fastdp-ops

在运维自动化领域,“跨系统兼容、快速交付、声明式编排” 是永恒的痛点与追求。尤其是 Kubernetes 集群部署,传统方式要么依赖重型发行版工具(如kubeadm),要么需要手写大量 Shell 脚本适配多系统,不仅耗时,还极易因环境差异导致部署失败。

今天给大家推荐一款自研的轻量级运维编排工具 ——fastdp-ops,它能5 分钟内完成多系统 Kubernetes 二进制集群部署,且支持 “声明式执行”(重复运行不影响结果);更重要的是,它不止能部署 K8s,还能通过编排 YAML 灵活实现各类运维场景的自动化。

一、fastdp-ops:类 Ansible 的轻量级运维利器

fastdp-ops 是一款C/S 架构(服务端 + 代理端) 的运维编排工具,核心设计参考了 Ansible 的 “模块化 + 声明式” 理念,同时通过 gRPC 实现更高效的节点通信。

它的核心能力包括:

  • 多主机批量管理:支持主机注册、在线状态监控、资源信息(CPU / 内存 / 磁盘)统计。
  • 丰富运维模块:内置shell(命令执行)、copy(文件传输)、package(包管理)、template(模板渲染)等模块,覆盖日常运维核心场景。
  • 声明式任务编排:通过 YAML 定义部署流程,支持 “幂等执行”(重复运行时,工具自动判断是否需要操作,避免重复工作)。
  • 跨系统兼容:已验证支持麒麟、Ubuntu、Rocky Linux、RHEL、CentOS等主流 Linux 发行版。

二、实战:5 分钟部署多系统 K8s 集群

1. 多系统环境验证

server和agent部署好之后先看测试环境的节点状态(通过fastdp-ops host -l命令验证):

(图中 5 台节点分别运行麒麟、Ubuntu、Rocky Linux、RHEL、CentOS 系统,全部 “在线” 且资源正常)

2. 声明式编排:用 YAML 定义 K8s 部署流程

fastdp-ops 通过YAML 文件“声明” 部署步骤(而非 “命令式” 逐行执行)。以下是 K8s 部署playbook.yaml的示例:

name: 部署k8s集群
version: v1.32.0
config_file: config.yaml
stages:
  - stage: 初始化环境
    role: k8s_cluster
    tasks: init

  - stage: 安装Docker
    role: k8s_cluster
    tasks: docker

  - stage: 搭建容器镜像仓库
    role: master0
    tasks: registry

  - stage: 生成证书
    role: master0
    tasks: cfssl

  - stage: 安装etcd集群
    role: etcd
    tasks: etcd

  - stage: 安装master节点
    role: master
    tasks: master

  - stage: 安装node节点
    role: node
    tasks: node

  - stage: 安装集群插件
    role: master0
    tasks: cluster-init

config.yaml的内容,部署时只需修改机器ip即可

# hostname主机名不能重复,不能为空,不能为localhost
# master0角色为当前部署包所在机器,可以不是master
# etcd和master必须为奇数个
# 配置示例:
machineRole:
  k8s_cluster:
    - 192.168.1.101
    - 192.168.1.111
    - 192.168.1.121
    - 192.168.1.131
    - 192.168.1.141
  master0:
    - 192.168.1.101
  etcd:
    - 192.168.1.101
    - 192.168.1.111
    - 192.168.1.121
  master:
    - 192.168.1.101
    - 192.168.1.111
    - 192.168.1.121
  node:
    - 192.168.1.101
    - 192.168.1.111
    - 192.168.1.121
    - 192.168.1.131
    - 192.168.1.141

# 变量名必须小写
main_data_dir: /data
etcd_data: /data/etcd
kubelet_data: /data/kubelet
docker_data: /data/docker
docker_registry_data: /data/registry


repository_port: 9999
repository_dir: /data/cluster_deploy/repo
base_pkg_dir: /data/cluster_deploy/base
image_dir: /data/cluster_deploy/images

repo_pkg: repo.tar.gz
ubuntu_nginx_pkg: nginx-custom-1.28.0-amd64.tar.gz
nginx_rpm_pkg: nginx-custom-rpm.tar.gz

service_cidr: 10.96.0.0/16
pod_cidr: 10.244.0.0/16
# 为service网络的第10个ip值
clusterdns: 10.96.0.10

calico_ipipmode: Never
calico_vxlanmode: Always

​

这种 **“声明式”的优势是:你只需描述 “最终要达到的状态”,工具会自动判断 “是否需要执行操作”(比如文件已存在且内容一致时,会直接跳过复制 / 渲染步骤),因此支持重复执行且安全可靠 **。

3. 一键执行:5 分钟完成集群部署

只需一条命令,即可启动整个部署流程:

./fastdp-ops play -f materials/k8s/playbook.yaml

实际测试中,5 台不同系统的节点从 “基础环境初始化” 到 “K8s 核心组件(apiserver、controller-manager、kubelet 等)全部就绪”,总耗时不超过 5 分钟。部署完成后,通过kubectl get node可看到所有节点处于Ready状态,集群运行正常。

三、不止于 K8s:灵活的编排扩展性

fastdp-ops 的核心价值,远不止 “快速部署 K8s”,更在于 **“自定义编排能力”**:

1. 多场景覆盖

除了 K8s 集群部署,还能通过 YAML 编排以下场景:

  • 中间件部署:如 MySQL、Redis、Nginx 的自动化安装与配置。
  • 应用发布:将自研应用的二进制包、配置文件分发到多节点并启动。
  • 系统基线初始化:统一多系统的用户、防火墙、时区等基础配置。

2. 模块可扩展

工具内置shell(命令执行)、copy(文件传输)、package(包管理)、repo(仓库管理)等模块;若内置模块不满足需求,还支持自定义 Go 模块扩展(只需实现Module接口并注册即可)。

3. C/S 架构优势

  • 服务端:统一管理所有 Agent 节点,自动生成 Agent 安装指令(含 gRPC 连接配置)。
  • Agent 端:一键脚本安装,自动注册到服务端,定期上报在线状态与资源信息。

fastdp-ops 采用 gRPC + HTTP 双协议通信,默认端口可通过配置文件(config.toml)修改:

  • gRPC 通信端口(服务端与 Agent 通信):默认 9000,用于服务端向 Agent 下发任务、Agent 上报节点状态与执行结果。
  • Web 服务端口(服务端提供资源下载):默认 8080,例如 Agent 一键安装脚本的下载地址为 http://服务端IP:8080/static/fastdp-agent.sh
  • Agent 监听端口:Agent 启动后默认监听 8700 端口,用于接收服务端的 gRPC 指令。

四、快速上手指南

1. 部署方式

预编译包(推荐)

下载对应系统的预编译包(以 Linux 为例):

# 不含私有化部署k8s包版本
curl -fSL https://gitee.com/zhao-pengfei2/fastdp-ops/releases/download/fastdp-ops-v1-linux-amd64/fastdp-ops-v1-amd64.tar.gz -o fastdp-ops.tar.gz

# 此包中二进制文件为麒麟v10系统中编译,由于sqlite使用cgo实现,所以依赖系统glibc版本,实测麒麟v10和ubuntu22.04可以正常运行,centos版本过低,需要重新编译才可使用

# 解压文件
tar -zxf fastdp-ops.tar.gz
cd fastdp-ops

# 创建配置目录并移动配置文件
sudo mkdir -p /etc/fastdp-ops
sudo mv config.toml /etc/fastdp-ops/

编排k8s的yaml脚本时按照私有化环境设计(即无法访问公网),所以部署包稍大(750MB左右),分块存在git上

注:如果需要部署的系统小版本有差异可能会存在rpm包依赖关系等问题,手动安装解决一下即可

# 循环下载分块文件
for i in {00..07}; do wget "https://gitee.com/zhao-pengfei2/fastdp-ops/releases/download/fastdp-ops-v1-linux-amd64/fastdp-ops-k8s-pkg.tar.gz$i";done
# 合并
cat fastdp-ops-k8s-pkg.tar.gz{00..07} > fastdp-ops-k8s-pkg.tar.gz
# 解压
tar -zxf fastdp-ops-k8s-pkg.tar.gz&& cd fastdp-ops

# 创建配置目录并移动配置文件
sudo mkdir -p /etc/fastdp-ops
sudo mv config.toml /etc/fastdp-ops/
源码编译

需提前安装 Go 1.18+,然后:

git clone https://gitee.com/zhao-pengfei2/fastdp-ops.git
cd fastdp-ops
# 编译服务端
go build -o fastdp-ops ./cmd/server
# (可选)编译Agent
go build -o fastdp-agent ./cmd/agent/main

2. 核心流程

  1. 启动服务端:指定本机 IP(需与 Agent 通信)

    ./fastdp-ops run --ip=192.168.1.100  # 替换为实际IP
    
     

    启动后,服务端会输出Agent 一键安装命令(含连接信息)。

  2. 安装 Agent:在待管理节点执行服务端输出的命令(需 root 权限)

    curl -fSL http://192.168.1.100:8080/static/fastdp-agent.sh | bash -x -s 192.168.1.100 8080
    
     

    Agent 会自动注册到服务端。

  3. 执行编排任务:通过 YAML 部署应用(如 K8s)

    ./fastdp-ops play -f materials/k8s/playbook.yaml
    

五、总结

fastdp-ops 解决了 **“多系统环境下复杂运维流程的自动化与标准化”** 难题:

  • 对 K8s 场景:实现 “5 分钟多系统二进制集群部署”,声明式编排让重复部署更可靠。
  • 对通用运维:提供 “模块化 + 编排化” 能力,成为可覆盖多场景的轻量级运维工具。

如果你正被 “多系统环境适配”“重复部署可靠性”“运维流程标准化” 等问题困扰,不妨试试这款工具~

https://gitee.com/zhao-pengfei2/fastdp-ops/

(工具源码及预编译包可从Gitee 仓库获取,欢迎体验和反馈~)

关于工具fastdp-ops 为个人独立开发的工具,目前功能虽能覆盖核心运维场景,但可能存在细节不完善或适配场景有限的情况。如果你在使用中发现问题、有功能建议,或是希望补充更多系统 / 场景的支持,欢迎通过仓库 Issues 反馈交流,期待和大家一起让工具更完善~」

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值