Helm常用命令

本文详细介绍了Helm,Kubernetes的包管理器,包括常用命令如创建、安装、升级、回滚等,以及它们在Kubernetes应用生命周期管理中的作用。通过学习这些命令,用户能更好地部署、管理和维护Kubernetes应用。
摘要由CSDN通过智能技术生成

引言

Helm 是 Kubernetes 的包管理器,它通过提供一种称为 Helm Chart 的方式来简化 Kubernetes 应用的配置、部署和管理。本文将详细介绍 Helm 的常用命令及其使用场景,帮助用户更高效地利用 Helm 进行 Kubernetes 应用的生命周期管理。

常用的 Helm 命令

helm create

该命令用于初始化一个新的 Helm Chart。Helm Chart 是 Kubernetes 应用的包,包含了运行应用所需的所有资源定义。

[root@master ~]#  helm create helloworld
[root@master helloworld]# tree
.
├── charts
├── Chart.yaml
├── templates
│   ├── deployment.yaml
│   ├── _helpers.tpl
│   ├── hpa.yaml
│   ├── ingress.yaml
│   ├── NOTES.txt
│   ├── serviceaccount.yaml
│   ├── service.yaml
│   └── tests
│       └── test-connection.yaml
└── values.yaml

helm install

用于将 Helm Chart 安装到 Kubernetes 集群中。它会创建所有定义在 Chart 中的资源。

[root@master ~]# helm install myhelloworld helloworld
NAME: myhelloworld
LAST DEPLOYED: Tue Apr 23 10:07:31 2024
NAMESPACE: default
STATUS: deployed
REVISION: 1
NOTES:
1. Get the application URL by running these commands:
  export NODE_PORT=$(kubectl get --namespace default -o jsonpath="{.spec.ports[0].nodePort}" services myhelloworld)
  export NODE_IP=$(kubectl get nodes --namespace default -o jsonpath="{.items[0].status.addresses[0].address}")
  echo http://$NODE_IP:$NODE_PORT

helm upgrade

用于升级已安装的 Helm Chart 到新版本。可以修改 Chart 的配置和资源。

# 将helloworld的副本调整为2个副本
[root@master ~]# cat helloworld/values.yaml |head
# Default values for helloworld.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.

replicaCount: 2

image:
  repository: nginx
  pullPolicy: IfNotPresent
  # Overrides the image tag whose default is the chart appVersion.
...

# 将已有的 release 升级到一个新版本的 chart
[root@master ~]# helm upgrade myhelloworld helloworld
Release "myhelloworld" has been upgraded. Happy Helming!
NAME: myhelloworld
LAST DEPLOYED: Tue Apr 23 13:56:52 2024
NAMESPACE: default
STATUS: deployed
REVISION: 2
NOTES:
1. Get the application URL by running these commands:
  export NODE_PORT=$(kubectl get --namespace default -o jsonpath="{.spec.ports[0].nodePort}" services myhelloworld)
  export NODE_IP=$(kubectl get nodes --namespace default -o jsonpath="{.items[0].status.addresses[0].address}")
  echo http://$NODE_IP:$NODE_PORT

helm rollback

当 Helm Chart 升级后出现问题时,可以使用该命令回滚到之前的版本。

[root@master ~]# helm rollback myhelloworld 1
Rollback was a success! Happy Helming!
[root@master ~]# kubectl get pod -l app.kubernetes.io/name=helloworld
NAME                            READY   STATUS    RESTARTS   AGE
myhelloworld-768888cf49-xd64t   1/1     Running   0          3h54m

helm install --debug --dry-run

在实际安装之前,可以使用该命令查看 Helm 将如何安装 Chart。

[root@master ~]# helm install myhelloworld --debug --dry-run helloworld
install.go:214: [debug] Original chart version: ""
install.go:231: [debug] CHART PATH: /root/helloworld

NAME: myhelloworld
LAST DEPLOYED: Tue Apr 23 14:02:46 2024
NAMESPACE: default
STATUS: pending-install
REVISION: 1
USER-SUPPLIED VALUES:
{}
...

helm template

该命令用于渲染 Helm Chart 的模板,但不执行安装操作。

[root@master ~]# helm template helloworld

# 执行完毕后,会在helloworld目录下生成templates目录
[root@master helloworld]# tree templates/
templates/
├── deployment.yaml
├── _helpers.tpl
├── hpa.yaml
├── ingress.yaml
├── NOTES.txt
├── serviceaccount.yaml
├── service.yaml
└── tests
    └── test-connection.yaml

helm lint

对 Helm Chart 进行静态分析,检查可能存在的问题。

[root@master ~]# helm lint helloworld
==> Linting helloworld
[INFO] Chart.yaml: icon is recommended

1 chart(s) linted, 0 chart(s) failed
# 对1个chart进行了linting(代码审查),并且在审查过程中没有发现任何失败的问题

helm show

用于查看 Helm Chart 的内容,包括模板、配置文件和其他资源的定义。

