Helm 实战:用 Helm 部署一个 Nginx 应用

Helm 实战:用 Helm 部署一个 Nginx 应用

经验文章nimo972025-06-29 8:43:204A+A-

这一篇,我们将动手实战:用 Helm 从零部署一个 Nginx 应用,并掌握 Helm Chart 的结构和参数化技巧。

一、准备环境

在开始之前,你需要确保环境中具备以下工具:

  • 已部署的 Kubernetes 集群(可用 minikube、k3s 或 Kind)
  • 安装好 Helm(版本推荐 v3.x)
  • kubectl 可正常连接集群

具体helm与k8s兼容版本可参考 helm官网:


验证 Helm 是否可用:

helm version

二、创建你的第一个 Chart

使用 Helm 创建一个新的 Chart 项目:

helm create my-nginx

执行后,会生成如下目录结构:

my-nginx/
├── Chart.yaml         # Chart 元信息
├── values.yaml        # 默认参数配置
├── templates/         # Kubernetes 模板文件夹
│   ├── deployment.yaml
│   ├── service.yaml
│   └── ...

这个 my-nginx 目录就是一个 Helm Chart。我们接下来将在这个 Chart 的基础上部署 Nginx 应用。


三、修改 Chart 内容:部署 Nginx

1. 编辑 values.yaml

将默认镜像改为 Nginx:

image:
  repository: nginx
  tag: "1.25"
  pullPolicy: IfNotPresent

service:
  type: NodePort
  port: 80

2. 修改 deployment.yaml

确保使用模板变量渲染镜像和端口:

spec:
  containers:
    - name: nginx
      image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
      ports:
        - name: http
          containerPort: {{ .Values.service.port }}

这样做的好处是:所有参数可配置、可复用、可被不同环境覆盖。


四、安装 Helm Chart

进入 Chart 目录,执行安装命令:

helm install my-nginx ./my-nginx

验证部署:

kubectl get pods
kubectl get svc

你会看到一个名为 my-nginx 的 Pod 运行中,并且生成了一个 NodePort 服务。


五、访问你的 Nginx 服务

获取 NodePort 映射端口:

kubectl get svc my-nginx

例如:

my-nginx  NodePort  10.96.0.1  <none>  80:31337/TCP

在浏览器中访问:

http://<NodeIP>:31337

如果你使用的是 Minikube,可用如下命令获取 IP:

minikube service my-nginx --url

六、Helm 升级与回滚

修改 values.yaml,比如修改镜像版本:

tag: "1.26"

然后执行升级:

helm upgrade my-nginx ./my-nginx

查看历史版本:

helm history my-nginx

回滚版本:

helm rollback my-nginx 1

七、删除部署

如果不再使用:

helm uninstall my-nginx

八、Helm 的参数化原理

Helm 最核心的优势就是 参数化部署,通过 values.yaml 与 templates/*.yaml 模板结合,支持灵活控制:

  • 镜像版本
  • 副本数量
  • 服务类型
  • 配置文件内容(如 ConfigMap)
  • 持久化存储路径(PVC)

实际生产中,可以将 values.yaml 拆分为 values-dev.yaml、values-prod.yaml 等多环境配置,配合 GitOps 自动部署。

点击这里复制本文地址 以上内容由nimo97整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

尼墨宝库 © All Rights Reserved.  蜀ICP备2024111239号-7