Linux企业实战之容器(二十五)——Kubernetes(14)

Helm

  • Helm是Kubernetes 应用的包管理工具,主要用来管理 Charts,类似Linux系统的yum。

  • Helm Chart 是用来封装 Kubernetes 原生应用程序的一系列 YAML 文件。可以在你部署应用的时候自定义应用程序的一些 Metadata,以便于应用程序的分发。

  • 对于应用发布者而言,可以通过 Helm 打包应用、管理应用依赖关系、管理应用版本并发布应用到软件仓库。

  • 对于使用者而言,使用 Helm 后不用需要编写复杂的应用部署文件,可以以简单的方式在 Kubernetes 上查找、安装、升级、回滚、卸载应用程序。

在这里插入图片描述

如上图所示,helm就是之前我们搭建一个服务时,需要编辑多个yaml文件,而helm所做的事情就是将这些yaml文件打包成为一个包,这样我们需要部署应用时,只需要下载这些包,然后就可以进行部署了

  • Helm V3 与 V2 最大的区别在于去掉了tiller:

在这里插入图片描述

  • Helm的部署

    • 步骤一:下载helm的安装包,安装并且配置好环境
tar zxf helm-v3.2.0-linux-amd64.tar.gz
cd linux-amd64/
sudo cp helm /usr/local/bin/
ll /usr/local/bin/helm

echo "source <(helm completion bash)" >> ~/.bashrc

在这里插入图片描述

  • 步骤二:搜索官方helm hub chart库,添加第三方 Chart 库
helm search hub redis												#从官方搜索redis库
helm repo add stable http://mirror.azure.cn/kubernetes/charts/	    #添加第三方Chart库
helm search repo redis												#从添加进来的第三方库中来进行搜索
 helm repo add aliyun  https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
 helm search repo redis
 helm remove aliyun

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • Helm 部署应用

    • 步骤一:下载相关资源
helm search repo redis-ha -l					#在search时,加上-l会显示所有的版本
mkdir helm
helm pull stable/redis-ha
ls
tar zxf redis-ha-4.4.4.tgz -C helm

在这里插入图片描述
在这里插入图片描述

cd helm/redis-ha
ls
tree .
cat Chart.yaml

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 步骤二:部署应用
kubectl create namespace redis
kubectl get namespaces
helm install redis-ha . -n redis
支持多种安装方式:(helm默认读取~/.kube/config信息连接k8s集群)
$ helm install redis-ha stable/redis-ha	
$ helm install redis-ha redis-ha-4.4.0.tgz
$ helm install redis-ha path/redis-ha
$ helm install redis-ha https://example.com/charts/redis-ha-4.4.0.tgz

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 构建一个 Helm Chart

    • 步骤一:创建一个chart,编辑应用部署信息,做测试,将应用打包
helm create mychart
cd mychart 
ls 
tree mychart
vim values.yaml
helm lint .						#检测当前目录中是否存在错误

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

在这里插入图片描述

  • 步骤三:建立本地Chart仓库
helm repo list				#列出当前已有的仓库
helm  repo add mychart https://reg.westos.org/chartrepo/charts  #添加本地的私有仓库
cd /etc/docker/certs.d/reg.westos.org/
cp ca.crt /etc/pki/ca-trust/source/anchors/
update-ca-trust

在这里插入图片描述

==在我们的私有仓库上添加chartmuseum ==

cd /mnt/harbor
./prepare --with-chartmuseum
docker-compose up -d
docker-compose ps

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

helm repo add mychart https://reg.westos.org/chartrepo/charts  #添加本地的私有仓库
helm repo list 

在这里插入图片描述

在这里插入图片描述

  • 步骤四:安装helm-push插件,上传打包好的应用
helm plugin install https://github.com/chartmuseum/helm-push				#在线安装

我们这里选择离线安装
helm env
cd  /home/kubeadm/.local/share/helm/plugins
mkdir helm-push
tar zxf helm-push_0.8.1_linux_amd64.tar.gz -C /home/kubeadm/.local/share/helm/plugins/helm-push/

在这里插入图片描述
在这里插入图片描述

cd helm/
helm push  mychart-0.1.0.tgz mychart  -u admin -p westos
helm repo update
helm search repo mychart

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 部署mychart应用到我们当前的k8s集群

    • 步骤一:查看部署参数,部署应用到k8s集群中
helm show values mychart/mychart
helm search repo mychart
helm  install test  mychart/mychart  --debug	#这里添加的debug就是在安装时检测我们写的各个yaml是否存在错误
helm list								#查看部署的应用,一般指定默认会安装到当前的namespace下

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 步骤二:做升级和回滚
vim Chart.yaml
vim value.yaml
helm package mychart									#打包更改后的应用
helm push  mychart-0.2.0.tgz mychart  -u admin -p westos #上传
helm repo update							#做更新
helm search repo mychart				
helm search repo mychart -l					#查找mychart的所有版本

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

升级

helm upgrade test mychart/mychart
helm list
helm history test
kubectl get pod -o wide

在这里插入图片描述
在这里插入图片描述

回滚

kubectl get all
helm history test
helm rollback test 1
helm history test
kubectl get pod -o wide

在这里插入图片描述
在这里插入图片描述
卸载

helm uninstall test
helm list
kubectl get all

在这里插入图片描述

注意:我们卸载了test后,原来创建在k8s集群中的pod、RS等全部被删除,从这里我们可以看出来。在使用helm命令时,其实它就是在调用k8s的APIServer,直接读取我们的当前节点的kube/config文件,完成授权

  • 用Helm部署nfs-client-provisioner

helm search repo nfs
helm pull stable/nfs-client-provisioner
tar zxf nfs-client-provisioner-1.2.8.tgz
vim values.yaml
kubectl create namespace nfs-client-provisioner
helm install nfs-client-provisioner . -n nfs-client-provisioner
helm list -n nfs-client-provisioner
kubectl get all -n nfs-client-provisioner

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

vim pvc.yaml
kubectl create -f pvc.yaml
kubectl get pvc
kubectl get pv

在这里插入图片描述

  • Helm部署nginx-ingress应用

helm search repo nginx-ingress
helm pull stable/nginx-ingress --version 1.36.3
tar zxf nginx-ingress-1.36.3.tgz
vim value.yaml
kubectl create namespace nginx-ingress
helm -n nginx-ingress install nginx-ingress .
helm -n nginx-ingress list
kubectl get all -n nginx-ingress

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 做一个测试
vim ingress.yaml
vim deployment.yaml
vim service.yaml
kubectl apply -f ingress.yaml
kubectl apply -f deployment.yaml
deployment.yaml  service.yaml

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在classroom上来添加解析,并且进行访问
在这里插入图片描述

  • 部署kubeapps应用,为Helm提供web UI界面管理

    • 步骤一:添加仓库,拉取应用的压缩包,修改values.yaml文件内容
helm repo add bitnami https://charts.bitnami.com/bitnami
helm search repo kubeapps -l
helm pull bitnami/kubeapps --version 3.4.3
tar zxf kubeapps-3.4.3.tgz
cd kubeapps
vim values.yaml

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 步骤二:部署应用到指定的namespace
kubectl create namespace kubeapps
kubectl get namespace
helm -n kubeapps install kubeapps .
kubectl -n kubeapps get all
kubectl -n kubeapps get pod
kubectl create serviceaccount kubeapps-operator -n kubeapps
kubectl create clusterrolebinding kubeapps-operator --clusterrole=cluster-admin --serviceaccount=kubeapps:kubeapps-operator
 

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值