Gorush 项目在 Kubernetes 中的部署配置详解
2025-07-07 01:34:12作者:齐添朝
前言
Gorush 是一个轻量级的推送通知服务器,支持多种推送服务。本文将深入分析 Gorush 在 Kubernetes 集群中的部署配置,帮助开发者理解如何高效地在生产环境中运行 Gorush 服务。
部署配置解析
基础配置
apiVersion: apps/v1
kind: Deployment
metadata:
name: gorush
namespace: gorush
这部分定义了 Kubernetes 部署的基本信息:
- 使用
apps/v1
API 版本创建 Deployment 资源 - 资源名称为
gorush
- 部署在独立的
gorush
命名空间中,实现资源隔离
副本与选择器
spec:
replicas: 2
selector:
matchLabels:
app: gorush
tier: frontend
关键配置点:
replicas: 2
表示创建 2 个 Pod 副本,提供高可用性- 选择器定义了如何识别 Deployment 管理的 Pod,这里使用
app=gorush
和tier=frontend
标签
Pod 模板
template:
metadata:
labels:
app: gorush
tier: frontend
spec:
containers:
- image: appleboy/gorush:1.18.4
name: gorush
Pod 模板配置:
- 为 Pod 设置与选择器匹配的标签
- 使用特定版本
1.18.4
的 Gorush 镜像,确保版本一致性 - 容器命名为
gorush
镜像与资源策略
imagePullPolicy: Always
ports:
- containerPort: 8088
resources:
requests:
cpu: "250m"
memory: "256Mi"
limits:
cpu: "500m"
memory: "512Mi"
重要配置说明:
imagePullPolicy: Always
确保每次启动都拉取最新镜像- 暴露容器端口
8088
,这是 Gorush 的默认服务端口 - 资源请求和限制:
- 请求 250 毫核 CPU 和 256MB 内存
- 限制 500 毫核 CPU 和 512MB 内存
- 这种配置适合中小规模推送场景
健康检查
livenessProbe:
httpGet:
path: /healthz
port: 8000
initialDelaySeconds: 3
periodSeconds: 3
健康检查机制:
- 通过 HTTP GET 请求
/healthz
端点检查服务健康状态 - 使用端口
8000
(与后面环境变量配置一致) - 容器启动后 3 秒开始检查,每 3 秒检查一次
环境变量配置
env:
- name: GORUSH_STAT_ENGINE
valueFrom:
configMapKeyRef:
name: gorush-config
key: stat.engine
- name: GORUSH_STAT_REDIS_ADDR
valueFrom:
configMapKeyRef:
name: gorush-config
key: stat.redis.host
- name: GORUSH_CORE_PORT
value: "8000"
环境变量详解:
GORUSH_STAT_ENGINE
和GORUSH_STAT_REDIS_ADDR
从名为gorush-config
的 ConfigMap 中获取- 配置统计存储引擎和 Redis 地址
- 这种设计将配置与部署分离,便于管理
GORUSH_CORE_PORT
直接设置为8000
,与服务端口一致
生产环境建议
- 版本控制:建议固定镜像版本,避免使用
latest
标签 - 资源限制:根据实际推送量调整资源请求和限制
- 高可用:可以增加副本数并配合 Horizontal Pod Autoscaler
- 配置管理:将更多配置项移入 ConfigMap 或 Secret
- 网络策略:考虑添加 NetworkPolicy 限制访问
总结
这份 Kubernetes 部署文件展示了 Gorush 服务在生产环境中的典型配置方式,涵盖了副本管理、资源分配、健康检查和配置分离等关键方面。理解这些配置有助于开发者根据实际需求调整部署策略,构建稳定高效的推送通知服务。