通过 Helm 部署 Nginx 应用的完整标准化步骤

用一份 Helm Chart + 多份 values 文件,即可在任意命名空间中一键部署 Nginx,并通过不同域名区分环境。

这正是 Helm 的核心价值:标准化、参数化、可复用的应用交付。

✅ 一、创建 Helm Chart

创建名为 nginx-app 的 Helm Chart

复制代码
helm create nginx-app

进入目录并清理不需要的模板(可选)

复制代码
cd nginx-app
rm -f templates/httproute.yaml templates/gateway.yaml templates/hpa.yaml templates/serviceaccount.yaml

📌 新版 Helm 会生成 Gateway API 相关文件(如 httproute.yaml),若未使用 Gateway,请删除以避免报错。或者在values.yaml中加上:

复制代码
httpRoute:
  enabled: false

✅ 二、配置 values.yaml(基础模板)

编辑 nginx-app/values.yaml,定义通用配置:

复制代码
replicaCount: 2

image:
  repository: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx
  tag: "1.14.1-8.6"
  pullPolicy: IfNotPresent

service:
  type: ClusterIP
  port: 80
  targetPort: 80

ingress:
  enabled: true
  className: nginx
  hosts:
    - host: CHANGEME.nginx.local   # 后续按环境替换
      paths:
        - path: /
          pathType: Prefix

podAnnotations:
  prometheus.io/scrape: "true"
  prometheus.io/port: "80"

resources: {}

⚠️ 不要在此设置 namespace,命名空间由 --namespace 参数控制。

✅ 三、为不同环境创建 values 文件

复制代码
dev 环境
cp values.yaml dev-values.yaml
sed -i 's/CHANGEME/dev/g' dev-values.yaml

pre 环境
cp values.yaml pre-values.yaml
sed -i 's/CHANGEME/pre/g' pre-values.yaml

test 环境(或保留原 values.yaml 用于 test)
cp values.yaml test-values.yaml
sed -i 's/CHANGEME/test/g' test-values.yaml

结果:

复制代码
- dev-values.yaml → host: dev.nginx.local
- pre-values.yaml → host: pre.nginx.local
- test-values.yaml → host: test.nginx.local

✅ 四、部署到各环境

部署到 test

复制代码
helm install nginx-test ./nginx-app -f test-values.yaml --namespace test --create-namespace

部署到 dev

复制代码
helm install nginx-dev ./nginx-app -f dev-values.yaml --namespace dev --create-namespace

部署到 pre

复制代码
helm install nginx-pre ./nginx-app -f pre-values.yaml --namespace pre --create-namespace

✅ --create-namespace 自动创建命名空间(如果不存在)。

✅ 五、验证部署

查看资源

复制代码
kubectl get pods,svc,ingress -n test
kubectl get pods,svc,ingress -n dev
kubectl get pods,svc,ingress -n pre

查看 Helm release

复制代码
helm list -n test
helm list -n dev
helm list -n pre

✅ 六、访问应用

  1. 获取 Ingress Controller IP:

kubectl get svc -n ingress-nginx # 或你使用的 Ingress 控制器命名空间

  1. 在本地 /etc/hosts 添加解析(测试用):

    test.nginx.local dev.nginx.local pre.nginx.local

  2. 浏览器访问:

    复制代码
    - http://test.nginx.local
    - http://dev.nginx.local
    - http://pre.nginx.local

✅ 七、后续管理

升级

复制代码
helm upgrade nginx-dev ./nginx-app -f dev-values.yaml -n dev

回滚

复制代码
helm rollback nginx-dev 1 -n dev

查看配置

复制代码
helm get values nginx-dev -n dev

卸载

复制代码
helm uninstall nginx-dev -n dev

删除命名空间

复制代码
kubectl delete ns dev

✅ 八、最佳实践

  • ✅ 一个 Chart,多套 values:实现环境隔离与复用
  • ✅ 命名规范:Release 名 = -,Values 文件 = -values.yaml
  • ✅ Git 管理:将 Chart 和 values 文件纳入版本控制
  • ✅ 监控集成:通过 podAnnotations 自动接入 Prometheus
  • ✅ 安全清理:不用时及时 helm uninstall,避免资源残留
相关推荐
Agent产品评测局9 小时前
生产排期与MES/ERP系统打通,实操方法详解 —— 2026企业级智能体自动化选型与实战指南
java·运维·人工智能·ai·chatgpt·自动化
cen__y9 小时前
Linux07(信号01)
linux·运维·服务器·c语言·开发语言
MT5开发9 小时前
Linux安装MariaDB
linux·运维·mariadb
Lentou9 小时前
日志轮询策略
linux·服务器·网络
Yoyo25年秋招冲冲冲10 小时前
【亲测可用】ubuntu系统下安装Openclaw+配置飞书
linux·ubuntu·ai·飞书·openclaw
你好,帅哥10 小时前
openssl ,msys2 ,交叉编译
linux·运维·服务器
计算机安禾10 小时前
【Linux从入门到精通】第36篇:DNS服务探秘——自己搭建一个内网DNS
linux·运维·servlet
2023自学中10 小时前
make clean 与 make distclean
linux·嵌入式
BenD-_-11 小时前
CVE-2026-31431 Copy Fail:Linux 内核本地提权漏洞风险与缓解
linux·网络·安全
Web极客码11 小时前
2026年Linux VPS安全加固清单:SSH、防火墙与审计就绪配置
运维·服务器·数据库