首页 > 其他分享 >helm介绍

helm介绍

时间:2023-09-18 17:02:54浏览次数:34  
标签:apps chart 介绍 operator etcd helm k8s

Helm基础应用

helm是个包管理工具,类似Linux操作系统。Ubuntu的apt或者centos yum的包管理工具,helm就是u我们给k8s集群加了一个对应的仓库,然后用helm命令行装软件包,通过helm命令装,他会直接装在你的k8s集群里面去,helm属于一个k8s集群的包管理工具

15年年底发布的,目前三个三个版本v1 v2 v3 ,v1 和v2 已经很少用了,直接用v3

helm概念:

我们自己构建helm仓库的时候:有个chart的概念

Chart

chart就是helm的程序包,一个chart就是一个包,相当于rpm 或者deb包,chart本身包含了一个包所依赖的所有东西,对应的安装包安装文件,还有对应的仓库数据库之类的,一个chart相当于一个包 rpm或者deb包

Repository

集中存储和分发chart的仓库,类似于yum仓库或者apt仓库,类似docker的harbor

我们要自己做这个仓库,自己做的chart要放到这个仓库里面去

Config

配置信息,一个chart安装实例化安装运行时使用的配置信息

Release

Chart实例化配置后运行于Kubernetes集群中的一个应用实例;在同一个集群上,一个 Chart可以使用不同的Config重复安装多次,每次安装都会创建一个新的Release(发布),我们装一个chart一个程序本身安装一个会对应一个release 可以理解为一个版本,如果更新了会装另外一个版本,就是你当前安装到你群集上的一个应用程序的版本,一个chart的一个版本

说白了就是把我们写的deployment的yaml 文件 service文件 对应的配置还有依赖的信息集中起来,然后有对应的命令行给我们生成对应的数据库(一个本地数据库)然后helm有个create 会给我们自动创建对应的包名称。

helm介绍_linux

主流版本v2 v3 现在v2用的很少了,以前v2的版本里面helm本身有个客户端以及与kubernetes的 api交互的服务端叫Tiller,Helm主要由与用户交互的客户端、与Kubernetes API交互的服务端Tiller和Chart仓库(repository)组成,v3已经没有Tiller了,

helm客户端从对应的chart仓库下载东西,然后把他安装部署到k8s集群上去,k8s集群会有个类似Tiller的服务器,Tiller负责在k8s上版本管理,release版本管理

v3 Tiller被取消了,现在都是各种各样的crd,自定义的资源

之前我们写deployment的时候一个一个写,一次性装一个deployment或者deployment里面写service,也可以一个yaml文件里面可以写deployment出来,没有问题,但是先后顺序无法定义,但是chart本身可以管理复杂应用,这个复杂应用就是,我们装一个chart包里面,里面包含很多很多应用,这些应用可以定义你的先后顺序,相互之间依赖关系,升级简单,定义钩子升级更新,分享:可以共享权限,有权限就可以使用,还可以回滚

chart最主要就是为了一次性部署多个应用的时候,chart更加方便一些,可能公司一次性部署十几个微服务,这十几个微服务,一个一个部署会很慢,可以做成chart,这个chart就包含会使用到的程序包,就可以通过chart一次性安装部署,一次性可以更新升级

使用

helm在操作系统上安装就是个helm客户端,把这个客户端命令行安装就行了,对应的想使用仓库,还得指定你的yum源,apt源,这里也是一样,集群上默认没有helm工具的,需要下载安装

https://github.com/

https://github.com/helm/helm

下载3.11.2

https://github.com/helm/helm/releases/tag/v3.11.2

helm介绍_linux_02


wget https://get.helm.sh/helm-v3.11.2-linux-amd64.tar.gz
root@k8s-master1:/apps# tar xf helm-v3.11.2-linux-amd64.tar.gz
#解包

root@k8s-master1:/apps# cd linux-amd64/
#进去

root@k8s-master1:/apps/linux-amd64# cp helm /usr/bin/
#这就是个命令行 移动到 $PATH认识的位置 就可以使用了

root@k8s-master1:/apps/linux-amd64# helm version
version.BuildInfo{Version:"v3.11.2", GitCommit:"912ebc1cd10d38d340f048efaf0abda047c3468e", GitTreeState:"clean", GoVersion:"go1.18.10"}
#出现这些就说明安装成功了

安装成功以后就可以在本地添加官方的仓库

