首页 > 其他分享 >部署 helm2 包管理器

部署 helm2 包管理器

时间:2023-12-18 10:01:17浏览次数:28  
标签:helm2 管理器 部署 -- helm Helm Tiller root tiller

介绍
Helm是一个kubernetes应用的包管理工具,用来管理预先配置好的安装包资源。
Helm chart是用来封装kubernetes原生应用程序的yaml文件,可以在你部署应用的时候自定义应用程序的一些metadata,便与应用程序的分发。

架构

部署 helm2 包管理器_应用程序

解释

Helm:
是一个命令行下的客户端工具。主要用于 Kubernetes 应用程序 Chart 的创建、打包、发布以及创建和管理本地和远程的 Chart 仓库。

Tiller:
是 Helm 的服务端,部署在 Kubernetes 集群中。Tiller 用于接收 Helm 的请求,并根据 Chart 生成 Kubernetes 的部署文件( Helm 称为 Release ),然后提交给 Kubernetes 创建应用。Tiller 还提供了 Release 的升级、删除、回滚等一系列功能。

Chart:
Helm 的软件包,采用 TAR 格式。类似于 APT 的 DEB 包或者 YUM 的 RPM 包,其包含了一组定义 Kubernetes 资源相关的 YAML 文件。

Repoistory:
Helm 的软件仓库,Repository 本质上是一个 Web 服务器,该服务器保存了一系列的 Chart 软件包以供用户下载,并且提供了一个该 Repository 的 Chart 包的清单文件以供查询。Helm 可以同时管理多个不同的 Repository。

Release:
使用 helm install 命令在 Kubernetes 集群中部署的 Chart 称为 Release。 --注:需要注意的是:Helm 中提到的 Release 和我们通常概念中的版本有所不同,这里的 Release 可以理解为 Helm 使用 Chart 包部署的一个应用实例。

Chart Install 原理
Helm 从指定的目录或者 TAR 文件中解析出 Chart 结构信息。
Helm 将指定的 Chart 结构和 Values 信息通过 gRPC 传递给 Tiller。
Tiller 根据 Chart 和 Values 生成一个 Release。
Tiller 将 Release 发送给 Kubernetes 用于生成 Release。

Chart Update 原理
Helm 从指定的目录或者 TAR 文件中解析出 Chart 结构信息。
Helm 将需要更新的 Release 的名称、Chart 结构和 Values 信息传递给 Tiller。
Tiller 生成 Release 并更新指定名称的 Release 的 History。
Tiller 将 Release 发送给 Kubernetes 用于更新 Release。

Chart Rollback 原理
Helm 将要回滚的 Release 的名称传递给 Tiller。
Tiller 根据 Release 的名称查找 History。
Tiller 从 History 中获取上一个 Release。
Tiller 将上一个 Release 发送给 Kubernetes 用于替换当前 Release。

Chart 处理依赖原理
Tiller 在处理 Chart 时,直接将 Chart 以及其依赖的所有 Charts 合并为一个 Release,同时传递给 Kubernetes。因此 Tiller 并不负责管理依赖之间的启动顺序。Chart 中的应用需要能够自行处理依赖关系。

Helm和charts的主要作用:
应用程序封装
版本管理
依赖检查
便于应用程序分发

安装helm包管理器
Kubernetes1.8以上版本;
集群可访问到的镜像仓库;
k8s集群可以正常工作,执行helm命令的主机可以访问到kubernetes集群。

1.下载脚本

curl https://raw.githubusercontent.com/helm/helm/master/scripts/get > get_helm.sh
chmod 700 get_helm.sh
./get_helm.sh

2.执行安装

[root@master1 ~]# ./get_helm.sh                                                                                                                                                                                           
Downloading https://get.helm.sh/helm-v2.17.0-linux-amd64.tar.gz
Preparing to install helm and tiller into /usr/local/bin
helm installed into /usr/local/bin/helm
tiller installed into /usr/local/bin/tiller
Run 'helm init' to configure helm.

