侧边栏壁纸
博主头像
孔子说JAVA博主等级

成功只是一只沦落在鸡窝里的鹰,成功永远属于自信且有毅力的人!

  • 累计撰写 285 篇文章
  • 累计创建 125 个标签
  • 累计收到 4 条评论

目 录CONTENT

文章目录

Helm3入门教程-7:Helm3 常用命令

孔子说JAVA
2022-04-17 / 0 评论 / 0 点赞 / 453 阅读 / 5,441 字 / 正在检测是否收录...

Helm3入门教程全系列,26小时轻松掌握Helm

1、Helm3 仓库

1.1 添加仓库

网上有很多的 Charts 仓库链接,我们可以使用这些仓库来部署一些应用,例如我们首先添加一个仓库地址:

  • 命令格式: helm repo add [NAME] [URL]
helm repo add test-repo http://mirror.kaiyuanshe.cn/kubernetes/charts/

helm repo add bitnami https://charts.bitnami.com/bitnami

1.2 查看当前仓库列表

可以使用 list 命令查看当前已经添加的仓库列表信息:

helm repo list

1.3 更新仓库信息

使用 update 命令可以更新仓库信息,确保我们可以拿到最新的charts列表:

helm repo update

1.4 删除仓库

使用 remove 命令可以删除一个或多个仓库:

  • 命令格式: helm repo remove [NAME]
helm repo remove test-tepo

2、Helm3 charts的创建及打包

开发一个Chart(简单说就是一个软件包)所需的步骤及相关命令。

2.1 创建一个 chart 范例

执行 helm create mychart 命令,会得到一个 helm 自动生成的空 chart。这个 chart 里的名称是 mychart。

  • 命令格式: helm create [name]
helm create mychart

2.2 验证 chart 格式是否正确

可以使用 helm lint 来粗略地检查一下制作的 Chart 有没有什么语法上的错误,检查helm chart依赖和模板配置是否正确。

  • 命令格式: helm lint [chart路径]
helm lint mychart/

2.3 对 chart 文件夹进行打包

可以使用 helm package 命令对我们的 Chart 文件夹进行打包,打包后我们可以得到一个 mychart-0.1.0.tgz 的应用包(该名字根据配置文件的不同而不同)。

  • 命令格式: helm package [chart路径]
  • 打包好的 chart 可以上传到 chart 仓库中,也可以进行安装/发布。
helm package mychart/

2.4 helm模板测试

当你想测试模板渲染的内容但又不想安装任何实际应用时,可以使用 helm install --debug --dry-run goodly-guppy mychart。这样就不会安装应用(chart)到你的kubenetes集群中,只会渲染模板内容到控制台(用于测试)。

  • 命令格式: helm install --dry-run [chart目录位置]
helm install --dry-run .

helm install --dry-run /kubernetes/helm/hello-world

helm install --debug --dry-run goodly-guppy hello-world

helm install solid-vulture hello-world --dry-run --debug

3、Helm3 charts上传到仓库

3.1 安装 helm push 插件

插件的下载

# 在线安装
helm plugin install https://github.com/chartmuseum/helm-push

# 离线安装-下载文件
wget https://github-releases.githubusercontent.com/129789275/30fc1c00-0f24-11eb-976c-d95527243443?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20210810%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20210810T161439Z&X-Amz-Expires=300&X-Amz-Signature=2912e1744c4ceb8a4e430b02130d606add21b475bae68860290cc4b5d159be93&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=129789275&response-content-disposition=attachment%3B%20filename%3Dhelm-push_0.9.0_linux_amd64.tar.gz&response-content-type=application%2Foctet-stream

离线安装的方式

tar xvf helm-push_0.9.0_linux_amd64.tar.gz
mkdir -p /root/.local/share/helm/plugins/helm-push
mv bin/  /root/.local/share/helm/plugins/helm-push
mv  plugin.yaml /root/.local/share/helm/plugins/helm-push

3.2 查看插件列表

使用 helm plugin list 命令查看插件列表。

[root@node101 ~]# helm plugin list
NAME	VERSION	DESCRIPTION                      
push	0.9.0  	Push chart package to ChartMuseum

3.3 charts上传到仓库

使用 helm push 命令推送 mychart-0.1.0.tgz到本地仓库localrepo。

[root@node101 ~]# helm push mychart-0.1.0.tgz localrepo
Pushing mychart-0.1.0.tgz to localrepo...
Done.

# 如需有用户密码使用以下方式
helm push mychart-0.1.0.tgz test --username test --password xxx

3.4 查看仓库内容可看到新上传的chart

更新本地 repo,查看仓库内容,可以看到新上传的chart

# 更新仓库信息
helm repo update 

# 查看新上传的chart
helm search repo localrepo

4、Helm3 安装charts

在前面我们已经演示了如何加载一个仓库,接下来我们从这个仓库中获取 chart 包,演示如何进行安装、升级和卸载等操作

4.1 查找要安装应用的信息