root@k8s-master1:/apps/linux-amd64# helm repo add stable https://charts.helm.sh/stable
"stable" has been added to your repositories

root@k8s-master1:/apps/linux-amd64# helm repo add incubator https://charts.helm.sh/incubator
"incubator" has been added to your repositories

# helm repo add 添加仓库命令

我们就可以用helm命令行和查询yum或者apt似的之间查询

第三方包

Helm Hub上还维护有众多第三方仓库,这些仓库都可以由helm repo命令添加到本地直接使用,而且也只能添加为本地仓库后才能够作为内部Chart使用。例如,维护有众多应用Chart且活跃度较高的Bitnami组织也拥有自己的Chart仓库,我们同样可以将其添加为本地仓库,如下面的命令所示。

root@k8s-master1:/apps/linux-amd64#  helm repo add bitnami https://charts.bitnami.com/bitnami
"bitnami" has been added to your repositories

提示

Bitnami是一个开源项目,由Daniel Lopez Ridruejo于2003年在西班牙塞维利亚创立,其核心目标 旨

在为开源的Web应用程序、开发栈以及虚拟设备提供安装程序或安装软件包。

然后就可以更新目前三个仓库的源

root@k8s-master1:/apps/linux-amd64# helm repo update
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "incubator" chart repository
...Successfully got an update from the "stable" chart repository
...Successfully got an update from the "bitnami" chart repository
Update Complete. ⎈Happy Helming!⎈

查询某个包的版本

在Helm中搜索与关键词 "etcd" 相关的 Helm Charts(Helm包)的命令

对现有的仓库搜索

root@k8s-master1:/apps/linux-amd64# helm search repo etcd
NAME                    CHART VERSION   APP VERSION     DESCRIPTION
bitnami/etcd            9.5.0           3.5.9           etcd is a distributed key-value store designed ...
                    #chart版本        #app版本
incubator/etcd          0.7.7           3.2.26          DEPRECATED Distributed reliable key-value store...
stable/etcd-operator    0.11.2          0.9.4           DEPRECATED CoreOS etcd-operator Helm chart for ...
stable/zetcd            0.1.11          0.0.3           DEPRECATED CoreOS zetcd Helm chart for Kubernetes
root@k8s-master1:/apps/linux-amd64#

helm:这是Helm命令行工具的名称,用于管理和部署Kubernetes应用程序的包。它允许您查找、安装、升级和删除Helm Charts。

search:这是Helm命令的一个子命令,用于在Helm Chart仓库中搜索特定关键词的Charts。

repo:这是Helm命令的另一个子命令,用于与Helm Chart仓库进行交互,包括搜索、添加、删除和列出Charts。

etcd:这是您要搜索的关键词。在这种情况下,您正在搜索与 "etcd" 相关的Helm Charts,以查找适合部署etcd(分布式键值存储系统)的Helm Charts。

还可以通过对全部的仓库进行搜索

root@k8s-master1:/apps/linux-amd64# helm search hub etcd
URL                                                     CHART VERSION   APP VERSION     DESCRIPTION
https://artifacthub.io/packages/helm/bitnami-ak...      8.5.8           3.5.5           etcd is a distributed key-value store designed ...
https://artifacthub.io/packages/helm/bitnami/etcd       9.5.0           3.5.9           etcd is a distributed key-value store designed ...
https://artifacthub.io/packages/helm/wenerme/etcd       9.5.0           3.5.9           etcd is a distributed key-value store designed ...
https://artifacthub.io/packages/helm/wener/etcd         9.5.0           3.5.9           etcd is a distributed key-value store designed ...
https://artifacthub.io/packages/helm/kubeblocks...      0.7.0-alpha.8   v3.5.6          etcd is a strongly consistent, distributed key-...
https://artifacthub.io/packages/helm/cloudnativ...      2.2.3           3.3.13          etcd is a distributed key value store that prov...
https://artifacthub.io/packages/helm/riftbit/etcd       6.8.4           3.5.0           etcd is a distributed key value store that prov...
https://artifacthub.io/packages/helm/gardener-c...      5.3.2           v3.5.2          Helm chart for etcd
https://artifacthub.io/packages/helm/media-stre...      0.0.5                           A Helm chart to deploy etcd for MSM
####省略下面内容

对某个包进行详细查看

