helm(一键式部署chart资源)

1、 作用

在没有helm之前,需自定义deployment、service、ingress,helm的作用是通过打包的方式,把deployment、service、ingress打包在一块,一键式部署服务,类似于yum功能。这是官方提供的类似于安装仓库的功能,可以实现一键化部署应用

2、组成部分

****(1)chart:****helm的软件包,包括deployment、service、ingress,是一些定义好的yaml资源,类似于yum的rpm包

****(2)release:****可以理解为版本或在安装过程中给部署的应用起一个名称

****(3)repository:****仓库,提供一个包含chart资源的服务器。yaml资源的保存地址

3、helm2淘汰,helm3纯命令行方式

docker官网下载镜像,github官网下载源码包

helm一键式部署chart资源

1、安装helm(解压缩包)

添加补齐命令

source <(helm completion bash)

2、添加常用仓库

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

helm repo add stable http://mirror.azure.cn/kubernetes/charts

helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts不推荐

helm repo add incubator https://charts.helm.sh/incubator官网

3、查看仓库列表

4、更新仓库资源

helm repo update

5、查看仓库资源

查找指定仓库是否包含nginx的资源

helm search repo bitnami | grep nginx

6、查看chart的详细信息

helm show chart bitnami/nginx(chart信息)

helm show all bitnami/nginx(所有信息)

9、部署chart资源

helm install my-nginx bitnami/nginx -n default

|------------|-----------------------|
| my-nginx | 安装的名称或版本 |
| bitnami | 仓库名 |
| nginx | 指的是chart,一系列yaml资源的集合 |
| -n default | 指定命名空间 |

9、修改chart资源

10、删除chart资源

helm uninstall my-nginx

11、随机生成一个chart资源

helm install bitnami/nginx --generate-name

|-----------------|-----------------|
| --generate-name | 随机生成一个release名称 |

12、查看当前安装的release版本

helm ls

|---|------|
| 1 | 表示回滚 |

13、helm组织结构

根据自己的需求定义chart,然后部署到集群中

14、 自定义chart资源

①创建nginx模板

helm create nginx

|--------------------------|--------------------------------------------|
| charts | 存储依赖环境。若这个chart依赖其他chart,依赖文件会保存在这个目录中 |
| Chart.yaml | helm chart的元数据文件,包含这个chart的名称、版本和维护者信息等 |
| templates | 包含清单模板的目录 |
| deployment.yaml | 部署应用的模板文件 |
| _helpers.tpl | 帮助文档,告诉用户如何定义模板的值 |
| hpa.yaml | 定义应用程序副本数的自动扩缩容行为 |
| ingress.yaml | 定义外部流量如何转发到应用程序 |
| NOTES.txt | 注意事项 |
| serviceaccount.yaml | 应用程序的服务账号 |
| service.yaml | 集群内部的访问配置 |
| tests | 测试目录和文件,chart部署完成后可以用来测试的文件 |
| test-connection.yaml | 测试目录和文件,chart部署完成后可以用来测试的文件 |
| values.yaml 【核心】 | 自定义的值,都是通过values.yaml文件,把自定义的数据覆盖到安装的chart |

②helm自定义访问

这些自定义的值会传给template目录中的各个文件

③验证语法helm lint nginx(在nginx的上一层目录执行此命令)

④打包helm package nginx

⑤部署

• 测试:helm install nginx-11 ./nginx --dry-run --debug

|-------------------|-------------------------------------|
| nginx-11 | release版本号 |
| ./nginx | 当前目录下的nginx的chart |
| --dry-run --debug | 这个集群不会部署到集群中,进行参数验证,测试chart的配置的是否正确 |

• 安装

第一种方式helm install nginx-11 ./nginx -n default

• 删除

第二种方式 helm install nginx-11 ./nginx -n default

• 部署ingress(基于deployment+nodeport模式)

wget https://gitee.com/mirrors/ingress-nginx/raw/nginx-0.30.0/deploy/static/mandatory.yaml

wget https://gitee.com/mirrors/ingress-nginx/raw/nginx-0.30.0/deploy/static/provider/baremetal/service-nodeport.yaml

15、测试访问

16、修改chart文件后重新部署

①修改service类型nodeport,并且不生成ingress

②重新定义chart名称

③验证chart语法

④更新chart资源并访问

17、回滚

版本2取消了ingress,回滚到版本1验证是否存在ingress即可确认回滚成功与否

18、上传harbor仓库

①新建项目②部署chart路径的识别方式

③指定位置安装helm-push

mkdir -p ~/.local/share/helm/plugins/helm-push

cd ~/.local/share/helm/plugins/helm-push

④测试

docker login -u admin -p 123456 https://hub.test.com

⑤打包更新后的nginx

helm package nginx

⑥上传到仓库

helm push nginx-0.2.0.tgz oci://hub.test.com/chart

原因:harbor仓库是https登录的

解决:跳过tls验证

helm push nginx-0.2.0.tgz oci://hub.test.com/chart --insecure-skip-tls-verify

⑦删除所有,从仓库中拉取镜像

helm pull oci://hub.test.com/chart/nginx --version 0.2.0 --insecure-skip-tls-verify

|---------------------------------------------------|-----------------------------------------------------------|
| helm常用命令 ||
| helm repo add 仓库名称 url仓库地址 | 添加仓库 |
| helm repo update | 不加仓库名,就是更新所有仓库 |
| helm repo list(=helm repo ls) | 仓库列表 |
| helm repo remove 仓库名称 | 删除仓库 |
| helm show chart stable/nginx | 查看chart信息 |
| helm show all stable/nginx | 查看详细信息 |
| helm install nginx-11 stable/nginx -n lucky-cloud | 安装chart,安装官网的默认版本 |
| helm uninstall nginx-11 | 删除安装好的chart |
| helm list | 查看已安装的chart |
| 自定义模板 ||
| helm create nginx | 创建一个自定义的chart模板(其中value.yaml最重要,这里的值会传给templates中的yaml文件) |
| 安装 ||
| helm install nginx-11 ./nginx | 目录 |
| helm install nginx-11 ./nginx-0.1.0.tgz | 路径 |
| helm packge nginx | 打包 |
| 回滚 ||
| helm history nginx-11 ||
| helm rollback nginx-11 1 ||

相关推荐
西柚与蓝莓1 天前
任务【浦语提示词工程实践】
github
Good_Starry1 天前
Git介绍--github/gitee/gitlab使用
git·gitee·gitlab·github
云端奇趣1 天前
探索 3 个有趣的 GitHub 学习资源库
经验分享·git·学习·github
运营黑客1 天前
发现一超级Prompt:让GPT-4o、Claude3.5性能再升级(附保姆级教程)
github
記億揺晃着的那天2 天前
Github优质项目推荐-第二期
github
Uncertainty!!2 天前
GitHub入门与实践
github
罗曼蒂克在消亡2 天前
github项目——gpt-pilot自动创建应用
gpt·github·github项目
篝火2 天前
MindSearch 部署到Github Codespace 和 Hugging Face Space
人工智能·python·github
无限大.2 天前
0基础学前端 day6 -- 搭建github pages静态网址
前端·github