k8s包管理工具helm简介及基本使用

这篇具有很好参考价值的文章主要介绍了k8s包管理工具helm简介及基本使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、helm是什么?有哪些版本 ?有什么作用?

 helm是k8s的包管理工具,类似于centos 的yum;

 当前版本有helm2、helm3 相对来说helm3功能更加完善,使用更加方便

主要作用是相较于传统的k8s部署应用需要手工编排yaml文件(比如Deployment.yml、service.yml、ingress.yml等),使用helm可以快速部署应用。

helm3与helm2 的区别在于helm3删除了tiller、支持release在不同的命名空间重用,可以将chart推送到私有仓库中。

官方详细介绍:Helm | 快速入门指南

二、helm的核心概念

helm:客户端命令行工具,用于chart的创建、打包、发布与管理

chart: helm管理的包,包含k8s集群内部运行的应用程序,工具或服务的资源定义。相似于centos yum所管理的rpm包。是一系列资源文件的集合

repository: 用于存放chart的地方,类似于yum仓库。可以使用官方的仓库,也可以自定义私有仓库。

release: 是 k8s集群中运行的chart实列,chart可以在k8s集群中反复部署,每次部署都会创建一个新的release。

三、如何安装helm

1 安装helm客户端

heml软件包获取网址

https://github.com/helm/helm/releases (在这个网址下获取自己想要的安装包,下载极慢,耐心等待)自己有vpn的,使用自己vpn下载。解决办法是下面这个,使用其他地址下载

https://repo.huaweicloud.com/helm/

  wget https://repo.huaweicloud.com/helm/v3.5.4/helm-v3.5.4-linux-amd64.tar.gz

tar xf helm-v3.5.4-linux-amd64.tar.gz

mv linux-amd64 helm

mv  helm/helm   /usr/local/bin/

到这helm已经安装完毕,接下来是helm的基本使用。

四、配置chart仓库