root@k8s-master1:/apps/linux-amd64# helm show all bitnami/etcd
annotations:
  category: Database
  images: |
    - name: etcd
      image: docker.io/bitnami/etcd:3.5.9-debian-11-r118
    - name: os-shell
      image: docker.io/bitnami/os-shell:11-debian-11-r60
  licenses: Apache-2.0
apiVersion: v2
appVersion: 3.5.9
dependencies:
- name: common
  repository: oci://registry-1.docker.io/bitnamicharts
  tags:
  - bitnami-common
  version: 2.x.x
description: etcd is a distributed key-value store designed to securely store data
  across a cluster. etcd is widely used in production on account of its reliability,
  fault-tolerance and ease of use.
home: https://bitnami.com
icon: https://bitnami.com/assets/stacks/etcd/img/etcd-stack-220x234.png
keywords:
#省略下面内容

安装

安装可以执行去那个仓库下载或者指定名称

安装前测试有没有错误

root@k8s-master1:/apps/linux-amd64# helm install testop stable/etcd-operator --dry-run -n test
# testop 是起的名字
# stable/etcd-operator 这个是上面查到etcd的地址
# --dry-run 是不安装 测试下有没有报错
# -n test 指定名称空间

执行后会打印出很多yaml文件 ,这是安装的程序本身包含的chart里面 包含的安装 yaml文件

直接安装


root@k8s-master1:/apps/linux-amd64# kubectl create namespace test
namespace/test created
#创建个名称空间  因为我们要把etcd安装到这个名称空间里面

安装

root@k8s-master1:/apps/linux-amd64# helm install testop stable/etcd-operator -n test
WARNING: This chart is deprecated
W0913 10:33:16.536818   98208 warnings.go:70] apiextensions.k8s.io/v1beta1 CustomResourceDefinition is deprecated in v1.16+, unavailable in v1.22+; use apiextensions.k8s.io/v1 CustomResourceDefinition
W0913 10:33:16.568109   98208 warnings.go:70] apiextensions.k8s.io/v1beta1 CustomResourceDefinition is deprecated in v1.16+, unavailable in v1.22+; use apiextensions.k8s.io/v1 CustomResourceDefinition
W0913 10:33:18.571132   98208 warnings.go:70] apiextensions.k8s.io/v1beta1 CustomResourceDefinition is deprecated in v1.16+, unavailable in v1.22+; use apiextensions.k8s.io/v1 CustomResourceDefinition
manifest_sorter.go:192: info: skipping unknown hook: "crd-install"
NAME: testop
LAST DEPLOYED: Wed Sep 13 10:33:18 2023
NAMESPACE: test
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
1. etcd-operator deployed.
  If you would like to deploy an etcd-cluster set 'customResources.createEtcdClusterCRD' to true in values.yaml
  Check the etcd-operator logs
    export POD=$(kubectl get pods -l app=testop-etcd-operator-etcd-operator --namespace test --output name)
    kubectl logs $POD --namespace=test

安装成功

查看一下

root@k8s-master1:/apps/linux-amd64# kubectl get all -n test
NAME                                                              READY   STATUS    RESTARTS   AGE
pod/testop-etcd-operator-etcd-backup-operator-777d6d9c9c-69fnk    1/1     Running   0          46s
pod/testop-etcd-operator-etcd-operator-777d9bbfc5-7bzb5           1/1     Running   0          46s
pod/testop-etcd-operator-etcd-restore-operator-5567d7b586-jltr7   1/1     Running   0          46s

NAME                            TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)     AGE
service/etcd-restore-operator   ClusterIP   10.103.42.65   <none>        19999/TCP   46s

NAME                                                         READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/testop-etcd-operator-etcd-backup-operator    1/1     1            1           46s
deployment.apps/testop-etcd-operator-etcd-operator           1/1     1            1           46s
deployment.apps/testop-etcd-operator-etcd-restore-operator   1/1     1            1           46s

NAME                                                                    DESIRED   CURRENT   READY   AGE
replicaset.apps/testop-etcd-operator-etcd-backup-operator-777d6d9c9c    1         1         1       46s
replicaset.apps/testop-etcd-operator-etcd-operator-777d9bbfc5           1         1         1       46s
replicaset.apps/testop-etcd-operator-etcd-restore-operator-5567d7b586   1         1         1       46s

卸载

root@k8s-master1:/apps/linux-amd64# helm uninstall testop -n test
release "testop" uninstalled

1.26版本无法使用helm

因为api群组不一样