[root@master1 ~]# helm init
Creating /root/.helm 
Creating /root/.helm/repository 
Creating /root/.helm/repository/cache 
Creating /root/.helm/repository/local 
Creating /root/.helm/plugins 
Creating /root/.helm/starters 
Creating /root/.helm/cache/archive 
Creating /root/.helm/repository/repositories.yaml 
Adding stable repo with URL: https://charts.helm.sh/stable

3.创建tiller命名空间 注意:Helm 的服务器端部分 Tiller 通常运行在 Kubernetes 集群内部。但是对于开发,它也可以在本地运行,并配置为与远程 Kubernetes 群集通信。
创建tiller的serviceaccount和clusterrolebinding

[root@master1 ~]# kubectl create serviceaccount --namespace kube-system tiller
serviceaccount/tiller created

[root@master1 ~]# kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
clusterrolebinding.rbac.authorization.k8s.io/tiller-cluster-rule created

4.快捷群集内安装
安装tiller到群集中最简单的方法就是运行helm init。这将验证helm本地环境设置是否正确(并在必要时进行设置)。然后它会连接到kubectl默认连接的任何集群(kubectl config view)。一旦连接,它将安装tiller到kube-system命名空间中。

你可以通过参数运行 helm init:
--canary-image 参数安装金丝雀版本
--tiller-image 安装特定的镜像(版本)
--kube-context 使用安装到特定群集
--tiller-namespace 用一个特定的命名空间 (namespace) 安装
--service-account 使用 Service Account 安装 RBAC enabled clusters)
--automount-service-account false 不适用 service account 安装

5.更新helm镜像仓库地址 (helm镜像仓库地址如果不能用根据自己的仓库地址更换)

[root@master1 ~]# helm init --upgrade -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.17.0 --stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
Creating /root/.helm/repository/repositories.yaml 
Adding stable repo with URL: https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts 
Adding local repo with URL: http://127.0.0.1:8879/charts 
$HELM_HOME has been configured at /root/.helm.

Tiller (the Helm server-side component) has been installed into your Kubernetes Cluster.

Please note: by default, Tiller is deployed with an insecure 'allow unauthenticated users' policy.
To prevent this, run `helm init` with the --tiller-tls-verify flag.
For more information on securing your installation see: https://v2.helm.sh/docs/securing_installation/

6.将Tiller安装到Kubernetes集群中

[root@master1 ~]# helm init --history-max 200          # --history-max 设置最大历史记录,大限制清除,如果没有设置最大历史记录,则无限期地保留历史记录.
$HELM_HOME has been configured at /root/.helm.
Warning: Tiller is already installed in the cluster.
(Use --client-only to suppress this message, or --upgrade to upgrade Tiller to the current version.)

7.应用程序设置serviceAccount 注意:默认情况下,部署舵柄与一个不安全的“允许未经身份验证的用户”政策。

[root@master1 ~]# kubectl patch deploy --namespace kube-system tiller-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'
deployment.apps/tiller-deploy patched

8.验证并查看版本 注意:helm init以后,可以运行kubectl get pods --namespace kube-system并看到Tiller正在运行。tiller默认被部署在k8s集群中的kube-system这个namespace下。一旦安装了除非设置--tiller-namespace或TILLER_NAMESPACE参数,否则Helm将在命名空间kube-system中查找 Tiller

[root@master1 ~]# kubectl get pod -n kube-system -l app=helm
NAME                            READY   STATUS    RESTARTS   AGE
tiller-deploy-c44c77cfb-kln4s   1/1     Running   0          21s

