Toggle navigation
主页
English
K8S
Golang
Guitar
About Me
归档
标签
Welcome to Sanger's Blog!
Helm使用
helm
2023-06-15 15:03:31
15
0
0
sanger
helm
[TOC] # helm是什么 Helm是Kubernetes的包管理器,类似于Python的pip centos的yum,主要用来管理 Charts。 Helm Chart是用来封装Kubernetes原生应用程序的一系列YAML文件。可以在你部署应用的时候自定义应用程序的一些Metadata,以便于应用程序的分发。对于应用发布者而言,可以通过Helm打包应用、管理应用依赖关系、管理应用版本并发布应用到软件仓库。 # helm解决了什么 在kubernetes中部署一个可以使用的应用,需要涉及到很多的kubernetes资源的共同协作。 部署一个服务,会一些kubernetes的资源对象,包括deployment用于部署应用,service提供服务发现,secret配置服务的密码,ingress用于集群外部访问,有可能需要pv和pvc来提供持久恶化服务。会涉及到一些依赖,数据库或其他服务启动。这些资源过于分散,不方便管理,直接提供kubectl来管理一个应用,让人头疼。 在部署一个应用,会遇到哪些问题: - 如何统一管理、配置和更新这些分散的k8s的应用资源文件 - 如何分发和复用应用模板 - 如何将应用的一系列资源当做一个软件包管理 对于使用者而言,使用Helm后不用需要编写复杂的应用部署文件,可以以简单的方式在Kubernetes上查找、安装、升级、回滚、卸载应用程序 # helm2与helm3的区别 由于Helm v2 Tiller服务端在社区一直存在已知的安全问题,攻击者可以通过tiller在集群内安装未经授权的应用,因此推荐您升级至Helm v3版本。 helm3是直接与k8s api互通 无需再helm init 创建服务端,比较大的改动是,移除 Tiller(Helm 2 是一种 Client-Server 结构,客户端称为 Helm,服务器称为 Tiller)。Helm 3 只有客户端结构,客户端仍称为 Helm。如下图所示,它的操作类似于 Helm 2 客户端,但客户端直接与 Kubernetes API 服务器交互 helm3的特性: - 移除了tiller - 支持分布式helm hub, 有了它就可以在很多时候不需要手动添加非官方repo了,例如helm3 search hub <package name> - 为chart输入值进行json schema验证。 - 可以给helm charts添加test了,通过helm test <release>就能针对部署的应用跑一些tests。 - 部署的时候release name必须指定了,helm2的时候不指定会自动生成一个。 - Helm3中release的相关信息保存在应用自己对应的命名空间下,所以此时可以在不同的命名空间下使用相同的release名称,而且不会相互干扰 - 删除的时候不需要--purge了,删了就是删了。 # 基本概念 - **Helm** 是一个命令行下的客户端工具。主要用于 Kubernetes 应用程序 Chart 的创建、打包、发布以及创建和管理本地和远程的 Chart 仓库。 - **Chart**:一个 Helm 包,,采用 TAR 格式。其中包含了运行一个应用所需要的镜像、依赖和资源定义等,还可能包含 Kubernetes 集群中的服务定义,类似 Homebrew 中的 formula、APT 的 dpkg 或者 Yum 的 rpm 文件。 - **Release**:在 Kubernetes 集群上运行的 Chart 的一个实例。在同一个集群上,一个 Chart 可以安装很多次。每次安装都会创建一个新的 release。例如一个 MySQL Chart,如果想在服务器上运行两个数据库,就可以把这个 Chart 安装两次。每次安装都会生成自己的 Release,会有自己的 Release 名称。 - **Repository**:用于发布和存储 Chart 的存储库。 # helm3的架构(下面所有的都是helm3)  # helm的安装和配置 ## 二进制安装 ``` wget https://get.helm.sh/helm-v3.1.2-linux-amd64.tar.gz tar -zxvf helm-v3.1.2-linux-amd64.tar.gz cd linux-amd64 mv helm /usr/local/bin/ ``` ## 脚本安装 ``` curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 chmod 700 get_helm.sh ./get_helm.sh ``` ## 命令补全 ``` yum install -y bash-completion source /usr/share/bash-completion/bash_completion # 在~/.bashrc追加 (根据实际需要添加环境变量) source <(helm completion bash) ``` #Helm常用命令 ``` #查看已经添加的helm仓库 helm repo ls #添加外部helm仓库 helm repo add jaegertracing https://jaegertracing.github.io/helm-charts #更新所有的helm仓库 helm repo update #查找需要的helm项目包 helm search repo jaegertracing #将整个helm chart拉取到本地,是tgz的方式下载下来的 helm pull jaegertracing/jaeger #解压 tar xf jaeger-0.72.1.tgz #包中的内容如下 ls jaeger Chart.lock charts Chart.yaml README.md templates values.yaml #根据需要编译values.yaml vim valuse.yaml # 创建 helm install jaeger -n tracing --values ./jaeger # 更新、升级版本 helm upgrade jaeger -n tracing --values ./jaeger # 查看 helm ls -n tracing # 删除 helm uninstall jaeger -n tracing ``` # 参考 https://helm.sh/docs https://artifacthub.io https://www.cnblogs.com/happy-king/p/15170507.html https://helm.sh/zh/docs/intro/using_helm https://helm.sh/zh/docs/topics/charts/ https://docs.helm.sh/zh/docs/helm/helm_repo_index/
上一篇:
etcd概述和相关命令
下一篇:
dockerfile
0
赞
15 人读过
新浪微博
微信
更多分享
腾讯微博
QQ空间
人人网
文档导航