1、什么是heml

helm是k8s集群的包管理器,用来管理集群中的各种chart包。相当于centos系统中的yum工具,可以将一个服务相关的资源对象信息(比如deployment、configmap、service等)整合到一个chart包中,可以使用一套yaml文件将应用部署到不同的环境中,比如开发环境、部署环境、测试环境。

2、应用部署k8s集群的传统方式

拉取代码
  ↓
打包应用
  ↓
构建docker镜像
  ↓
编写yaml文件(service、deployment、configmap)
  ↓
kubectl命令部署

传统方式存在的问题

  • 应用增多后,会有大量的yaml文件,维护yaml文件比较麻烦;
  • 不同的环境,需要不同的yaml文件,需要指定不同的名称及命名空间

3、Helm的优势

  • 简化部署与管理:使用helm命令即可完成应用的部署、升级与回滚,不需要重复编写yaml文件,例如:helm install myapp ./chart
  • 可配置化:可使用values.yaml文件传入参数,不需要手动修改yaml文件
  • 可重复应用:相同的chart可以应用于开发、生产和测试环境,只需更改values文件

4、Helm的相关组件

  • chart:helm中的一个chart包(理解为yum中的rpm包),本质是一个目录,包含以下内容
mychart/                # Chart 根目录
├── Chart.yaml          # Chart 的元数据(名称、版本、描述等)
├── values.yaml         # 默认的配置文件(可被用户覆盖)
├── values.schema.json  # (可选)values.yaml 的 JSON Schema 校验
├── charts/             # 依赖的子 Chart 存放位置
├── templates/          # 模板文件(核心,定义 Kubernetes 资源)
│   ├── deployment.yaml
│   ├── service.yaml
│   ├── ingress.yaml
│   ├── _helpers.tpl    # 模板函数(定义可复用的 helper)
│   └── NOTES.txt       # 安装成功后输出的提示信息
├── crds/               # (可选)自定义资源定义 CRD
├── templates/tests/    # (可选)测试 Pod,用于验证 Chart 部署成功
└── .helmignore         # (可选)打包时忽略的文件(类似 .gitignore)

  • release:用chart包部署的应用的实例,helm部署一次chart就会有一个唯一的release,每个release都可以理解为应用的版本,比如nginx-dev、nginx-prod
  • repository:helm仓库,用于存放chart包,类似yum仓库
  • helm cli:helm的命令行工具,用于用户交互

5、helm的安装

helm安装之前需要准备好k8s环境

[root@master ~]# kubectl get nodes
NAME     STATUS   ROLES                  AGE    VERSION
master   Ready    control-plane,master   145d   v1.23.5
node-1   Ready    <none>                 145d   v1.23.5
node-2   Ready    <none>                 145d   v1.23.5

helm的下载地址:helm官方release

wget https://get.helm.sh/helm-v3.7.2-linux-amd64.tar.gz

[root@master ~]# tar -xf helm-v3.7.2-linux-amd64.tar.gz 

helm为二进制包,解压即安装,解压后会生成一个linux-amd/64目录

[root@master ~]# ls linux-amd64/
helm       LICENSE    README.md  

移动helm到系统的path中

[root@master ~]# cp linux-amd64/helm /usr/bin/helm
[root@master ~]# helm version
version.BuildInfo{Version:"v3.7.2", GitCommit:"663a896f4a815053445eec4153677ddc24a0a361", GitTreeState:"clean", GoVersion:"go1.16.10"}

6、helm创建

创建helm
语法:helm create chart名

[root@master Helm]# helm create mychart
Creating mychart
# 创建chart后会在当前目录生成一个chart包
[root@master Helm]# ls
mychart
# chart包中包含有chart目录结构中的内容
[root@master Helm]# ls mychart/
charts  Chart.yaml  templates  values.yaml
[root@master Helm]# tree mychart/
mychart/
├── charts
├── Chart.yaml
├── templates
│   ├── deployment.yaml
│   ├── _helpers.tpl
│   ├── hpa.yaml
│   ├── ingress.yaml
│   ├── NOTES.txt
│   ├── serviceaccount.yaml
│   ├── service.yaml
│   └── tests
│       └── test-connection.yaml
└── values.yaml