标签:apps,chart,介绍,operator,etcd,helm,k8s
From: https://blog.51cto.com/u_15971294/7512129

相关文章

  • 个人介绍+软工五问
    作业课程https://edu.cnblogs.com/campus/gdgy/CSGrade21-12作业要求https://edu.cnblogs.com/campus/gdgy/CSGrade21-12作业目标学习使用Markdown排版,熟悉博客相关操作我是来自计科一班的高国豪。平时喜欢唱歌、画画以及打篮球。关于软件工程,我有以下几个问题......
  • USB协议详细介绍
    USB(UniversalSerialBus)是一种广泛应用于计算机和消费电子产品的通讯协议和接口。它提供了一种方便、快捷、多功能的连接方式,能够连接各种设备,并支持数据传输和供电功能。下面将对USB协议的主要特性及其工作原理进行详细介绍。USB协议是USB接口通信的规范,它定义了如何在计算机和外......
  • 循序渐进介绍基于CommunityToolkit.Mvvm 和HandyControl的WPF应用端开发(4) -- 实现Da
    在我们设计软件的很多地方,都看到需要对表格数据进行导入和导出的操作,主要是方便客户进行快速的数据处理和分享的功能,本篇随笔介绍基于WPF实现DataGrid数据的导入和导出操作。1、系统界面设计在我们实现数据的导入导出功能之前,我们在主界面需要提供给客户相关的操作按钮,如下界面......
  • Adobe Illustrator入门介绍
    “很多人在后台给小编留言想要学习一下AI。那么最近几期的内容主要着重如何利用AI绘制出高质量的数据图。想要学习AI的同学,可以关注一下近几期的内容。如果想要利用AI软件画出想要的高大上的图片,我们就需要对AI以及它的基本功能有一个了解,那么之后我们利用起来就不会一头雾水。”......
  • WEB组态编辑器插件(BY组态)介绍
    BY组态是一款非常优秀的纯前端的【web组态插件工具】,采用标准HTML5技术,基于B/S架构进行开发,支持WEB端呈现,支持在浏览器端完成便捷的人机交互,简单的拖拽即可完成可视化页面的设计。可无缝嵌入到vue项目,react项目等,由于是原生js开发,对于前端的集成没有框架的限制。可快速构建和部署......
  • 介绍一下CSS的盒子模型
    CSS的盒子模型有哪些:标准盒子模型、IE盒子模型CSS的盒子模型区别:标准盒子模型:margin、border、padding、contentIE盒子模型:margin、content(border+padding+content)通过CSS如何转换盒子模型:box-sizing:content-box; /标准盒子模型/box-sizing:border-box; /IE盒......
  • 讲解和介绍VNC的使用,以及和ssh的对比
    VNC(VirtualNetworkComputing)是一种远程桌面协议,它允许用户通过网络访问和控制远程计算机。通过VNC,用户可以在自己的计算机上查看和操纵远程计算机的桌面界面,就像在本地使用该计算机一样。VNC的使用非常简单。首先,需要在远程计算机上安装VNC服务器软件。然后,用户可以在本地计算机......
  • 八大排序算法介绍及其Java实现
    八大排序算法包括:冒泡排序(BubbleSort)选择排序(SelectionSort)插入排序(InsertionSort)希尔排序(ShellSort)归并排序(MergeSort)快速排序(QuickSort)堆排序(HeapSort)计数排序(CountingSort)下面是它们的复杂度、应用场景以及Java语言描述算法:冒泡排序复杂度:最坏情况下需要O(n^2)的时间复......
  • vim插件使用python编写+AXI非对齐传输如何发送+verdi配置搜索顺序+verible和verilator
    vim插件使用python编写虽然vim有自己的一套语法格式,但是学习成本放着呢,语言那么多,啥都学哪学的过来嘛。不过vim确实是支持python的,但是是python2,而不是python3,因此语法上的一些问题要兼容下。这个是官方手册,正确而可靠的部分。https://vimdoc.sourceforge.net/htmldoc/if_pyth......
  • pg小工:pgsql介绍
    pg小工:pgsql介绍介绍世界上最先进的开源数据库设计灵活,可定制支持ANSI/ISO兼容的SQL已经有30多年发展历史universitypostgres(1986-1993)postgres95(1994-1995)postgressql(1996-2019)有活跃在全球范围内的社区支持支持邮件列表http://www.postgresql.org/community/lis......