通过 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,避免资源残留
相关推荐
web守墓人22 分钟前
【goed/ui】自定义组件设计思想篇
linux·windows·ui·golang
码农学院26 分钟前
企业官网改版后 AI 引用归零的复盘:301 重定向断层让爬虫索引掉线,修复方案与恢复数据
运维·geo优化·ai优化aio
kuroomi42 分钟前
Ingress-Nginx与kubernetes 网络
linux·运维·网络·kubernetes
当下新鲜事44 分钟前
空调机房冷冻泵与冷却泵技术分析:赛莱默B&G背包式智能变频管道泵的工程应用
运维·物联网·业界资讯
daemon.qiang1 小时前
国内虚拟机对接 Freedesktop:Fork xserver、自建 Runner 与提交 MR 实战
linux·ubuntu·centos·gitlab·开源软件
Doris__HE2 小时前
【元脑服务器NF5476G7-NF5476M7技术规格分享】
运维·服务器·网络·数据库·性能优化
2401_869769592 小时前
linux 权限 指令与权限(重启之后)
linux
码农客栈3 小时前
Linux CAN 驱动
linux·驱动开发
打工仔折腾 AI3 小时前
FastAPI 从本机到生产服务器:Nginx+Gunicorn+Uvicorn 完整部署实录
人工智能·后端·python·nginx·fastapi·gunicorn
GeW4 小时前
红帽RHCE从挂科边缘到一次过,我做对了什么
linux