k8s实验-helm v3的配置和使用

网友投稿 275 2022-09-08

k8s实验-helm v3的配置和使用

helm通过将各种kubernets资源打包,类似于linux的apt-get或者yum工具,来完成复杂的软件安装和部署,并且支持部署实例的版本管理等,大大简化了在k8s上部署和管理的应用的复杂程度。

架构和组件

chart:

chart就是helm package,包含了一个k8s app应用运行起来的所有要素,比如service, deployment, configmap, serviceaccount, rbac, 等,这些要素都是以template文件的形式存在,再结合values文件,最终渲染出能够被k8s执行的yaml文件,通常是以.tgz压缩包的形式提供,也可以是文件夹形式.

repository:

仓库是charts的集合,方便进行分享和分发。下面是官网仓库和阿里云仓库的地址,

​​chart在kubernetes的一个运行实例,你可以用不同的release name多次安装同一个chart,比如:当集群中需要多个redis实例,你可以使用不同的配置文件安装redis chart。

helm与linux软件包对比


helm

apt

安装包

chart

deb

仓库

helm repository

apt repository/mirror

操作系统

kubernetes

linux

包依赖

helm dependency

deb dependency

包管理工具

helm client

apt

运行流程

从chart仓库中获取chart;使用者配置自己的values文件,根据自己的运行环境对values进行修改;默认values文件和使用者values文件会进行一个merge,形成最终的values文件;使用最终的values文件,渲染chart的template,形成可以被kubernetes执行的yaml;调用kube apply提交yaml到kubernetes

helm的安装使用

推荐通过官方脚本安装

$ curl -fsSL -o get_helm.sh chmod 700 get_helm.sh$ ./get_helm.sh

chart仓库使用

#删除默认源helm repo remove stable#添加国内源,使用阿里云helm repo add stable repo list#搜索可部署的chart列表helm search repo stable#

相关仓库搜索命令

查看已经添加的仓库:helm repo list搜索仓库有哪些chart:helm search repo stable更新仓库列表到本地:helm repo update搜索redis:helm search repo redis查看redis chart详情:helm show chart stable/redis查看redis values(values:相当于chart的配置文件):helm show values stable/redis

chart结构说明

helm使用的包格式被称为chart,它是描述所有k8s资源的文件集合.一个完整的chart用于部署一个完整的应用.

chart的目录结构

wordpress/ Chart.yaml # 包含了chart信息的YAML文件 LICENSE # 可选:包含了char许可证的文本文件 README.md # 可选:README文件 values.yaml # chart的默认配置 values.schema.json # 可选:JSON结构values.yaml charts/ # 包含了chart依赖的其他chart crds/ # 自定义资源的定义 templates/ # 模板目录,与values.yaml组合完整的资源对象配置文件 # templates/NOTES.txt # 可选:包含了简要使用说明的文本文件-----------------------------------

chart的yaml文件说明

apiVersion: chart的API版本号,必须name: chart名称,必须version: 应用的版本号,必须kubeVersion: 兼容的kubernetes版本号范围,可选description: 应用描述,可选 type: chart类型,可选keywords: - 关于应用的一组关关键字,可选home: 关于应用的一组关键字,可选sources: - 应用源码的URL地址列表,可选dependencies: # 依赖的一组其他chart信息,可选 - name: chart的名称,如nginx version: chart的版本,如1.2.3 repository: 仓库URL( condition: YAML格式,可选,用于启用或者禁用chart,例如subchart1.enabled) tags: # 可选 - 用于启用或者禁用一组chart的tag enabled: 可选,启用的bool值,确定是否加载chart import-values: # 可选 - ImportValue : 将在子chart中设置的变量和值导入父chart中 alias: 可选,在chart中使用别名,需要多次添加相同的chart时会很有用maintainers: # 可选 - name: 维护者的名称,每个维护者都需要 email: 维护者的邮箱,每个维护者都需要 url: 维护则的URL,每个维护者都需要icon: 用作icon的svg或者png图片的url地址,可选appVersion: 包含的应用版本,可选deprecated: 设置该chart是否已被启用,可选,bool值annotations: example: annotation列表,可选

其他字段忽略.对其中的每个字段的详细说明参考官方说明.

操作实验

从远程仓库部署mariadb

举例,从远程仓库部署一个maraidb应用

自定义创建chart

1 生成空的charts

mkdir -p /root/.helm/cache/archivecd /root/.helm/cache/archivehelm create mychart

注意,该命令能够在当前目录中创建一个名为mychart的图表,建议进入chart下载默认路径创建,默认路径为/root/.helm/cache/archive

确认charts文件目录结构

确认charts元数据文件:

cat Chart.yaml

查看values.yaml为文件,可以看到定义了一个可以直接安装容器化Nginx应用的Charts

2 修改charts以部署自定义服务

vim values.yaml

3 检查chart是否有语法错误,注意在chart所在的目录运行

helm lint mychart

没有报错

4 使用--dry-run和--debug参数调试chart包

helm install --set name=myapp mychart --dry-run --debug ./mychart

5 确认无误后,再次执行命令

helm install --set name=myapp mychart ./mychart/

6 查看helm状态

helm status mychar

7 通过status输出的notes提示运行相关验证服务​

export POD_NAME=$(kubectl get pods --namespace default -l "app.kubernetes.io/name=mychart,app.kubernetes.io/instance=mychart" -o jsnotallow="{.items[0].metadata.name}") export CONTAINER_PORT=$(kubectl get pod --namespace default $POD_NAME -o jsnotallow="{.spec.containers[0].ports[0].containerPort}") echo "Visit to use your application" kubectl --namespace default port-forward $POD_NAME 8080:$CONTAINER_PORT

8 通过helm package打包

helm package mychart

打包完成后,可以使用本地.tgz文件进行helm install命令部署了

helm install mychart mychart-0.1.0.tgz

同时,可以将打包好的chart上传到chart仓库进行保存,供后续分发和部署使用.

升级或者回退一个应用

1 打包自定义应用,修改Chart.yaml文件,将版本号从0.1.0修改为0.2.0,然后使用helm package打包

cd /roo/.helm/cache/archivevi mychart/Chart.yaml

helm package mychart

2 使用 helm upgrade已经部署的release,可以通过--version来指定版本号,如果没有版本号,则自动升级到最新版本.

helm list #查询

3 升级和回退

helm upgrade mychart local/mycharthelm rollback mychart # 查看release历史helm history myapp

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:奚梦瑶不受待见?张含韵被恶意代拍?林心如营销失败?
下一篇:【K8s学习第三篇】K8s集群管理工具kubectl
相关文章

 发表评论

暂时没有评论,来抢沙发吧~