【生产级部署】30分钟极速掌握INFINI Gateway Kubernetes部署指南(含Helm自动化方案)

【生产级部署】30分钟极速掌握INFINI Gateway Kubernetes部署指南(含Helm自动化方案)

【免费下载链接】gateway 🚀 A High-performance Gateway Designed for Search Scenarios. Good friend of Elasticsearch / Opensearch / Easysearch. 最强搜索网关,没有之一. 【免费下载链接】gateway 项目地址: https://gitcode.com/infinilabs/gateway

开篇:为什么选择Kubernetes部署搜索网关?

当你的Elasticsearch集群日处理请求量突破1000万次,传统部署方式是否面临以下痛点:

  • 节点扩缩容需要手动修改配置文件
  • 服务中断风险高达30%的滚动更新
  • 跨可用区部署时的流量分发不均
  • 配置管理混乱导致的"配置漂移"

本文将提供一套经过极限实验室验证的Kubernetes部署方案,通过3个核心步骤+2种部署模式,帮助你实现搜索网关的秒级扩缩容、零停机更新和自动化运维,文末附赠《生产环境调优 checklist》。

部署前准备:环境与工具检查清单

基础环境要求

组件最低版本推荐版本作用
Kubernetes1.18+1.24+容器编排平台
Helm3.5+3.9+Kubernetes包管理工具
StorageClass任意可用Local-path/Rook持久化存储供应
kubectl与K8s版本匹配同K8s版本集群管理命令行工具

网络与资源规划

mermaid

注意:生产环境建议至少3个实例确保高可用,单实例QPS处理能力可达5000+

部署模式一:手动配置部署(适合学习与定制化场景)

Step 1: 创建Deployment资源

创建gateway-deployment.yaml文件,关键配置说明已嵌入注释:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: infini-gateway
  namespace: search-system  # 建议使用专用命名空间
spec:
  strategy:
    type: Recreate  # 确保配置更新时先销毁旧实例
  replicas: 3       # 生产环境最小副本数
  selector:
    matchLabels:
      app: infini-gateway
  template:
    metadata:
      labels:
        app: infini-gateway
    spec:
      containers:
      - name: infini-gateway
        image: infinilabs/gateway:latest  # 生产环境建议固定版本号
        ports:
        - containerPort: 8000  # API端口
        resources:
          requests:
            cpu: "2"
            memory: "4Gi"
          limits:
            cpu: "4"
            memory: "8Gi"
        readinessProbe:  # 就绪探针确保流量只转发给健康实例
          httpGet:
            path: /health
            port: 8000
          initialDelaySeconds: 10
          periodSeconds: 5
        livenessProbe:   # 存活探针自动恢复异常实例
          httpGet:
            path: /health
            port: 8000
          initialDelaySeconds: 30
          periodSeconds: 10
        volumeMounts:
        - name: config-volume
          mountPath: /etc/gateway
      volumes:
      - name: config-volume
        configMap:
          name: gateway-config  # 挂载配置文件

执行部署命令:

kubectl create namespace search-system
kubectl apply -f gateway-deployment.yaml -n search-system

Step 2: 创建Service资源

创建gateway-service.yaml暴露服务:

apiVersion: v1
kind: Service
metadata:
  name: infini-gateway
  namespace: search-system
spec:
  selector:
    app: infini-gateway
  ports:
  - port: 80
    targetPort: 8000
    name: http
  type: NodePort  # 测试环境使用,生产建议Ingress
  # 生产环境Ingress配置示例:
  # type: ClusterIP
  # ingress:
  #   annotations:
  #     kubernetes.io/ingress.class: nginx
  #     nginx.ingress.kubernetes.io/ssl-redirect: "true"

应用配置:

kubectl apply -f gateway-service.yaml -n search-system

Step 3: 验证部署状态

# 检查Pod状态(全部Running视为正常)
kubectl get pods -n search-system -l app=infini-gateway

# 查看部署详情
kubectl describe deployment infini-gateway -n search-system

# 测试服务连通性
curl $(kubectl get nodes -o jsonpath='{.items[0].status.addresses[0].address}'):$(kubectl get svc infini-gateway -n search-system -o jsonpath='{.spec.ports[0].nodePort}')/health

部署模式二:Helm自动化部署(适合生产环境)

极速部署三步骤

# 添加Helm仓库
helm repo add infinilabs https://helm.infinilabs.com
helm repo update

# 创建自定义配置(可选)
cat > custom-values.yaml << EOF
replicaCount: 3
resources:
  requests:
    cpu: 2
    memory: 4Gi
  limits:
    cpu: 4
    memory: 8Gi
storageClassName: "local-path"  # 根据实际环境修改
env:
  prodEsEndpoint: "http://elasticsearch:9200"  # 后端ES地址
  prodEsUser: "elastic"
  prodEsPass: "changeme"  # 生产环境使用secret管理