注意:templates目录内有许多yaml文件,都是内置的模板文件,实际使用时按照自己需求删除或更改即可。
使用chart创建一个configmap实例

[root@master Helm]# cd mychart/templates/
[root@master templates]# rm -rf ./*
[root@master templates]# vim configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: mychart-configmap
data:
  myvalue: "hello world"


[root@master templates]# cd ~/Helm
[root@master Helm]# ls
mychart

# 在chart包目录执行install命令
# 语法: helm install chart示例名  chart包目录
[root@master Helm]# helm install myconfigmap mychart/
NAME: myconfigmap
LAST DEPLOYED: Mon Oct 13 21:15:46 2025
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None


# 查看通过helm创建的configmap
[root@master Helm]# helm list
NAME            NAMESPACE       REVISION        UPDATED                                  STATUS          CHART           APP VERSION
myconfigmap     default         1               2025-10-13 21:15:46.881280937 +0800 CST  deployed        mychart-0.1.0   1.16.0  
  
[root@master Helm]# kubectl get configmap | grep mychart
mychart-configmap   1      116s

# 查看release详细信息
[root@master Helm]# helm get manifest myconfigmap
---
# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: mychart-configmap
data:
  myvalue: "hello world"

# 删除release               helm uninstall release名
[root@master Helm]# helm uninstall myconfigmap
release "myconfigmap" uninstalled
[root@master Helm]# helm list
NAME    NAMESPACE       REVISION        UPDATED STATUS  CHART   APP VERSION

引用对象创建configmap
编写一个chart,在configmap.yaml文件内设置对象,在values.yaml文件中设置对象值,通过对象的引用创建configmap

# configmap.yaml文件
[root@master templates]# cat configmap.yaml 
apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ .Release.Name }}-configmap      # .Release.Name为创建chart的release名,Name为内置对象
data:
  myvalue: {{ .Values.MY_VALUE }}             # .Value.MY_VALUE为vaules.yaml文件中的MY_VALUE对象

# values.yaml文件定义对象值
[root@master mychart]# cat values.yaml 
MY_VALUE: "hello world"



# 创建release
[root@master Helm]# helm install myconfigmap-2 mychart/
NAME: myconfigmap-2
LAST DEPLOYED: Mon Oct 13 21:33:16 2025
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None


# 查看release,发现configmap名与relase名相同,对象已经传递成功
[root@master Helm]# helm list
NAME            NAMESPACE       REVISION        UPDATED                                  STATUS          CHART           APP VERSION
myconfigmap-2   default         1               2025-10-13 21:33:16.149662127 +0800 CST  deployed        mychart-0.1.0   1.16.0     
[root@master Helm]# kubectl get configmap | grep myconf
myconfigmap-2-configmap   1      51s

7、helm常用命令

创建chart

helm create chart包名

打包chart

helm package <chart目录>
helm package ./my-chart

创建release

helm install release名 chart目录

试运行release

helm install release名 chart目录 --debug -dry-run

查看release

helm list

查看release详细信息

helm get manifest release名

删除release

helm uninstall release名

升级release

helm upgrade <发布名称> <chart>
helm upgrade my-nginx aliyun/nginx --set image.tag=1.20

回滚release

helm rollback <发布名称> <修订版本号>
helm rollback my-nginx 1

查看release状态

helm status release名

添加仓库
语法:helm repo add 仓库名 仓库地址

[root@k8s-master ~]# helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
[root@k8s-master ~]# helm repo add azure http://mirror.azure.cn/kubernetes/charts
[root@k8s-master ~]# helm repo add kaiyuanshe http://mirror.kaiyuanshe.cn/kubernetes/charts
[root@k8s-master ~]# helm repo add bitnami https://charts.bitnami.com/bitnami

查看仓库
语法: helm repo list

[root@k8s-master ~]# helm repo list
NAME            URL                                          
stable          http://mirror.azure.cn/kubernetes/charts/    
kaiyuanshe      http://mirror.kaiyuanshe.cn/kubernetes/charts
azure           http://mirror.azure.cn/kubernetes/charts   

