首页
/ Gorush 项目在 Kubernetes 中的部署配置详解

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=gorushtier=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_ENGINEGORUSH_STAT_REDIS_ADDR 从名为 gorush-config 的 ConfigMap 中获取
    • 配置统计存储引擎和 Redis 地址
    • 这种设计将配置与部署分离,便于管理
  • GORUSH_CORE_PORT 直接设置为 8000,与服务端口一致

生产环境建议

  1. 版本控制:建议固定镜像版本,避免使用 latest 标签
  2. 资源限制:根据实际推送量调整资源请求和限制
  3. 高可用:可以增加副本数并配合 Horizontal Pod Autoscaler
  4. 配置管理:将更多配置项移入 ConfigMap 或 Secret
  5. 网络策略:考虑添加 NetworkPolicy 限制访问

总结

这份 Kubernetes 部署文件展示了 Gorush 服务在生产环境中的典型配置方式,涵盖了副本管理、资源分配、健康检查和配置分离等关键方面。理解这些配置有助于开发者根据实际需求调整部署策略,构建稳定高效的推送通知服务。