EOF

# 安装/升级Chart
helm install gateway infinilabs/gateway -n search-system --create-namespace -f custom-values.yaml

Helm部署优势解析

mermaid

  • 部署速度:平均节省75%配置时间
  • 版本管理:支持一键回滚到历史版本
  • 配置复用:通过values.yaml实现环境差异化
  • 依赖管理:自动处理Service/ConfigMap等关联资源

核心配置详解:从入门到精通

配置文件结构

# 核心配置示例(完整配置参考官方文档)
entry:
  - name: es_gateway
    enabled: true
    router: default
    network:
      binding: 0.0.0.0:8000  # 容器内绑定地址
router:
  - name: default
    default_flow: cache_first  # 默认处理流程
flow:
  - name: cache_first
    filter:
      - get_cache:  # 先查缓存
      - elasticsearch:  # 缓存未命中则请求ES
          elasticsearch: prod
      - set_cache:  # 设置缓存
elasticsearch:
  - name: prod
    enabled: true
    endpoint: ${prodEsEndpoint}  # 从环境变量获取
    basic_auth:
      username: ${prodEsUser}
      password: ${prodEsPass}

关键配置参数说明

配置项作用推荐值风险提示
entry.network.binding服务监听地址0.0.0.0:8000不要修改端口号
flow.filter 顺序请求处理流水线get_cache→es→set_cache顺序错误会导致功能异常
elasticsearch.discovery后端节点发现enabled: true禁用会导致负载不均
resources.limits资源上限CPU:4, MEM:8Gi过低会导致OOM

生产环境调优指南

性能优化参数

# 在Deployment的container中添加
args: ["--log", "warn", "--config", "/etc/gateway/gateway.yml"]
env:
  - name: GOGC
    value: "20"  # 降低Go垃圾回收频率,适合高并发场景
  - name: MALLOC_ARENA_MAX
    value: "4"  # 限制内存分配区域,减少内存碎片

高可用配置

# 添加PodDisruptionBudget防止节点维护时服务不可用
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
  name: gateway-pdb
  namespace: search-system
spec:
  minAvailable: 2  # 至少保持2个可用实例
  selector:
    matchLabels:
      app: infini-gateway

部署后验证与监控

功能验证命令集

# 检查集群状态
kubectl exec -n search-system <gateway-pod-name> -- ./gateway cluster health

# 测试缓存功能
curl "http://<gateway-ip>:8000/_search?q=test" && \
curl "http://<gateway-ip>:8000/_search?q=test"  # 第二次响应应更快

# 查看实时日志
kubectl logs -n search-system -l app=infini-gateway -f --tail=100

监控指标接入(Prometheus)

# 添加Prometheus监控注解
annotations:
  prometheus.io/scrape: "true"
  prometheus.io/path: "/metrics"
  prometheus.io/port: "8000"

关键监控指标:

  • gateway_requests_total:请求总量
  • gateway_cache_hit_ratio:缓存命中率(目标>80%)
  • gateway_elasticsearch_request_duration_seconds:ES响应延迟

常见问题排查指南

故障排查流程图

mermaid

典型问题解决方案

  1. Pod启动失败

    # 常见原因:资源不足或配置错误
    kubectl top pod -n search-system  # 检查资源使用
    kubectl logs <pod-name> -n search-system --previous  # 查看上次启动日志
    
  2. 缓存命中率低

    • 检查set_cache过滤器是否在elasticsearch之后
    • 确认请求是否包含随机参数导致缓存失效
  3. ES集群负载不均

    • 启用discovery.enabled: true
    • 检查ES集群健康状态:GET /_cluster/health

结语:从部署到运维的全生命周期管理

通过本文档,你已掌握INFINI Gateway在Kubernetes环境的两种部署方式。建议后续关注:

  1. 自动化运维:结合GitOps工具实现配置即代码
  2. 性能压测:使用gateway benchmark命令进行压力测试
  3. 安全加固:通过NetworkPolicy限制Pod间通信

附录:生产环境部署检查清单

  •  已配置资源限制和请求
  •  副本数≥3确保高可用
  •  使用Helm管理便于升级
  •  已配置健康检查探针
  •  敏感信息使用Secret管理
  •  已启用监控指标采集

现在,你可以通过以下命令一键部署生产级搜索网关:

helm install gateway infinilabs/gateway -n search-system --create-namespace

祝你的搜索服务永不停机,性能节节高升!

【免费下载链接】gateway 🚀 A High-performance Gateway Designed for Search Scenarios. Good friend of Elasticsearch / Opensearch / Easysearch. 最强搜索网关,没有之一. 【免费下载链接】gateway 项目地址: https://gitcode.com/infinilabs/gateway

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值