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纯命令行方式helm(一键式部署chart资源)_第1张图片helm(一键式部署chart资源)_第2张图片helm(一键式部署chart资源)_第3张图片helm(一键式部署chart资源)_第4张图片

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

helm一键式部署chart资源

1、安装helm(解压缩包)helm(一键式部署chart资源)_第5张图片

添加补齐命令

source <(helm completion bash)helm(一键式部署chart资源)_第6张图片

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官网helm(一键式部署chart资源)_第7张图片

3、查看仓库列表helm(一键式部署chart资源)_第8张图片

4、更新仓库资源

helm repo update

helm(一键式部署chart资源)_第9张图片

5、查看仓库资源

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

helm search repo bitnami | grep nginx

6、查看chart的详细信息

helm show chart bitnami/nginx(chart信息)

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

helm(一键式部署chart资源)_第10张图片

9、部署chart资源

helm install my-nginx bitnami/nginx -n default

my-nginx

安装的名称或版本

bitnami

仓库名

nginx

指的是chart,一系列yaml资源的集合

-n default

指定命名空间

helm(一键式部署chart资源)_第11张图片helm(一键式部署chart资源)_第12张图片helm(一键式部署chart资源)_第13张图片helm(一键式部署chart资源)_第14张图片helm(一键式部署chart资源)_第15张图片helm(一键式部署chart资源)_第16张图片

9、修改chart资源helm(一键式部署chart资源)_第17张图片helm(一键式部署chart资源)_第18张图片

10、删除chart资源

helm uninstall my-nginx

helm(一键式部署chart资源)_第19张图片

11、随机生成一个chart资源

helm install bitnami/nginx --generate-name

--generate-name

随机生成一个release名称

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

helm ls

1

表示回滚

13、helm组织结构

根据自己的需求定义chart,然后部署到集群中helm(一键式部署chart资源)_第20张图片helm(一键式部署chart资源)_第21张图片helm(一键式部署chart资源)_第22张图片

14、自定义chart资源

①创建nginx模板

helm create nginxhelm(一键式部署chart资源)_第23张图片

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

values.yaml

【核心】

自定义的值,都是通过values.yaml文件,把自定义的数据覆盖到安装的chart

②helm自定义访问

helm(一键式部署chart资源)_第24张图片helm(一键式部署chart资源)_第25张图片helm(一键式部署chart资源)_第26张图片

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

③验证语法helm lint nginx(在nginx的上一层目录执行此命令)helm(一键式部署chart资源)_第27张图片

④打包helm package nginxhelm(一键式部署chart资源)_第28张图片

⑤部署

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

nginx-11

release版本号

./nginx

当前目录下的nginx的chart

--dry-run --debug

这个集群不会部署到集群中,进行参数验证,测试chart的配置的是否正确

helm(一键式部署chart资源)_第29张图片helm(一键式部署chart资源)_第30张图片

• 安装

第一种方式helm install nginx-11 ./nginx -n defaulthelm(一键式部署chart资源)_第31张图片

• 删除helm(一键式部署chart资源)_第32张图片

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

helm(一键式部署chart资源)_第33张图片

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

helm(一键式部署chart资源)_第34张图片

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

helm(一键式部署chart资源)_第35张图片

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

15、测试访问

helm(一键式部署chart资源)_第36张图片

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

①修改service类型nodeport,并且不生成ingresshelm(一键式部署chart资源)_第37张图片helm(一键式部署chart资源)_第38张图片helm(一键式部署chart资源)_第39张图片

②重新定义chart名称

helm(一键式部署chart资源)_第40张图片

③验证chart语法

helm(一键式部署chart资源)_第41张图片

④更新chart资源并访问

helm(一键式部署chart资源)_第42张图片

17、回滚

版本2取消了ingress,回滚到版本1验证是否存在ingress即可确认回滚成功与否helm(一键式部署chart资源)_第43张图片

18、上传harbor仓库

①新建项目helm(一键式部署chart资源)_第44张图片helm(一键式部署chart资源)_第45张图片②部署chart路径的识别方式helm(一键式部署chart资源)_第46张图片

③指定位置安装helm-push

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

cd ~/.local/share/helm/plugins/helm-pushhelm(一键式部署chart资源)_第47张图片

④测试

docker login -u admin -p 123456 https://hub.test.comhelm(一键式部署chart资源)_第48张图片

⑤打包更新后的nginx

helm package nginx

helm(一键式部署chart资源)_第49张图片

⑥上传到仓库

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

helm(一键式部署chart资源)_第50张图片

原因:harbor仓库是https登录的

解决:跳过tls验证

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

helm(一键式部署chart资源)_第51张图片helm(一键式部署chart资源)_第52张图片

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

helm(一键式部署chart资源)_第53张图片helm(一键式部署chart资源)_第54张图片

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

helm(一键式部署chart资源)_第55张图片

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

helm(一键式部署chart资源)_第56张图片

helm(一键式部署chart资源)_第57张图片

你可能感兴趣的:(github)