内容预知
目录
内容预知
helm相关知识
Helm的简介与了解
helm的三个重要概念
helm的安装和使用
将软件包拖入master01上
使用 helm 安装 Chart
对chart的基本使用
查看chart信息
安装chart
对chart的基本管理
helm自定义模板
在镜像仓库中拉取chart,查看chart的包结构
进行模板文件的修改,生成自定义chart
进行chart打包
利用自定义chart包进行k8s资源部署
如何对chart文件进行修改重新部署,回滚,上传harbor
如何对chart文件进行修改并且重新发布
如何进行回滚
如何上传到harbor
在helm主机上安装好push插件
在habor主机创建项目,在helm主机添加chart仓库
helm命令总结
helm常用命令
helm相关知识
Helm本质就是让K8s的应用管理(Deployment、Service等)可配置,可以通过类似于传递环境变量的方式能动态生成。通过动态生成K8s资源清单文件(deployment.yaml、service.yaml)。 然后调用 Kubectl 自动执行 K8s 资源部署。
在没使用 helm 之前,向 kubernetes 部署应用,我们要依次部署 deployment、svc 等,步骤较繁琐。 况且随着很多项目微服务化,复杂的应用在容器中部署以及管理显得较为复杂,helm 通过打包的方式,支持发布的版本管理和控制, 很大程度上简化了 Kubernetes 应用的部署和管理。
Helm 是官方提供的类似于 YUM 的包管理器,是部署环境的流程封装。
Helm的官网地址:ht/tp:// https://helm.sh
在Helm中 有三个重要的概念,分别为:Chart 、Repository 和 Release
Helm在k8s集群运用中,总的来讲其作用过程:Helm 安装 charts 到 Kubernetes 集群中,每次安装都会创建一个新的 release。你可以在 Helm 的 chart repositories 中寻找新的 chart。
helm的安装和使用
将软件包拖入/opt/helm
tar -xf helm-v3.12.0-linux-amd64.tar.gz
解压
cd linux-amd64/
mv helm /usr/local/bin/helm
helm version
查看版本
添加helm的自动补全功能,方便后续使用:
vim /etc/bashrc
source <(helm completion bash)
###helm添加chat的语法格式:
helm repo add chart仓库名 chart仓库地址
###添加常用的chart仓库############
#一个开源项目的仓库
helm repo add bitnami https://charts.bitnami.com/bitnami
#微软chart仓库,推荐使用,内容基本与官方仓库保持一致
helm repo add stable http://mirror.azure.cn/kubernetes/charts
#阿里chart仓库,应有尽有
helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
#官方仓库,国内网络问题,不太推荐应用
helm repo add incubator https://charts.helm.sh/incubator
更新和查看仓库列表
helm repo list
helm repo update
查找指定仓库里面是否包含nginx的内容。
helm search repo bitnami | grep nginx
helm show all bitnaml/nginx
查看所有信息
helm install my-nginx bitnami/nginx [-n default] #指定 release 的名字为 my-nginx,-n 指定部署到 k8s 的 namespace
helm install bitnami/nginx --generate-name #不指定 release 的名字时,需使用 –generate-name 随机生成一个名字
安装完之后会发现,service和pod都安装好了
这里面的nginx包含了deployment service pod
查看所有release
helm ls
helm list
查看指定release的状态
helm status nginx
删除指定的release
helm uninstall nginx
helm自定义模板
根据自己的需求,定义chart。然后部署到集群中。
#拉取chart 到本地目录(现在所在的目录中)
helm pull stable/mysql
#对该拉取的chart压缩包进行解压
tar xf mysql-1.6.9.tgz
由上图可以看出:一个 chart 包就是一个文件夹的集合,文件夹名称就是 chart 包的名称。
chart 是包含至少两项内容的helm软件包:
(1)软件包自描述文件 Chart.yaml,这个文件必须有 name 和 version(chart版本) 的定义
(2)一个或多个模板,其中包含 Kubernetes 清单文件:
helm create nginx
tree nginx
vim /opt/helm/nginx/values.yaml
-----line44-----
false----> true
-----line50-----
设置域名
-----line53-----
设置类型
-----line64-----
资源限制
vim nginx/Chart.yaml
apiVersion: v2
name: nginx #chart名字
description: A Helm chart for Kubernetes
type: application #chart类型,application或library
version: 0.1.0 #chart版本
appVersion: 1.16.0 #application部署版本
//打包 chart
helm lint nginx #检查依赖和模版配置是否正确
helm package nginx #打包 chart,会在当前目录下生成压缩包 nginx-0.1.0.tgz
如何部署自定义的chart
helm install nginx-11 ./nginx --dry-run --debug
nginx-11:release版本号
./nginx:当前目录下nginx的chart
--dry-run --debug:这个chart不会被部署到集群当中,参数验证,测试chart的配置是否正确。
helm install nginx ./nginx --dry-run --debug #使用 --dry-run 参数验证 Chart 的配置,并不执行安装
helm install nginx ./nginx -n default #部署 chart,release 版本默认为 1
或者
helm install nginx ./nginx-0.1.0.tgz
#可根据不同的配置来 install,默认是 values.yaml
helm install nginx ./nginx -f ./nginx/values-prod.yaml
如何对chart文件进行修改重新部署,回滚,上传harbor
vim /opt/helm/nginx/values.yaml
-----line40-----
type: NodePort
nodePort: 31000
-----line44-----
enabled: false
helm upgrade nginx nginx
进行更新
kubectl get pod,svc
helm history nginx
查看回滚点
helm rollback nginx 1
回到指定的回滚点
在harbor主机进行配置更新
-----line35-----
chart:
absolute_url: enabled
在chart中启用绝对url
mkdir -p ~/.local/share/helmplugins/helm-push
tar -xf helm-push_0.8.1_linux_amd64.tar.gz -C ~/.local/share/helmplugins/helm-push
# docker login -u admin -p 123456 https://hub.zzr.com
helm package nginx
Successfully packaged chart and saved it to: /opt/helm/nginx-0.2.0.tgz
helm push nginx-0.2.0.tgz oci://hub.zzr.com/charts --insecure-skip-tls-verify
Pushed: hub.zzr.com/charts/nginx:0.2.0
Digest: sha256:e6f4c07783fbcf201e33b4ed70e221391191fcefb4de2d637743bc10971da2b4
打开浏览器:访问http://20.0.0.64,新建项目
helm命令总结
helm repo add 仓库名 url地址 添加仓库
helm repo update 不加仓库名,就是更新所有仓库
helm repo list 仓库列表
helm repo remove 仓库名称
helm show chart stabke/nginx 查看chart信息
helm show stable/nginx 查看详细信息
helm install nginx-11 stable/nginx -n lucky-zzr
安装官网的默认版本
helm uninstall nginx-11 删除安装好的chart
helm list 查看已经安装的chart
自定义模板
helm create nginx 创建一个自定义的chart模板
values.yaml:这里会传给templates里面的yaml文件
用helm拉取nginx的两种方式
helm install nginx-11 ./nginx
helm install nginx-11 ./nginx-0.1.0.tgz
如何打包创建好的chart:
helm package nginx
回滚:
helm history nginx-11 //查看回滚点
helm rollback nginx-11 1 //指定回滚点回滚