文章目录
- 一、为什么需要Helm
- 二、Helm相关概念介绍
- 三、Helm安装
- 四、Helm指令介绍
- 五、Helm创建tomcat
- 六、Helm创建tomcat其他方式
- 七、Helm创建redis
 
一、为什么需要Helm
k8s部署:k8s平台部署的服务都是由资源文件描述组成,传统的k8s部署应用需要手工编排yaml文件。编写完,然后通过kubectl apply -f xxx.yaml进行部署。
缺点:对于一个复杂的系统,随着服务的增多,yaml配置文件越来越多,甚至如果要更新服务,需要不断维护资源文件,较为杂乱。
Helm优点:可以统一管理这些资源文件,而且提供了kubernetes上的软件部署,删除,升级, 回滚应用的强大功能
二、Helm相关概念介绍
-  helm:命令行客户端工具,主要用于 Kubernetes 应用中的 chart 的创建、打包、发布和管理。 
-  Chart:目录或者压缩包,一系列用于描述 k8s 资源相关文件的集合,比方说我们部署 nginx,需要deployment的yaml,需要 service 的 yaml,这两个清单文件就是一个 helm 程序包,在 k8s 中把这些yaml 清单文件叫做 chart 图表。 
-  repository:存放 chart 图表的仓库,提供部署 k8s 应用程序需要的那些 yaml 清单文件 
-  Release:基于 Chart 的部署实体,一个 chart 被 Helm 运行后将会生成对应的一个 release;将在k8s 中创建出真实运行的资源对象 
-  helm主要工作 1)从头开始创建新的chart 2)将chart 打包成归档(tgz)文件 3)与存储chart的仓库进行交互 4)在现有的Kubernetes集群中安装和卸载chart 5)管理与Helm一起安装的chart的发布周期 
三、Helm安装
-  下载helm:https://repo.huaweicloud.com/helm/v3.5.4/helm-v3.5.4-linux-amd64.tar.gz 
-  创建文件夹:mkdir /opt/helm 
-  上传到/opt/helm 
-  解压:tar -xvf helm-v3.5.4-linux-amd64.tar.gz 
-  将解压的文件移到/usr/local/bin: mv /opt/helm/linux-amd64/helm /usr/local/bin 
-  查看版本:helm version 
  
-  添加仓库 ps:比较慢,耐心等待 #官方仓库: helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx #添加微软仓库 helm repo add azure http://mirror.azure.cn/kubernetes/charts/ #添加阿里云仓库 helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts #添加chat仓库 helm repo add bitnami https://charts.bitnami.com/bitnami
-  查询仓库列表:helm repo list 
  
-  更新所有仓库:helm repo update 
四、Helm指令介绍
- 添加仓库:helm repo add 自定义库名 仓库地址
- 查看仓库:helm repo list
- 删除仓库:helm repo remove 自定义库名
- 更新仓库:helm repo update
- 搜索chart:helm search repo 包名
- 拉取chart到本地:helm pull
- 本地创建新的chart:helm create
- 查看 chart 信息:helm show chart 包名
- 管理chart依赖:helm dependency
- 安装chart:helm install
- 列出所有release:helm list
- 删除release:helm delete 名字
- 检查chart配置是否有误:helm lint
- 打包本地 chart:helm package
- 回滚release到历史版本:helm rollback
- 卸载release:helm uninstall
- 升级release:helm upgrade
五、Helm创建tomcat
-  去仓库查找nginx:helm search repo tomcat 
-  创建chart:helm create tomcat 
-  进入:cd tomcat 
-  目录文件详解 ├── charts:依赖其他包的charts文件 Chart.yaml :该chart的描述文件,包括ip地址,版本信息等 ├── templates:存放k8s模板文件目录 │ ├── deployment.yaml:创建k8s deployment资源的yaml 模板 │ ├── _helpers.tpl :下划线开头的文件,可以被其他模板引用 │ ├── hpa.yaml:配置服务资源CPU 内存 │ ├── ingress.yaml :ingress 配合service域名访问的配置 │ ├── NOTES.txt :说明文件,helm install之后展示给用户看的内容 │ ├── serviceaccount.yaml │ ├── service.yaml :kubernetes Serivce yaml模板 │ └── tests │ └── test-connection.yaml └── values.yaml #给模板文件使用的变量 ps:deployment.yaml、service.yaml这些文件的内容,和我们平时创建pod和service时编写的yaml文件类似,不同之处在于很多配置的值并非固定,而是用变量代替了。而变量,则是在values.yaml种定义的 
-  修改参数:vi value.yaml service: type: NodePort port: 80
-  安装对应仓库的chart:helm install tomcat azure/tomcat -f values.yaml 
-  查看:helm list 
  
-  查看pod:kubectl get pod 
  
-  查看访问地址:kubectl get svc 
  
-  往tomcat里面写入首页数据 
 1)进入pod:kubectl exec -it tomcat-bf4bc978c-97fhx bash
 2)创建文件夹: mkdir webapps/ROOT
 3)写入文件:echo “helm test1” > webapps/ROOT/index.jsp
-  访问:http://192.168.248.10:30511/ 
  
六、Helm创建tomcat其他方式
-  可以使用–set来配置value.yaml的参数:helm install tomcat azure/tomcat --set service.type=NodePort 
-  可以先下载包,后配置 1)下载:helm pull azure/tomcat 2)解压:tar -xvf tomcat-0.4.3.tgz 3)修改配置:vi tomcat/values.yaml service: name: http type: NodePort externalPort: 80 internalPort: 80804)启动: helm install tomcat tomcat ps:后面那个tomcat是指tomcat文件夹 
七、Helm创建redis
-  对外提供 NodePort访问helm install redis bitnami/redis --set global.storageClass=managed-nfs-storage --set global.redis.password=ffcsict123 --set architecture=standalone --set master.service.type=NodePort --set master.service.nodePorts.redis=30919 --version 17.4.3



















