3分钟搞定Helm upgrade实战:从Docker到K8s的无缝部署

3分钟搞定Helm upgrade实战:从Docker到K8s的无缝部署

【免费下载链接】dockerfiles Various Dockerfiles I use on the desktop and on servers. 【免费下载链接】dockerfiles 项目地址: https://gitcode.com/gh_mirrors/do/dockerfiles

你是否遇到过Kubernetes应用升级时的配置冲突?还在手动处理Chart依赖关系?本文将通过gh_mirrors/do/dockerfiles项目中的实战案例,带你掌握Helm upgrade的核心技巧,实现应用的平滑升级。读完本文你将学会:

  • 容器化应用的Helm Chart封装方法
  • 零停机升级的3个关键参数设置
  • 版本回滚的应急处理流程
  • 多环境配置管理最佳实践

项目环境准备

首先确保已克隆项目仓库:

git clone https://gitcode.com/gh_mirrors/do/dockerfiles
cd dockerfiles

该项目包含100+常用服务的Dockerfile定义,如nginx-extras/、postgres/等,我们将以nginx-extras/作为示例应用,演示从Docker镜像到Helm部署的完整流程。

Helm Chart基础结构

在项目根目录创建标准Helm Chart结构:

helm create nginx-chart
cd nginx-chart

核心文件说明:

  • Chart.yaml - 元数据定义
  • values.yaml - 默认配置值
  • templates/deployment.yaml - 部署模板
  • templates/service.yaml - 服务定义

容器镜像优化

使用项目中的nginx-extras/Dockerfile构建自定义镜像:

FROM nginx:alpine
COPY nginx.conf /etc/nginx/conf.d/default.conf
RUN apk add --no-cache openssl

构建并推送镜像:

docker build -t my-nginx:1.0 -f nginx-extras/Dockerfile .
docker tag my-nginx:1.0 registry.example.com/my-nginx:1.0
docker push registry.example.com/my-nginx:1.0

关键升级参数配置

修改values.yaml设置升级策略:

image:
  repository: registry.example.com/my-nginx
  tag: 1.0
  pullPolicy: Always

strategy:
  type: RollingUpdate
  rollingUpdate:
    maxSurge: 1        # 允许超出期望副本数的最大数量
    maxUnavailable: 0  # 升级过程中不可用的最大Pod数量

执行升级操作

基础升级命令

helm upgrade --install nginx-release ./nginx-chart \
  --set image.tag=1.1 \
  --namespace default \
  --timeout 5m

带参数文件升级

helm upgrade nginx-release ./nginx-chart \
  -f production-values.yaml \
  --atomic  # 失败时自动回滚

版本回滚机制

当升级出现问题时,使用以下命令回滚到上一版本:

helm rollback nginx-release 0 --namespace default

查看历史版本:

helm history nginx-release --namespace default

多环境配置管理

推荐使用环境特定配置文件:

  • values-dev.yaml - 开发环境
  • values-test.yaml - 测试环境
  • values-prod.yaml - 生产环境

部署测试环境:

helm upgrade --install nginx-release ./nginx-chart \
  -f values-test.yaml \
  --namespace test

常见问题解决方案

1. 配置冲突

helm upgrade --install nginx-release ./nginx-chart \
  --reset-values  # 忽略旧版本 values,使用新值

2. 依赖更新

helm dependency update ./nginx-chart  # 更新Chart依赖

3. 资源限制

在values.yaml中设置:

resources:
  requests:
    cpu: 100m
    memory: 128Mi
  limits:
    cpu: 500m
    memory: 256Mi

实战案例总结

通过本文的实战操作,我们基于gh_mirrors/do/dockerfiles项目中的Dockerfile,成功实现了应用的容器化封装与Helm升级部署。关键要点包括:

  1. 使用--atomic参数确保升级的原子性
  2. 合理设置maxSurgemaxUnavailable实现零停机
  3. 采用多values文件管理环境差异
  4. 熟练掌握回滚命令应对突发问题

完整的操作脚本可参考项目中的scripts/helm-upgrade.sh文件,更多高级用法请查阅官方文档docs/helm-guide.md。

下期预告:使用Helmfile管理多Chart部署,敬请关注!

如果本文对你有帮助,请点赞+收藏+关注三连,你的支持是我持续创作的动力!

【免费下载链接】dockerfiles Various Dockerfiles I use on the desktop and on servers. 【免费下载链接】dockerfiles 项目地址: https://gitcode.com/gh_mirrors/do/dockerfiles

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

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

抵扣说明:

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

余额充值