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 list
或 helm 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
评论区