删除仓库
语法: helm repo remove 仓库名

[root@k8s-master ~]# helm repo remove stable
"stable" has been removed from your repositories

更新仓库

helm repo update

搜索chart包
语法:helm search repo chart包名

[root@k8s-master ~]# helm search repo tomcat
NAME                    CHART VERSION   APP VERSION     DESCRIPTION                                       
azure/tomcat            0.4.3           7.0             DEPRECATED - Deploy a basic tomcat application ...
kaiyuanshe/tomcat       0.4.3           7.0             DEPRECATED - Deploy a basic tomcat application ...

查看chart包
语法:helm show chart chart包名

# 查看chart包基础信息
[root@k8s-master ~]# helm show chart azure/tomcat 
apiVersion: v1
appVersion: "7.0"
deprecated: true
description: DEPRECATED - Deploy a basic tomcat application server with sidecar as
  web archive container
home: https://github.com/yahavb
icon: http://tomcat.apache.org/res/images/tomcat.png
name: tomcat
version: 0.4.3


# 查看chart包详细信息
helm show values azure/tomcat

拉取chart包
语法:pull chart chart包名

[root@k8s-master ~]# helm pull azure/tomcat
[root@k8s-master ~]# ls tomcat-0.4.3.tgz 
tomcat-0.4.3.tgz

注意:拉取时加上--version chart版本号可以指定版本,不指定版本默认拉取最新的chart包;--untar可以在拉取时解压

[root@k8s-master ~]# helm pull azure/tomcat --version 0.4.3 --untar
[root@k8s-master ~]# ls tomcat/
Chart.yaml  README.md  templates  values.yaml

安装chart包为release
本地创建的chart包安装命令为helm install release名 chart目录
远程仓库chart包安装命令有以下几种方式:

helm install release名 远程仓库的chart包名   # 直接从远程仓库安装chart
helm install release名 chart.gz文件   # 安装拉取到本地但未解压的chart
helm install release名 拉取到本地的chart包名   # 安装拉取到本地已解压的chart
helm install release名 chart包url   # 从网络服务器安装chart


[root@k8s-master ~]# helm install tomcat1 azure/tomcat
[root@k8s-master ~]# helm install tomcat2 tomcat/
[root@k8s-master ~]# helm install tomcat3 tomcat-0.4.3.tgz 
[root@k8s-master ~]# helm list
NAME    NAMESPACE       REVISION        UPDATED                                 STATUS          CHART             APP VERSION
tomcat1 default         1               2025-10-15 17:14:33.729521682 +0800 CST deployed        tomcat-0.4.3      7.0        
tomcat2 default         1               2025-10-15 17:15:21.915075747 +0800 CST deployed        tomcat-0.4.3      7.0        
tomcat3 default         1               2025-10-15 17:16:04.974136723 +0800 CST deployed        tomcat-0.4.3      7.0   

8、helm的内置对象