[root@master1 ~]# helm version
Client: &version.Version{SemVer:"v2.17.0", GitCommit:"a690bad98af45b015bd3da1a41f6218b1a451dbe", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.17.0", GitCommit:"a690bad98af45b015bd3da1a41f6218b1a451dbe", GitTreeState:"clean"}

标签:helm2,管理器,部署,--,helm,Helm,Tiller,root,tiller
From: https://blog.51cto.com/u_14620403/8868256

相关文章

  • k8s基于NFS部署storageclass实现pv并标记为一个默认的StorageClass
    架构:一.搭建storageclass1、master和node节点安装nfs服务yum-yinstallnfs-utilsrpcbind2、启动nfs并设为开机自启:systemctlstartnfs&&systemctlenablenfssystemctlstartrpcbind&&systemctlenablerpcbind3、master节点创建共享挂载目录(客户端不需要创建共享目录......
  • 【靶场部署】业务安全测试-大米CMS-V5.4电子商城
    1业务数据安全概述:商品数量篡改测试是通过在业务流程中抓包修改订购商品数量等字段,以判断服务器是否存在商品订购数量篡改漏洞。手段:将请求中的商品数量修改成任意非预期数额、负数等进行提交,查看业务系统能否以修改后的数量完成业务流程。目的:该项测试主要针对商品订购的过程中......
  • WorkPlus即时通讯app-私有化部署的最佳解决方案
    随着数字化时代的到来,企业在业务发展和沟通协作方面面临着前所未有的挑战。传统的通讯工具无法满足安全、高效、全面掌控业务和生态的需求。而在这个背景下,WorkPlus作为安全专属的移动数字化平台崭露头角,成为企业实现全面业务掌控的最佳选择。WorkPlus不仅仅是一款移动应用,它更像一......
  • 深度解析Python上下文管理器:优雅资源管理与异常处理
    Python是一种功能强大且灵活的编程语言,它提供了许多高级工具和特性来简化开发过程。其中之一就是上下文管理器,它允许开发者更优雅地处理资源管理和异常处理。本文将深入探讨Python中上下文管理器的工作原理、使用方法以及实际应用。1. 什么是上下文管理器?上下文管理器是一种Python......
  • 使用Docker自定义配置部署RustDesk Server
    “RustDesk是一款可以平替TeamViewer的开源软件,旨在提供安全便捷的自建方案。”这是RustDesk官网对自己的描述。作为一款使用Rust语言开发的开源软件,在为数不多的Rust开发者和数量庞大的Rust学习者中还是有相当的知名度的,并且商业化的RustDeskPro也是如火如荼。开始docker......
  • helm部署Kafka集群
    1.准备文件1.1.创建命令空间kubectlcreatenskafka1.1.helm包拉取本地#添加bitnami仓库helmrepoaddbitnamihttps://charts.bitnami.com/bitnami#查询charthelmsearchrepobitnami#拉取zookeeperhelmpullbitnami/zookeeper#解压tarzxvfzookeeper-12.0.......
  • Docker 部署数据可视化 Superset 3.0.0 深度汉化并配置元数据存储为 Postgres
    Superset官方提供的Docker镜像在3.0.0版本下不能做到开箱即用,需要一些设置拉取原始镜像dockerpullapache/superset:3.0.0配置superset_config.pysuperset_config.py会覆盖掉config.py里的变量,无需配置config.py创建一个superset_config.py文件添加以下内容SECRET......
  • MySQL 8.2.0部署安装验证
    MySQL8.2.0部署安装验证背景昨天捯饬了半天Oracle23cFree版本发现自己白忙活了.然后想着继续看一下MySQL8.2.看看会不会又继续白忙活下载与安装https://cdn.mysql.com//Downloads/MySQL-8.2/mysql-8.2.0-1.el8.x86_64.rpm-bundle.tar计划是下载tar包,这样比较简单......
  • Cento7中部署ShowDoc
    1、安装Dockeryuminstalldocker2、启动Docker服务systemctlstartdocker3、设置Docker服务为开机启动systemctlenabledocker.service4、安装gityuminstallgit5、安装ShowDoc从GitHub上复制代码到本地的某个目录,这里进入根目录的test的文件夹cd/testgitclone-......
  • Docker部署Redis
    1、拉取redis镜像dockerpullredis2、创建redis配置文件mkdir-p/mydata/redis/conftouch/mydata/redis/conf/redis.conf3、启动redis镜像dockerrun-p6379:6379--nameredis\-v/mydata/redis/data:/data\-v/mydata/redis/conf/redis.conf:/etc/redis/redis.......