k8s的helm

1、在没有helm之前,部署deployment、service、ingress等等

2、helm的作用:通过打包的方式,deployment、service、ingress这些打包在一块,一键部署服务、类似于yum功能

3、helm:官方提供的一种类似于仓库的功能,可以实现一键化部署应用

(1)helm自带回滚功能

4、helm的组件

chart

helm的软件包:包含部署包deployment,service包,ingress等等(定义好的yaml资源)类似于yum的rpm包

release

版本/在安装过程中给部署的应用起一个名字

repository

仓库(yaml资源的保存地址):提供一个服务器,这个服务器当中包含chart资源

5、helm的版本

(1)helm2(已淘汰)
(2)helm3:纯命令行方式(目前使用)

6、部署helm

(1)部署软件
tar -xf helm-v3.12.0-linux-amd64.tar.gz
mv helm /usr/local/bin/helm
k8s的helm_第1张图片

(2)配置自动补齐

k8s的helm_第2张图片

(3)部署仓库
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(官网)

k8s的helm_第3张图片

(4)仓库(repo)的相关命令
①查看有哪些仓库:helm repo list

k8s的helm_第4张图片

②更新仓库:helm repo update

k8s的helm_第5张图片

③查找指定仓库中是否有nginx的yaml资源:helm search repo bitnami | grep nginx

k8s的helm_第6张图片

(5)查看指定chart的一般信息:helm show chart bitnami/nginx

(6)查看指定chart的所有信息:helm show all bitnami/nginx

k8s的helm_第7张图片

7、部署nginx实例

(1)查找指定仓库中是否有nginx的yaml资源:helm search repo bitnami | grep nginx

k8s的helm_第8张图片

(2)安装:
①指定release名称创建:helm install my-nginx bitnami/nginx

helm install

安装

my-nginx

release安装的名称或者版本

bitnami/nginx

bitn仓库名,nginx就是chart一系列yaml资源的集合

-n default

指定命令空间

k8s的helm_第9张图片

k8s的helm_第10张图片

②随机生成release名称创建:helm install bitnami/nginx --generate-name

k8s的helm_第11张图片

(3)访问

k8s的helm_第12张图片

(4)修改service的类型
kubectl edit svc my-nginx

k8s的helm_第13张图片

k8s的helm_第14张图片

(5)删除:helm uninstall my-nginx

k8s的helm_第15张图片

(6)查看本机所有基于helm安装的release:helm ls/helm list

8、helm自定义模版:根据需求定义chart

(1)查看chart的模版
①拉取mysql的chart包:helm pull stable/mysql
tar -xf mysql-1.6.9.tgz

k8s的helm_第16张图片

②安装tree:yum -y install tree

k8s的helm_第17张图片

k8s的helm_第18张图片

(2)自定义nginx的chart:helm create nginx

k8s的helm_第19张图片

charts

用于存储依赖环境,如果这个chart依赖于其他的chart,依赖文件保存在这个目录

chart.yaml

chart的元数据文件,包含了这个chart的名称,版本,维护者信息等等

templates

包含清单模版的目录

deployment.yaml

部署应用的模版文件

helpers.tpl

帮助文档,告诉用户如何定义模版的值

hpa.yaml

定义了应用程序副本数的扩缩容行为

ingress.yaml

定义了外部流量如何转发到应用程序

NOTES.txt

注意事项

serviceaccou.yaml

应用程序的服务账号

service.yaml

集群内部的访问

test test-connection.yaml

测试的目录和文件,部署完chart之后,用来测试的文件

values.yaml

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

(3)修改配置文件
①vim Chart.yaml

k8s的helm_第20张图片

②修改核心文件:vim values.yaml

k8s的helm_第21张图片

k8s的helm_第22张图片

k8s的helm_第23张图片

(4)验证语法是否正确:helm lint nginx

k8s的helm_第24张图片

(5)打包chart:helm package nginx

k8s的helm_第25张图片

(6)检测:helm install nginx-1 ./nginx --dry-run --debug

helm install

安装

nginx-1

release版本号

./nginx

当前目录下nginx的chart

--dry-run --debug

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

k8s的helm_第26张图片

k8s的helm_第27张图片

(7)部署安装
①第一种:基于目录安装:helm install nginx-1 ./nginx -n default

k8s的helm_第28张图片

k8s的helm_第29张图片

删除(一键删除):helm uninstall nginx-1

②第二种:基于压缩包安装:helm install nginx-1 /opt/helm/nginx-0.1.0.tgz -n default

k8s的helm_第30张图片

k8s的helm_第31张图片

(8)配置映射

k8s的helm_第32张图片

(9)安装ingres
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

k8s的helm_第33张图片

k8s的helm_第34张图片

(10)访问测试

k8s的helm_第35张图片

9、修改chart之后重新部署(更新)

(1)修改核心文件values.yaml

k8s的helm_第36张图片

(2)修改service文件

k8s的helm_第37张图片

(3)修改版本

k8s的helm_第38张图片

k8s的helm_第39张图片

(4)升级:helm upgrade nginx-1 nginx

k8s的helm_第40张图片

(5)访问测试

k8s的helm_第41张图片

10、回滚

(1)查看版本:helm history nginx-1

(2)回滚:helm rollback nginx-1 1

11、上传harbor仓库

(1)创建项目

k8s的helm_第42张图片

k8s的helm_第43张图片

(2)修改配置文件(部署chart的识别路径的方式)

k8s的helm_第44张图片

k8s的helm_第45张图片

(3)配置安装包
mkdir -p ~/.local/share/helm/plugins/helm-push
tar -xf helm-push_0.8.1_linux_amd64.tar.gz -C ~/.local/share/helm/plugins/helm-push

(4)登录仓库:docker login -u admin -p 123456 https://hub.test.com

k8s的helm_第46张图片

(5)打包:helm package nginx

(6)上传仓库:
helm push nginx-0.2.0.tgz oci://hub.test.com/charts --insecure-skip-tls-verify

k8s的helm_第47张图片

(7)拉取chart包:helm pull oci://hub.test.com/charts/nginx --version 0.2.0 --insecure-skip-tls-verify

k8s的helm_第48张图片

(8)安装:helm install nginx-2 ./nginx-0.2.0.tgz

k8s的helm_第49张图片

(9)删除仓库:helm repo remove aliyun

k8s的helm_第50张图片

12、总结

1helm:一键部署微服务的工具,可以跳过繁琐的自定义yaml的过程,一键式的拉取和部署好所有自定义或者模版定义的服务
2helm的常用命令

添加仓库

helm repo add 仓库名 url地址

更新所有仓库

helm repo update 不加仓库名

查看仓库列表

helm repo list

删除仓库

helm repo remove 仓库名

查看指定仓库中chart信息

helm show chart stable/nginx

查看指定仓库中chart的详细信息

helm show all stable/nginx

安装chart(官网的默认版本)

helm install nginx stable/nginx -n lucky-cloud

删除安装好的chart

helm uninstall nginx

查看已安装的chart

helm list

创建自定义的chart模版

helm create nginx

安装自定义chart

helm install nginx ./nginx

helm install nginx ./nginx-0.1.0.tgz

打包创建好的chart

helm package nginx

回滚

helm history nginx

helm rollback nginx 1

3values.yaml:这里的值会传给templates里面的yaml文件

你可能感兴趣的:(kubernetes,linux,容器)