# 显示Chart的信息和元数据
[root@master ~]# helm show chart helloworld
apiVersion: v2
appVersion: 1.16.0
dependencies:
- name: mysql
  repository: https://charts.helm.sh/stable
  version: 1.6.1
description: A Helm chart for Kubernetes
name: helloworld
type: application
version: 0.1.0

# 查看 Helm Chart的所有内容,包括模板、配置文件和其他资源的定义
[root@master ~]# helm show all helloworld

# 显示 Helm Chart的 values.yaml 文件内容,这个文件包含了图表的默认配置值
[root@master ~]# helm show values helloworld

helm pull

从远程仓库下载或拉取一个 Helm Chart 到本地。

[root@master ~]# helm repo add stable https://charts.helm.sh/stable
[root@master ~]# helm pull stable/mysql --version 1.6.9
[root@master ~]# helm env
HELM_BIN="helm"
HELM_BURST_LIMIT="100"
HELM_CACHE_HOME="/root/.cache/helm"
HELM_CONFIG_HOME="/root/.config/helm"
HELM_DATA_HOME="/root/.local/share/helm"
...
[root@master ~]# ls /root/.cache/helm/repository/|grep mysql
mysql-1.6.9.tgz

常用参数

  • --version:允许指定一个版本约束,用于下载特定版本的 Helm 图表。默认使用latest版本;
  • --untar:下载Chart后是否自动解压缩。如果设置为true,则Helm会在下载后自动解压缩
  • --untardir:指定图表提取到的目录;
  • --repo:指定从中下载图表的存储库的 URL;
  • --username--password:提供访问私人存储库的凭证;
  • --verify:可以在使用图表之前对其进行验证,确保图表的完整性和安全性。
# 拉取Package到本地
[root@master ~]# helm pull stable/nginx-ingress --version 1.2.3 --untar
[root@master ~]# tree nginx-ingress/
nginx-ingress/
├── Chart.yaml
├── ci
│   └── psp-values.yaml
├── OWNERS
├── README.md
├── templates
│   ├── clusterrolebinding.yaml
│   ├── clusterrole.yaml
...

helm dependency

管理 chart 的依赖关系。

修改helloworld目录中Chart.yaml文件,文件末尾追加依赖关系,例如:

[root@master ~]# cat helloworld/Chart.yaml |tail
...
appVersion: "1.16.0"
dependencies:
  - name: mysql
    version: 1.6.1
    repository: https://charts.helm.sh/stable

# 列出当前helloworld chart的依赖项
[root@master ~]# helm dependency list helloworld
load.go:120: Warning: Dependencies are handled in Chart.yaml since apiVersion "v2". We recommend migrating dependencies to Chart.yaml.
NAME 	VERSION	REPOSITORY                   	STATUS
mysql	1.6.1  	https://charts.helm.sh/stable	missing

[root@master ~]# helm dependency update helloworld

helm uninstall

移除已安装的 Helm Chart。

[root@master ~]# helm uninstall myhelloworld
release "myhelloworld" uninstalled

命令速查表

为了便于快速查阅,Helm 提供了一个命令速查表

结语

本文详细介绍了 Helm 的常用命令,旨在帮助用户更深入地理解 Helm 的使用和 Kubernetes 应用的管理。通过掌握这些命令,用户可以更高效地进行 Kubernetes 应用的部署、升级和维护。同时,本文也提供了一些最佳实践和技巧,以提高用户的工作效率。

  • 30
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当然!下面是一些 的基础知识常用命令Helm 是一个开源的 Kubernetes 应用程序包管理工具,它简化了在 Kubernetes 集群上部署和管理应用程序的过程。Helm 使用 Charts(图表)来定义应用程序,并使用 Releases(发布)来跟踪已安装的应用程序的版本和配置。 以下是一些常用Helm 命令: 1. `helm search repo <keyword>`:在 Helm 仓库中搜索包含关键字的 Charts。 2. `helm install <release-name> <chart-name>`:安装一个新的 Helm release。 3. `helm upgrade <release-name> <chart-name>`:更新已安装的 Helm release。 4. `helm rollback <release-name> <revision>`:回滚到先前的 Helm release 版本。 5. `helm uninstall <release-name>`:卸载已安装的 Helm release。 6. `helm list`:列出已安装的 Helm releases。 7. `helm status <release-name>`:显示特定 Helm release 的状态信息。 8. `helm show chart <chart-name>`:显示特定 Chart 的详细信息。 9. `helm show values <chart-name>`:显示特定 Chart 的默认配置值。 10. `helm repo add <repo-name> <repo-url>`:添加一个新的 Helm 仓库。 11. `helm repo update`:更新已添加的 Helm 仓库中的 Charts。 此外,Helm 还支持使用自定义的 values 文件来覆盖 Chart 的默认配置值,可以通过 `-f` 选项指定 values 文件的路径。 这些命令只是 Helm 提供的一小部分功能,Helm 还有更多高级特性,例如使用模板引擎进行配置文件的生成、使用依赖关系管理等。您可以查阅 Helm 的官方文档以获取更详细的信息和示例。 希望这些信息对您有所帮助!如有任何进一步的问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值