微软仓库(http://mirror.azure.cn/kubernetes/charts/)

阿里云仓库(https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts )

推荐仓库(https://charts.bitnami.com/bitnami  )

添加仓库  :helm repo add 自定义仓库名 仓库地址  (仓库地址就是上面几个网站地址)

删除仓库 : helm repo remove 仓库名    

更新仓库 : helm repo update   

查看仓库 : helm repo list

搜索仓库的chart: helm  search repo chart名称

五、快速部署应用(以nginx为例测试)

这里是已经在添加仓库的条件下执行

1、根据需要搜索自己需要的chart(以nginx为例子)

[root@master01 ~]# helm search repo nginx

2、安装对应仓库的chart

[root@master01 ~]# helm install nginx bitnami/nginx(说明helm install 自定义release名  仓库名/chart名 )

3、查看安装的release

[root@master01 ~]# helm list

[root@master01 ~]# helm status nginx

4、查看k8s集群pod与svc情况,发现一个nginx pod已经运行,同时nginx service也生成,svc的类型为LoadBalancer,可以使用kubectl edit svc 命令修改。尽管service类型为LoadBalancer,但是LoadBalancer也只是在NodePort的基础上增加外部负载均衡器,我仍然可以使用NodePort的方式访问,可以看到nginx的首页欢迎页面

helm版本,kubernetes,docker,运维,云原生

 helm版本,kubernetes,docker,运维,云原生

小总结:正常情况下,如果要使用k8s部署一个简单的web服务作测试,最少需要自己手动编排deployment.yml文件,service.yml文件。本案列中只是helm install命令装了一个chart包,就实现了相同的效果。相对来说不那么繁琐

  1. 卸载安装的release实列,发现对应的pod与svc已经消失

helm版本,kubernetes,docker,运维,云原生

六、自定义chart部署应用

1、创建自定义chart并查看目录结构

  [root@master01 ~]# helm create nginx   #创建一个名为apache的自定义chart

  [root@master01 ~]# tree nginx     #查看自定义chart的目录结构

helm版本,kubernetes,docker,运维,云原生

charts目录,默认为空,包含chart的子目录,暂时用不到。

Chart.yml 是自定义chart的元数据,即chart的一些属性信息,包括chart的名称,描述,类型,版本与应用版本

values.yml 包含了chart的所有可配置项及其默认值,在安装chart时传递的配置项会覆盖默认值

templates目录,这个目录中包含的是k8s资源申明的模板文件,在安装时,k8s会将模板文件与配置项的值结合起来,得到k8s的资源定义,并应用到k8s上,

  1. 编辑文件

Chart.yml存放的是chart的描述信息,可以不用更改

这里是以nginx为例子,删除或者移动template模板下的所有资源文件到某个目录,原因在于始终不是自己写的,还需要将里面的变量与values.yml文件里面的值意义对应,有点烦琐。还不如自己手动命令创建资源文件再修改。

[root@master01 ~]# helm create nginx

[root@master01 ~]# rm -rf nginx/templates/*

创建nginx.deployment.yml及nginx.service资源文件

[root@master01 ~]# kubectl  create  deployment  nginx-deployment --image=nginx

[root@master01 ~]# kubectl  expose deployment  nginx-deployment --port=80 --target-port=80  --type=NodePort --dry-run -o yaml>>/root/nginx/templates/nginx.service.yml

[root@master01 ~]# kubectl  create  deployment  nginx-deployment --image=nginx:v1.23.3 --dry-run -o yaml >>/root/nginx/templates/nginx.deployment.yml

[root@master01 ~]# kubectl  delete  deployments.apps nginx-deployment

此时相应的deployment资源文件及service文件已经在templates模板目录下生成

[root@master01~]# helm lint nginx # 使用命令检测是否有语法错误,没有错误才可以安装或者打包

helm版本,kubernetes,docker,运维,云原生

安装自定义chart

[root@master01 ~]# helm install mynginx nginx  

#mynginx是自定义chart名称,nginx是自定义chart所在的目录

查看pod及svc情况

helm版本,kubernetes,docker,运维,云原生

如果chart内容有更新,直接使用 helm upgrade chart名称进行更新

使用helm实现资源文件的复用,通过在values.yml文件中定义变量及值,在templates模板下的资源文件中引用变量

总的来说,服用简单的deployment文件或者service文件,只是名称,镜像、标签、版本、端口、副本数量等常见配置不一样,其他地方资源文件并没有什么差异。

变量的引用 {{.Values.变量名称}}

删除之前创建的release

[root@master01 ~]# helm list

[root@master01 ~]# helm uninstall mynginx

仍然以nginx为例子

查看编辑的deployment、service及values.yml文件

[root@master01 ~]# cat nginx/templates/nginx.deployment.yml

apiVersion: apps/v1

kind: Deployment

metadata:

  creationTimestamp: null

  labels:

    app: nginx-deployment

  name: {{.Release.Name}}-deployment

spec:

  replicas: 1

  selector:

    matchLabels:

      app: {{.Values.label}}

  strategy: {}

  template:

    metadata:

      creationTimestamp: null

      labels:

        app: {{.Values.label}}

    spec:

      containers:

      - image: {{.Values.image}}

        name: nginx

        resources: {}

status: {}

[root@master01 ~]# cat nginx/templates/nginx.service.yml

apiVersion: v1

kind: Service

metadata:

  creationTimestamp: null

  labels:

    app: {{.Values.label}}

  name: {{.Release.Name}}

spec:

  ports:

  - port: 80

    protocol: TCP

    targetPort: 80

  selector:

    app: {{.Values.label}}

  type: NodePort

status:

  loadBalancer: {}

[root@master01 ~]# cat nginx/values.yaml

image: nginx

label: nginx

测试多次安装releae实列

[root@master01 ~]# helm install test-nginx  nginx

[root@master01 ~]# helm install mynginx nginx

查看pod,svc

helm版本,kubernetes,docker,运维,云原生

七、使用harbor仓库作为 helm chart 仓库

第一步:安装harbor仓库,在安装harbor仓库的时候加上--with-chartmuseum选项,即可以使用harbor作为chart仓库

habor仓库的安装参考:

http与https两种方式部署harbor私有仓库_xhredeem的博客-CSDN博客_https nodeport部署harbor

# 这里在 harbor 服务器上操作

# cd /usr/local/harbor/

# ./install.sh --with-chartmuseum

第二步:安装helm插件(官网下载地址如下,我下载了0.10.1版本并上传到自己机器)

Releases · chartmuseum/helm-push · GitHub

查看helm插件的环境变量,helm插件的位置应当位于/root/.local/share/helm/plugins下

helm版本,kubernetes,docker,运维,云原生

创建目录并解压

[root@master01 ~]# mkdir -p /root/.local/share/helm/plugins/helm-push

[root@master01 ~]# cp helm-push_0.10.1_linux_amd64.tar.gz /root/.local/share/helm/plugins/helm-push

[root@master01 ~]# cd /root/.local/share/helm/plugins/helm-push

[root@master01 helm-push]# tar xf helm-push_0.10.1_linux_amd64.tar.gz

查看helm插件是否安装成功

[root@master01 helm-push]# helm plugin list

helm版本,kubernetes,docker,运维,云原生

第三步:在harbor仓库新建自定义名称的新建项目并添加为helm私有仓库(这里我自定义mychart新建项目)

helm版本,kubernetes,docker,运维,云原生

[root@master01 helm-push]# helm repo add  chartrepo --username=admin --password=Harbor12345 http://192.168.11.138:80/chartrepo/mychart

harbor的用户名密码以及chartrepo是必须的

helm版本,kubernetes,docker,运维,云原生

第五步:上传自定义chart到harbor私有仓库(注意使用cm-push不要使用push)

打包自定义chart包

[root@master01 ~]# helm package nginx

helm版本,kubernetes,docker,运维,云原生

将自定义chart包推送到仓库

[root@master01 ~]# helm-cm-push nginx-0.1.0.tgz chartrepo

查看harbor仓库已经推送成功

helm版本,kubernetes,docker,运维,云原生

推送成功以后在仓库搜索并没有发现chartrepo仓库下又自定义chart,是因为没有更新仓库

helm版本,kubernetes,docker,运维,云原生

更新仓库再次查看,在第二行可以看到上传到自定义仓库chartrepo的chart,名为chartrepo/nginx

[root@master01 ~]# helm repo update

helm版本,kubernetes,docker,运维,云原生

删除当前自定义nginx chart压缩包,测试从自定义仓库拉取

[root@master01 ~]# rm -rf nginx-0.1.0.tgz

拉取chart压缩包到本地,查看目录下已经有nginx的chart压缩包

[root@master01 ~]# helm pull chartrepo/nginx

[root@master01 ~]# ls | grep nginx-0.1.0.tgz

文章来源地址https://www.toymoban.com/news/detail-622234.html

到了这里,关于k8s包管理工具helm简介及基本使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • k8s之包管理器Helm

    helm的作用就是通过打包的方式,把deployment service ingress这些打包在一块,一键式的部署服务。类似yum官方提供的一个类似与安装仓库的功能,可以实现一键化部署应用。 ●Chart:Helm 的软件包,采用 TAR 格式。是创建一个应用的信息集合,包括各种 Kubernetes 对象的配置模板、参

    2024年01月23日
    浏览(43)
  • 第27关 在K8s集群上使用Helm3部署最新版本v2.10.0的私有镜像仓库Harbor

    ------ 课程视频同步分享在今日头条和B站 大家好,我是博哥爱运维。 在前面的几十关里面,博哥在k8s上部署服务一直都是用的docker hub上的公有镜像,对于企业服务来说,有些我们是不想把服务镜像放在公网上面的; 同时如果在有内部的镜像仓库,那拉取镜像的速度就会很快

    2024年02月01日
    浏览(49)
  • Kubernetes/k8s之包管理器helm

    在没有helm之前,我们要部署一个服务,deployment、service ingress 的作用通过打包的方式。把deployment、service ingress打包在一块,一键式部署服务。类似于yum功能。是官方提供的类似安装仓库的功能,可以实现一键化部署应用 helm的概念 由三个部分组成 chart:helm的软件包,部署包,

    2024年01月23日
    浏览(37)
  • 云原生Kubernetes:简化K8S应用部署工具Helm

    目录 一、理论 1.HELM ​编辑 2.部署HELM2 3.部署HELM3(2to3方式) 4.部署HELM3(单独安装) 二、实验 1.部署 HELM2 2.部署HELM3(2to3方式) 3.部署HELM3(单独安装) 三、问题 1.api版本过期 2.helm初始化报错 3.pod状态为ImagePullBackOff 4.helm 命令显示 no repositories to show 的错误 5.Helm安装报错

    2024年02月07日
    浏览(60)
  • 【云原生,k8s】Helm应用包管理器介绍

    目录 一、为什么需要Helm? (一)Helm介绍 (二)Helm有3个重要概念: (三)Helm特点 二、Helm V3变化 (一)架构变化 (二)自动创建名称空间 三、Helm应用包管理器部署 1、部署Helm客户端工具 2、Helm常用命令 3、配置国内的Chart仓库 4、使用chart部署一个Nginx应用 5、使用chart部

    2024年02月12日
    浏览(33)
  • k8s helm安装使用

    1.前言 Helm 是一个 Kubernetes 包管理工具,它的作用是简化 Kubernetes 应用程序的部署和管理。Helm 允许您将 Kubernetes 应用程序打包为 chart,chart 是一组预定义的 Kubernetes 对象模板,包括 Deployment、Service、Ingress 等。使用 Helm,您可以轻松地将 chart 安装到 Kubernetes 集群中,并在需要

    2024年02月13日
    浏览(40)
  • K8S中使用helm安装MinIO

    使用helm部署MinIO分为两部分 helm部署MinIO operator,用来管理tenant(K8S集群中只能部署一个) helm部署MinIO tenant,真实的MinIO Cluster(K8S集群中可以部署多个) 使用helm部署到K8S集群,则需要考虑如何暴露服务的问题。官方文档helm安装步骤是通过修改service nodePort配置,暴露服务。

    2024年01月20日
    浏览(61)
  • 如何使用装rancher安装k8s集群(k8s集群图形化管理工具)

    kubernetes集群的图形化管理工具主要有以下几种: 1、 Kubernetes Dashborad: Kubernetes 官方提供的图形化工具 2、 Rancher: 目前比较主流的企业级kubernetes可视化管理工具 3、各个云厂商Kubernetes集成的管理器 4、 Kuboard: 国产开源Kubernetes可视化管理工具 本篇我们来学习 主流的企业级kube

    2024年02月11日
    浏览(38)
  • 【实战】使用Helm在K8S集群安装MySQL主从

    K8S对于云原生部署有着至关重要的作用,几乎所有的应用和中间件都可以部署在K8S,让其帮助我们进行管理。一般情况下我们推荐数据库不使用容器化部署,但是在某些场合为了方便管理也可以采用该种方式。今天我们就用在K8S集群部署MySQL,仅当作学习学习,在生产环境谨

    2024年02月22日
    浏览(50)
  • helm、k8s dasboard、rancher、kubesphere介绍及使用

    简单介绍 helm 部署使用 及 k8s dashboard 安装部署 简单介绍 rancher 和 Kubesphere k8s 集群管理平台部署及使用 对比 rancher 和 kubesphere 两款 k8s 集群集群管理工具提出自己的见解 下载helm二进制包 官方下载地址 1.1.1 添加仓库 Dashboard 支持 Kubeconfig 和 Token 两种认证方式,这里选择Token认

    2023年04月08日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包