Helm 自带一个强大的搜索命令,可以用来从两种来源中进行搜索(均为模糊搜索):

  • helm search hub 从 Artifact Hub 中查找并列出 helm charts。 Artifact Hub中存放了大量不同的仓库。
  • 命令格式: helm search hub [模糊搜索的名称]
  • helm search repo 从你添加(使用 helm repo add)到本地 helm 客户端中的仓库中进行查找。该命令基于本地数据进行搜索,无需连接互联网。
  • 命令格式: helm search repo [模糊搜索的名称]
# 从Artifact Hub 中查找并列出名为 wordpress 的 charts
helm search hub wordpress

# 从本地仓库中查找并列出名为 nginx 的 charts
helm search repo nginx

4.2 查看helm chart的基本信息

您可以通过执行 helm show chart bitnami/mysql 命令简单的了解到这个chart的基本信息。 或者您可以执行 helm show all bitnami/mysql 获取关于该chart的所有信息。

  • 命令格式1:helm show chart [chart库文件名]
  • 命令格式2:helm show all [chart库文件名]
# 简单的了解到这个chart的基本信息
helm show chart bitnami/mysql

# 获取关于该chart的所有信息
helm show all bitnami/mysql

4.3 安装helm chart应用

helm install 命令可以从多个来源进行安装:

  • chart 的仓库(helm install happy-panda bitnami/wordpress)
  • 本地 chart 压缩包(helm install foo foo-0.1.1.tgz)
  • 解压后的 chart 目录(helm install foo path/to/foo)
  • 完整的 URL(helm install foo https://example.com/charts/foo-1.2.3.tgz)

安装chart时创建了一个新的 release 对象。如果想让Helm生成一个名称,发布时使用–generate-name。

  • 每当您执行 helm install 的时候,都会创建一个新的发布版本。 所以一个chart在同一个集群里面可以被安装多次,每一个都可以被独立的管理和升级。
  • 命令格式1: helm install [自定义应用名] [chart库文件名]
  • 命令格式2:helm install [chart库文件名] --generate-name
# 从chart 的仓库安装
helm install happy-panda bitnami/wordpress

# 从本地 chart 压缩包安装
helm install foo foo-0.1.1.tgz

# 从解压后的 chart 目录安装
helm install foo path/to/foo

# 从完整的URL安装
helm install foo https://example.com/charts/foo-1.2.3.tgz

4.4 映射宿主机端口到pod端口

kubectl get pods 命令查看一下运行 pod 的状态,通过 kubectl port-forward 命令将该 pod 的端口映射到宿主机端口上,这个时候就可以通过访问 localhost 来访问部署好的应用了。

# 查看运行 pod 的状态, 找到pod的name
kubectl get pods 		

# 把pod或者其他资源的端口映射到宿主机端口,宿主机端口在前,81是宿主机端口,80是pod容器端口
# demo-mychart-6df56fb8df-w8x6l 为 pod 的 name
# 下面的命令只能使用localhost或127.0.0.1访问
kubectl port-forward demo-mychart-6df56fb8df-w8x6l 81:80

# kubectl port-forward 设置参数--address 0.0.0.0, K8S会监听任何地址,可以使用K8S节点的IP地址去访问
kubectl port-forward --address 0.0.0.0 demo-mychart-6df56fb8df-w8x6l 81:80

5、Helm3 release相关命令

安装chart时创建了一个新的 release 对象,安装chart时指定的名称即为release名称。

5.1 查看 Kubernetes 中 Pod 的相关信息

查看 Kubernetes 中 运行 pod 的状态等相关信息。

kubectl get pods 

5.2 查看release列表

通过 helm listhelm ls 命令会列出所有被发布的Chart,即集群中 helm 应用的详细信息。helm list --all 会展示 Helm 保留的所有 release 记录,包括失败或删除的条目(需指定了–keep-history)

helm list
helm ls
helm list --all

5.3 卸载release

通过 helm uninstall 命令卸载你发布的版本。

  • 命令格式:helm uninstall [release名称]
# 卸载名称为nginx的release
helm uninstall nginx

5.4 查看release状态/信息

您可以使用 helm status 命令查看 release 的状态,或是重新读取配置信息。若卸载Chart时使用了 --keep-history 选项,helm会跟踪你的版本(即使你卸载了他们),所以你可以审计集群历史甚至使用 helm rollback 回滚版本。

  • 命令格式:helm status [release名称]
helm status release名
helm status nginx

5.5 查看 release 历史版本信息

  • 历史版本命令格式:helm history [release名称]
  • 版本命令格式:helm status [release名称]
# 查看历史版本信息
helm history hello

# 查看当前版本信息
helm status hello	

5.6 查看已经发布release的template

使用 helm get manifest hello 命令检索版本并查看生成的完整的YAML(hello为release的名称)。

  • 命令格式:helm get manifest [release名称]
helm get manifest hello

5.7 更新 release 版本

  • 命令格式:helm upgrade [release名称] [目录]
helm upgrade hello  /kubernetes/helm/hello-world

5.8 回滚 release 历史版本

  • 命令格式:helm rollback [release名称] [版本号]
helm rollback hello 3

5.8 清空、删除 release 历史记录

  • 命令格式:helm delete --purge [release名称]
helm delete --purge hello
0

评论区