helm在渲染模板时,会提供一系列内置对象给模板使用,编写chart时,可以直接在/templates/*.yaml文件中引用。heml的内置对象包括.Release对象、.Values对象、.Chart对象、.Files对象、.Capabilities对象、.Template对象等。

8.1 Release对象

.Relase对象可获取本次部署的release相关信息,主要对象有:

.Release.Name     #本次部署的Release名
.Release.Namespace  #本次部署的命名空间
.Release.IsInstall   # 本次部署是否为安装操作,true/false
.Release.IsUpgrade   #本次部署是否为升级操作,true/false
.Release.IsRollback   # 本次部署是否为回滚操作,true/false
.Release.Revision     # Release修订版本号,每次升级+1
.Release.Service    # 发布工具名,通常为helm

.Release对象的引用

[root@master Helm]# cat mychart/templates/configmap.yaml 
apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ .Release.Name }}
  namespace: {{ .Release.Namespace }}
data:
  IsInstall: "{{ .Release.IsInstall }}"
  IsUpgrade: "{{ .Release.IsUpgrade }}"
  IsRollback: "{{ .Release.IsRollback }}"
  Revision: "{{ .Release.Revision }}"
  Service: "{{ .Release.Service }}"

`注意:由于configMap中的data必须为字符串,而IsInstall、IsUpgrade、IsRollback为布尔值,
因此需要将其转为字符串,不加双引号会报错`

试运行yaml文件,查看对象是否获取值

[root@master Helm]# helm install mytest mychart/ --debug --dry-run

# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: mytest
  namespace: default
data:
  IsInstall: "true"
  IsUpgrade: "false"
  IsRollback: "false"
  Revision: "1"
  Service: "Helm"

8.2 Values对象

.Values对象是最常用的对象,使用时在values.yaml文件中传递对象值。
设定对象值

cat values.yaml
replicaCount: 3
image:
  repository: nginx
  tag: 1.27

引用变量值

cat deployment.yaml
apiVersion: v1
kind: Deployment
metadata:
  name: {{ .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 }}

部署chart,查看values.yaml中的对象是否正确传递值

[root@master Helm]# helm install mytest mychart/ --debug --dry-run
install.go:178: [debug] Original chart version: ""
install.go:199: [debug] CHART PATH: /root/Helm/mychart

NAME: mytest
LAST DEPLOYED: Tue Oct 14 22:16:09 2025
NAMESPACE: default
STATUS: pending-install
REVISION: 1
TEST SUITE: None
USER-SUPPLIED VALUES:
{}

COMPUTED VALUES:
image:
  repository: nginx
  tag: latest
replicaCount: 3

HOOKS:
MANIFEST:
# Source: mychart/templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mytest
spec:
  replicas: 3
  selector:
    matchLabels:
      app: mytest
  template:
    metadata:
      labels:
        app: mytest
    spec:
      containers: 
        - name: mytest
          image: nginx:latest

# 可以看到deployment内的name、image、name都获取到values.yaml内的对象值

8.3 Chart对象

.Chart对象可获取当前chart的基本信息,包含以下对象

.Chart.Name    # Chart名
.Chart.Version  # Chart版本
.Chart.AppVersion # 应用版本
.Chart.Description  # Chart描述

.Chart对象的引用

apiVersion: v1
kind: Pod
metadata:
  name: {{ .Release.Name }}
data:
  value1: {{ .Chart.Name }}
  value2: {{ .Chart.Version }}

部署chart,查看.Chart对象值是否引用成功

[root@master Helm]# helm install mytest mychart/ --debug --dry-run
install.go:178: [debug] Original chart version: ""
install.go:199: [debug] CHART PATH: /root/Helm/mychart

NAME: mytest
LAST DEPLOYED: Tue Oct 14 22:21:48 2025
NAMESPACE: default
STATUS: pending-install
REVISION: 1
TEST SUITE: None
USER-SUPPLIED VALUES:
{}

COMPUTED VALUES:
image:
  repository: nginx
  tag: latest
replicaCount: 3

HOOKS:
MANIFEST:
---
# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: mytest
  namespace: default
data:
  Name: "mychart"
  Version: "0.1.0"
  AppVersion: "1.16.0"
  Description: "A Helm chart for Kubernetes"

# 可以看到data内的所有对象都获取到值

8.4 Files对象

.Files 用于读取非模板文件(如配置文件、脚本、证书等),通常位于 charts/mychart/files/。

方法说明
.Files.Get "path/to/file"读取文件内容为字符串
.Files.GetBytes "path/to/file"获取二进制内容
.Files.Glob "pattern"根据通配符匹配文件
.Files.AsSecrets将文件内容编码为 Base64
.Files.AsConfig将文件内容嵌入 ConfigMap
data:
  app.conf: |
{{ .Files.Get "files/app.conf" | indent 4 }}

8.5 Capabilities对象

.Capabilities对象可获取k8s集群的相关信息,包含以下对象

.Capabilities.KubeVersion.Version   # k8s版本号
.Capabilities.KubeVersion.Major      # k8s主版本号
.Capabilities.KubeVersion.Minor      # k8s小版本号
.Capabilities.APIVersions.Has "apps/v1"   # 判断某个api是否可用

.Capabilities对象的引用

apiVersion: v1
kind: Pod
metadata:
  name: {{ .Release.Name }}
data:
  value1: {{ .Capabilities.KubeVersion.Version }}
  value2: {{ .Capabilities.KubeVersion.Major }}
  value3: {{ .Capabilities.KubeVersion.Minor }}
  value4: {{ .Capabilities.APIVersions.Has "apps/v1" }}

部署chart,查看.Capabilities对象值是否引用成功

[root@master Helm]# helm install mytest mychart/ --debug --dry-run
install.go:178: [debug] Original chart version: ""
install.go:199: [debug] CHART PATH: /root/Helm/mychart

NAME: mytest
LAST DEPLOYED: Tue Oct 14 22:26:41 2025
NAMESPACE: default
STATUS: pending-install
REVISION: 1
TEST SUITE: None
USER-SUPPLIED VALUES:
{}

COMPUTED VALUES:
image:
  repository: nginx
  tag: latest
replicaCount: 3

HOOKS:
MANIFEST:
---
# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: mytest
  namespace: default
data:
  KubeVersion_Version: v1.23.5
  KubeVersion_Major: 1
  KubeVersion_Minor: 23
  value4: true

8.6 Template对象

.Template对象可获取模板文件信息,包含以下对象

.Template.Name    #当前正在执行模板文件的完整路径和名称,即包含该对象的文件的路径(相对chart目录)
.Template.BasePath  # 获取模板文件的基础路径(不包含文件名)

.Template对象的引用

apiVersion: v1
kind: Pod
metadata:
  name: {{ .Release.Name }}
data:
  value1: {{ .Template.Name }}
  value2: {{ .Template.BasePath }}

部署chart,查看.Capabilities对象值是否引用成功

[root@master Helm]# helm install mytest mychart/ --debug --dry-run
install.go:178: [debug] Original chart version: ""
install.go:199: [debug] CHART PATH: /root/Helm/mychart

NAME: mytest
LAST DEPLOYED: Tue Oct 14 22:28:08 2025
NAMESPACE: default
STATUS: pending-install
REVISION: 1
TEST SUITE: None
USER-SUPPLIED VALUES:
{}

COMPUTED VALUES:
image:
  repository: nginx
  tag: latest
replicaCount: 3

HOOKS:
MANIFEST:
---
# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: mytest
  namespace: default
data:
  Name: mychart/templates/configmap.yaml
  BasePath: mychart/templates

# 可以看到Name值为configmap文件相对chart的路径+文件名,BasePath只是路径

9、helm实战案例

通过helm完成nginx的安装、升级、回滚和卸载

9.1 nginx部署

9.1.1 nginx-chart包编辑

创建chart包

[m1@k8s-master ~]$ helm create nginx-chart
Creating nginx-chart
[m1@k8s-master ~]$ ls
nginx-chart

编辑/templates/nginx.yaml文件

[m1@k8s-master ~]$ rm -rf nginx-chart/templates/*
apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{ .Values.deployment_name }}
  namespace: {{ .Values.namespace }}
spec:
  replicas: {{ .Values.replica_count }}
  selector:
    matchLabels:
      app: {{ .Values.pod_label }}
  template:
    metadata:
      labels:
        app: {{ .Values.pod_label }}
    spec:
      containers:
      - image: {{ .Values.image }}:{{ .Values.image_tag }}
        name: {{ .Values.container_name }}
        ports:
        - containerPort: {{ .Values.container_port }}
---
apiVersion: v1
kind: Service
metadata:
  name: {{ .Values.service_name }}
  namespace: {{ .Values.namespace }}
spec:
  selector:
    app: {{ .Values.pod_label }}
  type: NodePort
  ports:
  - port: {{ .Values.port }}
    targetPort: {{ .Values.targetPort }}
    nodePort: {{ .Values.nodePort }}
    protocol: TCP

编辑values.yaml文件

deployment_name: nginx-deployment
namespace: nginx-chart
replica_count: 2
pod_label: nginx-pod
image: nginx  
image_tag: 1.23
container_name: nginx
container_port: 80
service_name: nginx-service
port: 80
targetPort: 80
nodePort: 30030

9.1.2 nginx-release部署

部署nginx的release

# 创建命名空间
[root@master m1]# kubectl create namespace nginx-chart
namespace/nginx-chart created
# 安装chart
[root@master m1]# helm install nginx-chart nginx-chart/
[root@master m1]# helm list
NAME            NAMESPACE       REVISION        UPDATED                                 STATUS      CHART                   APP VERSION
nginx-chart     default         1               2025-10-16 20:44:47.347278204 +0800 CST deployed    nginx-chart-0.1.0       1.16.0  

# 查看deployment状态
[root@master m1]# kubectl get deploy -n nginx-chart
NAME               READY   UP-TO-DATE   AVAILABLE   AGE
nginx-deployment   2/2     2            2           65s

# 查看service状态
[root@master m1]# kubectl get svc -n nginx-chart
NAME            TYPE       CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE
nginx-service   NodePort   10.96.75.208   <none>        80:30030/TCP   2m14s

# 查看pod
[root@master m1]# kubectl get pod -n nginx-chart
NAME                                READY   STATUS    RESTARTS   AGE
nginx-deployment-6c868cbbb7-44nnx   1/1     Running   0          3m31s
nginx-deployment-6c868cbbb7-4wtx5   1/1     Running   0          3m31s
[root@master m1]# kubectl get pod -n nginx-chart -o wide
NAME                                READY   STATUS    RESTARTS   AGE     IP            NODE     NOMINATED NODE   READINESS GATES
nginx-deployment-6c868cbbb7-44nnx   1/1     Running   0          3m35s   10.244.2.77   node-2   <none>           <none>
nginx-deployment-6c868cbbb7-4wtx5   1/1     Running   0          3m35s   10.244.1.78   node-1   <none>           <none>


# 使用node节点访问集群内部ip
[root@node-2 ~]# curl 10.96.75.208
<h1>Welcome to nginx!</h1>

# 使用node节点访问节点ip
[root@node-2 ~]# curl 192.168.253.23:30030
<h1>Welcome to nginx!</h1>

9.1.3 nginx-release升级

更改nginx镜像为1.24,升级release

[root@master m1]# helm upgrade nginx-chart nginx-chart/ --set image_tag=1.24
Release "nginx-chart" has been upgraded. Happy Helming!
NAME: nginx-chart
LAST DEPLOYED: Thu Oct 16 20:53:40 2025
NAMESPACE: default
STATUS: deployed
REVISION: 2
TEST SUITE: None

[root@master m1]# helm list
NAME            NAMESPACE       REVISION        UPDATED                                 STATUS      CHART                   APP VERSION
nginx-chart     default         2               2025-10-16 20:53:40.085944231 +0800 CST deployed    nginx-chart-0.1.0       1.16.0    

[root@master m1]# kubectl get deploy -n nginx-chart -o wide
NAME               READY   UP-TO-DATE   AVAILABLE   AGE   CONTAINERS   IMAGES       SELECTOR
nginx-deployment   2/2     2            2           10m   nginx        nginx:1.24   app=nginx-pod

9.1.4 nginx-release回滚

将nginx-release回滚到第1个版本

[root@master m1]# helm rollback nginx-chart 1
Rollback was a success! Happy Helming!

[root@master m1]# kubectl get deploy -n nginx-chart -o wide
NAME               READY   UP-TO-DATE   AVAILABLE   AGE   CONTAINERS   IMAGES       SELECTOR
nginx-deployment   2/2     2            2           11m   nginx        nginx:1.23   app=nginx-pod

9.1.5 nginx-release卸载

[root@master m1]# helm uninstall nginx-chart
release "nginx-chart" uninstalled

[root@master m1]# helm list
NAME    NAMESPACE       REVISION        UPDATED STATUS  CHART   APP VERSION

[root@master m1]# kubectl get deploy -n nginx-chart -o wide
No resources found in nginx-chart namespace.

更多推荐