概述
一个运行在 k3s master 节点上的通用部署脚本,支持多项目、多子应用的自动构建镜像和部署。
核心特性
- 单脚本参数驱动,支持
-p/--project、-a/--app、-t/--tag 等参数
- 自动识别项目类型(java/node/static/go/python)
- 使用 docker buildx 构建 multi-arch 镜像(linux/amd64, linux/arm64)
- 动态生成 K8s Deployment + Service YAML
- 推送到本地 Zot Registry(192.168.2.40:30500)
- 部署到 k3s 集群
使用方式
1 2 3
| ./deploy.sh -p text-reader -a backend -t v1.0.0 ./deploy.sh -p sample-app -a app -t latest ./deploy.sh -p text-reader -a admin-frontend -t v1.0.0 --port 80 --replicas 1
|
架构模块
- 参数解析 - 命令行参数校验
- 项目探测 - 识别技术栈、构建方式
- 镜像构建 - docker buildx multi-arch
- K8s配置生成 - 动态生成 Deployment + Service
- 部署执行 - kubectl apply
- 状态检查 - 验证 pod 运行状态
支持的项目类型
| 类型 |
构建方式 |
Dockerfile基础 |
| java |
Maven/Gradle |
eclipse-temurin:17-jre |
| node |
npm/pnpm/yarn + Vite |
node:20-alpine → nginx:alpine |
| static |
无 |
nginx:alpine |
| go |
go build |
alpine |
| python |
pip |
python:3.11-slim |
K8s 配置生成规则
- Deployment: 根据类型生成容器配置、资源限制、副本数
- Service: NodePort 模式(端口范围 30000-32767)
- 支持 --node-selector 指定调度节点
- 支持 --env-file 注入环境变量
镜像仓库
- 地址: 192.168.2.40:30500
- 命名: {registry}/{project}-{app}:{tag}