You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kubernetes Namespace内仅更新单个服务的方案及Helm配置咨询

单服务K8s部署更新方案解答

完全支持仅更新Namespace内的单个服务,无需清空全量重部署,这是K8s+Helm部署体系的原生标准能力

前置适配要求

  • 建议30个微服务拆分为独立Helm Release管理,或在同一份Helm Chart中为每个服务配置独立的条件渲染开关,两种模式均可实现单服务无影响更新
  • 目标Namespace已配置ECR镜像拉取Secret,可正常拉取私有镜像

方案1:每个服务对应独立Helm Release(微服务场景最优方案)

该模式下每个服务维护独立的Chart配置,更新时仅操作对应服务的Release,不会触发其他服务的任何变更。

单个SpringBoot服务的Helm Chart目录结构

service-order/
├── Chart.yaml
├── values.yaml
└── templates/
    ├── deployment.yaml
    ├── service.yaml
    └── ingress.yaml(按需配置)

核心配置示例

  1. Chart.yaml 基础信息配置
apiVersion: v2
name: service-order
description: SpringBoot 订单服务Helm Chart
version: 1.0.0
appVersion: 2.3.1
  1. values.yaml 可配置参数示例(适配ECR镜像)
replicaCount: 3
image:
  repository: <AWS账号ID>.dkr.ecr.<AWS区域>.amazonaws.com/service-order
  pullPolicy: IfNotPresent
  tag: "v1.0.0" # 版本更新时替换为新镜像Tag即可
service:
  type: ClusterIP
  port: 8080
resources:
  limits:
    cpu: 1000m
    memory: 2Gi
  requests:
    cpu: 500m
    memory: 1Gi
  1. templates/deployment.yaml 核心模板片段(适配SpringBoot健康检查)
apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{ .Release.Name }}-deployment
  labels:
    app: {{ .Release.Name }}
spec:
  replicas: {{ .Values.replicaCount }}
  selector:
    matchLabels:
      app: {{ .Release.Name }}
  template:
    metadata:
      labels:
        app: {{ .Release.Name }}
    spec:
      containers:
        - name: {{ .Release.Name }}
          image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
          imagePullPolicy: {{ .Values.image.pullPolicy }}
          ports:
            - name: http
              containerPort: 8080
              protocol: TCP
          livenessProbe:
            httpGet:
              path: /actuator/health
              port: http
            initialDelaySeconds: 60
            periodSeconds: 10

单服务更新执行命令

helm upgrade service-order ./service-order \
  --namespace <目标Namespace名称> \
  --set image.tag=<新构建的镜像版本Tag>

方案2:所有服务同属一份Helm Chart的适配方案

如果当前30个服务统一用一份Helm Chart管理,可通过条件渲染开关实现单服务更新。

核心配置调整

在全局values.yaml中为每个服务增加部署开关:

global:
  namespace: <目标Namespace名称>
# 各服务独立配置
service-order:
  enabled: false
  image:
    tag: "v1.0.0"
service-user:
  enabled: false
  image:
    tag: "v1.2.1"
# 剩余28个服务同理配置

在每个服务的资源模板开头增加渲染判断:

{{- if .Values.service-order.enabled }}
# 此处放置该服务的Deployment、Service等资源配置
{{- end }}

单服务更新执行命令

helm upgrade microservices ./all-in-one-chart \
  --namespace <目标Namespace名称> \
  --set service-order.enabled=true \
  --set service-order.image.tag=<新镜像Tag>

提示:该模式建议部署时增加--atomic参数避免误操作覆盖其他服务配置,长期使用优先选择独立Release方案。

内容的提问来源于stack exchange,提问作者karthi0702

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 21:24:03