【云原生,k8s】Helm应用包管理器介绍

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

目录

一、为什么需要Helm?

(一)Helm介绍

(二)Helm有3个重要概念:

(三)Helm特点

二、Helm V3变化

(一)架构变化

(二)自动创建名称空间

三、Helm应用包管理器部署

1、部署Helm客户端工具

2、Helm常用命令

3、配置国内的Chart仓库

4、使用chart部署一个Nginx应用

5、使用chart部署一个Tomcat应用

6、用变量渲染模板


前提配置:基于k8s(kubernetes几圈)

【云原生,k8s】Helm应用包管理器介绍,云原生,kubernetes,容器

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

一、为什么需要Helm?

        Kubernetes上部署的应用服务,都是由特定的资源描述组成,包括deployment、service等。每个资源对象都保存在各自文件中或者集中写到一个配置文件。然后通过kubectl apply –f demo.yaml命令进行部署。

【云原生,k8s】Helm应用包管理器介绍,云原生,kubernetes,容器

 

如果业务系统只由一个或几个这样的服务组成,那么上面部署管理方式足够用了。

        而对于一个复杂的业务系统,会有很多类似上面的资源描述文件,例如微服务架构应用,组成应用的服务可能多达十个,几十个。如果有更新或回滚应用的需求,可能要修改和维护所涉及的大量资源对象文件,而这种组织和管理应用的方式就显得力不从心了。

        而且由于缺少对发布过的应用版本管理和控制,使Kubernetes上的应用维护和更新等面临诸多的挑战,主要面临以下问题:

如何将这些服务作为一个整体管理

这些资源文件如何高效复用

不支持应用级别的版本管理

(一)Helm介绍

        Helm是一个Kubernetes的包管理工具,就像Linux下的包管理器,如yum/apt-get等一样,Helm可以很方便的将之前打包好的yaml文件部署到kubernetes上。

(二)Helm有3个重要概念:

helm:一个命令行客户端工具,主要用于Kubernetes应用chart的创建、打包、发布和管理。

Chart:目录或者压缩包,用于应用描述,由一系列用于描述 k8s 资源对象相关文件的集合。

Release:基于Chart的部署实体,一个 chart 被 Helm 运行后将会生成对应的一个 release;将在k8s中创建出真实运行的资源对象。

(三)Helm特点

        开发的一个用于kubernetes的包管理器,每个包称为一个Chart,一个Chart是一个目录(一般情况下会将目录进行打包压缩,形成name-version.tar.gz格式的单一文件,方便传输和存储)

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

        对于使用者而言,使用Helm后不用需要了解Kubernetes的Yaml语法并编写应用部署文件,可以通过Helm下载并在kubernetes上安装需要的应用,

Helm提供了kubernetes上的软件部署,删除,升级, 回滚应用的强大功能

二、Helm V3变化

2019年11月13日, Helm团队发布 Helm v3的第一个稳定版本。该版本主要变化如下:

(一)架构变化

最明显的变化是 Tiller的删除

【云原生,k8s】Helm应用包管理器介绍,云原生,kubernetes,容器

 

1)Release名称可以在不同命名空间重用

2)支持将 Chart 推送至 Docker 镜像仓库Harbor中

3)使用JSONSchema验证chart values

4)其他

为了更好地协调其他包管理者的措辞 Helm CLI个别更名

helm delete` 更名为 `helm uninstall

helm inspect` 更名为 `helm show

helm fetch` 更名为 `helm pull

但以上旧的命令当前仍能使用。

移除了用于本地临时搭建 Chart Repository的 helm serve 命令。

(二)自动创建名称空间

        在不存在的命名空间中创建发行版时,Helm 2创建了命名空间。Helm 3遵循其他Kubernetes对象的行为,如果命名空间不存在则返回错误。

不再需要requirements.yaml, 依赖关系是直接在chart.yaml中定义。

三、Helm应用包管理器部署

1、部署Helm客户端工具

Helm客户端下载地址:Releases · helm/helm · GitHub

将源码包解压并移动到/usr/bin/目录即可。

[root@k8s-master ~]# wget https://get.helm.sh/helm-v3.5.2-linux-amd64.tar.gz

[root@k8s-master ~]# tar xf helm-v3.5.2-linux-amd64.tar.gz

[root@k8s-master ~]# cd linux-amd64/

[root@k8s-master linux-amd64]# ls

[root@k8s-master linux-amd64]# mv helm /usr/bin/

[root@k8s-master ~]# helm #验证helm命令是否可用

【云原生,k8s】Helm应用包管理器介绍,云原生,kubernetes,容器

 

2、Helm常用命令

命令

描述

create

创建一个chart并指定名字

dependency

管理chart依赖

get

下载一个release。可用子命令:all、hooks、manifest、notes、values

history

获取release历史

install

安装一个chart

list

列出release

package

将chart目录打包到chart存档文件中

pull

从远程仓库中下载chart并解压到本地 # helm pull stable/mysql --untar

repo

添加,列出,移除,更新和索引chart仓库。可用子命令:add、index、list、remove、update

rollback

从之前版本回滚

search

根据关键字搜索chart。可用子命令:hub、repo

show

查看chart详细信息。可用子命令:all、chart、readme、values

status

显示已命名版本的状态

template

本地呈现模板

uninstall

卸载一个release

upgrade

更新一个release

version

查看helm客户端版本

3、配置国内的Chart仓库

微软仓库(Index of /kubernetes/charts/)这个仓库强烈推荐,基本上官网有的chart这里都有。

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

官方仓库(Kubeapps | Home)官方chart仓库,国内有点不好使。

添加chart存储库

[root@k8s-master ~]# helm repo add stable http://mirror.azure.cn/kubernetes/charts

[root@k8s-master ~]# helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts

[root@k8s-master ~]# helm repo update

查看已配置的chart存储库

[root@k8s-master ~]# helm repo list

【云原生,k8s】Helm应用包管理器介绍,云原生,kubernetes,容器

 

删除存储库:

[root@k8s-master ~]# helm repo remove aliyun

[root@k8s-master ~]# helm repo list

【云原生,k8s】Helm应用包管理器介绍,云原生,kubernetes,容器

 

4、使用chart部署一个Nginx应用

1)创建chart

[root@k8s-master ~]# helm create nginx

【云原生,k8s】Helm应用包管理器介绍,云原生,kubernetes,容器

 

[root@k8s-master ~]# tree nginx/

详解:

nginx/

├── charts #依赖其他包的charts文件

├── Chart.yaml #该chart的描述文件,包括ip地址,版本信息等

├── templates #存放k8s模板文件目录

│   ├── deployment.yaml #创建k8s deployment资源的yaml 模板

│   ├── _helpers.tpl #下划线开头的文件,可以被其他模板引用

│   ├── hpa.yaml #配置服务资源CPU 内存

│   ├── ingress.yaml # ingress 配合service域名访问的配置

│   ├── NOTES.txt #说明文件,helm install之后展示给用户看的内容

│   ├── serviceaccount.yaml

│   ├── service.yaml #kubernetes Serivce yaml模板

│   └── tests

│       └── test-connection.yaml

└── values.yaml #给模板文件使用的变量

【云原生,k8s】Helm应用包管理器介绍,云原生,kubernetes,容器

 

2)修改values.yaml 里的service的type为 NodePort

[root@k8s-master ~]# cd nginx/

[root@k8s-master nginx]# vim values.yaml

【云原生,k8s】Helm应用包管理器介绍,云原生,kubernetes,容器

 

3)安装chart任务(注意命令最后的点)

[root@k8s-master nginx]# helm install -f values.yaml

【云原生,k8s】Helm应用包管理器介绍,云原生,kubernetes,容器

4)查看release

[root@k8s-master nginx]# helm ls #或者helm list

【云原生,k8s】Helm应用包管理器介绍,云原生,kubernetes,容器

 

5)删除release

[root@k8s-master nginx]# helm delete nginx

6)查看pod状态

[root@k8s-master nginx]# kubectl get pod

[root@k8s-master nginx]# kubectl get pod -o wide

7)查看svc状态

[root@k8s-master nginx]# kubectl get svc

【云原生,k8s】Helm应用包管理器介绍,云原生,kubernetes,容器

 

访问 192.168.100.132:30281

【云原生,k8s】Helm应用包管理器介绍,云原生,kubernetes,容器

5、使用chart部署一个Tomcat应用

[root@k8s-master ~]# helm create tomcat

Creating tomcat

[root@k8s-master ~]# cd tomcat/

【云原生,k8s】Helm应用包管理器介绍,云原生,kubernetes,容器

修改deployment.yaml和service.yaml文件

[root@k8s-master tomcat]# vim templates/deployment.yaml

【云原生,k8s】Helm应用包管理器介绍,云原生,kubernetes,容器

[root@k8s-master tomcat]# vim templates/service.yaml

【云原生,k8s】Helm应用包管理器介绍,云原生,kubernetes,容器

 

创建release

[root@k8s-master tomcat]# helm install tomcat .

【云原生,k8s】Helm应用包管理器介绍,云原生,kubernetes,容器

 

查看release

[root@k8s-master tomcat]# helm ls

【云原生,k8s】Helm应用包管理器介绍,云原生,kubernetes,容器

 

查看pod和svc

[root@k8s-master tomcat]# kubectl get pod

[root@k8s-master tomcat]# kubectl get pod -o wide

[root@k8s-master tomcat]# kubectl get svc

【云原生,k8s】Helm应用包管理器介绍,云原生,kubernetes,容器

 

准备测试页

[root@k8s-master tomcat]# kubectl exec -it tomcat-67df6cd4d6-s7qxl /bin/bash

root@tomcat-67df6cd4d6-s7qxl:/usr/local/tomcat# mkdir webapps/ROOT

root@tomcat-67df6cd4d6-s7qxl:/usr/local/tomcat# echo "helm test1" > webapps/ROOT/index.jsp

【云原生,k8s】Helm应用包管理器介绍,云原生,kubernetes,容器

[root@k8s-master tomcat]# kubectl exec -it tomcat-67df6cd4d6-tkp95 /bin/bash

root@tomcat-67df6cd4d6-tkp95:/usr/local/tomcat# mkdir webapps/ROOT

root@tomcat-67df6cd4d6-tkp95:/usr/local/tomcat# echo "helm test2" > webapps/ROOT/index.jsp

【云原生,k8s】Helm应用包管理器介绍,云原生,kubernetes,容器

 

访问测试:

【云原生,k8s】Helm应用包管理器介绍,云原生,kubernetes,容器

访问 192.168.100.132:32092

访问 192.168.100.133:32092

【云原生,k8s】Helm应用包管理器介绍,云原生,kubernetes,容器

 

删除

[root@k8s-master tomcat]# helm delete tomcat

[root@k8s-master tomcat]# helm ls

【云原生,k8s】Helm应用包管理器介绍,云原生,kubernetes,容器

 

升级(改完yaml文件之后重新应用)

[root@k8s-master tomcat]# helm install tomcat .

[root@k8s-master tomcat]# helm ls

[root@k8s-master tomcat]# kubectl get pod

【云原生,k8s】Helm应用包管理器介绍,云原生,kubernetes,容器

 

[root@k8s-master tomcat]# vim templates/deployment.yaml

【云原生,k8s】Helm应用包管理器介绍,云原生,kubernetes,容器

 

[root@k8s-master tomcat]# helm upgrade tomcat .

[root@k8s-master tomcat]# kubectl get pod

[root@k8s-master tomcat]# helm ls

【云原生,k8s】Helm应用包管理器介绍,云原生,kubernetes,容器

 

回滚

[root@k8s-master tomcat]# helm rollback tomcat 1

[root@k8s-master tomcat]# helm ls

[root@k8s-master tomcat]# kubectl get pod

【云原生,k8s】Helm应用包管理器介绍,云原生,kubernetes,容器

 

6、用变量渲染模板

测试模板是否正常

[root@k8s-master tomcat]# helm install --dry-run tomcat .

【云原生,k8s】Helm应用包管理器介绍,云原生,kubernetes,容器

 

在values.yaml文件中定义变量

[root@k8s-master tomcat]# cat values.yaml

【云原生,k8s】Helm应用包管理器介绍,云原生,kubernetes,容器

 

[root@k8s-master tomcat]# cat templates/deployment.yaml

【云原生,k8s】Helm应用包管理器介绍,云原生,kubernetes,容器

[root@k8s-master tomcat]# cat templates/service.yaml

【云原生,k8s】Helm应用包管理器介绍,云原生,kubernetes,容器

 

deployment.yaml service.yaml两个文件的变量都是预先在values.yaml里面定义过引用过来的值。

Release.Name 代表helm install 后面的那个名字

[root@k8s-master tomcat]# helm delete tomcat

将templates目录中多余的文件都删除,只保留两个测试文件

[root@k8s-master tomcat]# ls templates/

【云原生,k8s】Helm应用包管理器介绍,云原生,kubernetes,容器

[root@k8s-master tomcat]# helm install -f values.yaml

【云原生,k8s】Helm应用包管理器介绍,云原生,kubernetes,容器

[root@k8s-master tomcat]# helm ls

【云原生,k8s】Helm应用包管理器介绍,云原生,kubernetes,容器

 

查看发布状态

[root@k8s-master tomcat]# helm status tomcat

[root@k8s-master tomcat]# kubectl get pod

【云原生,k8s】Helm应用包管理器介绍,云原生,kubernetes,容器

 

查看pod详细信息

[root@k8s-master tomcat]# kubectl describe pod tomcat-dp-67df6cd4d6-78pxc

【云原生,k8s】Helm应用包管理器介绍,云原生,kubernetes,容器

 

到了这里,关于【云原生,k8s】Helm应用包管理器介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【云原生 | Kubernetes 系列】K8s 实战 如何给应用注入数据 II 将pod数据传递给容器

    在上一篇文章中,我们学习了针对容器设置启动时要执行的命令和参数、定义相互依赖的环境变量、为容器设置环境变量,三种设置方式,本篇文章,我们将继续学习数据的传递。 有两种方式可以将 Pod 和 Container 字段传递给运行中的容器: 环境变量 卷文件 这两种呈现 Pod

    2024年01月25日
    浏览(136)
  • 云原生_kubernetes(k8s)介绍

    目录 一、应用部署方式演变 二、k8s介绍 三、k8s的组件 四、k8s中的概念 五、k8s资源管理方式 1、命令式对象管理 2、命令式对象配置 3、声明式对象配置 在部署应用程序的方式上,主要经历了三个时代: 1 、物理机部署: 互联网早期,会直接将应用程序部署在物理机上 优点

    2023年04月13日
    浏览(56)
  • 【云原生 • Kubernetes】认识 k8s、k8s 架构、核心概念点介绍

    目录 一、Kubernetes 简介 二、Kubernetes 架构 三、Kunbernetes 有哪些核心概念? 1. 集群 Cluster 2. 容器 Container 3. POD 4. 副本集 ReplicaSet 5. 服务 service 6. 发布 Deployment 7. ConfigMap/Secret 8. DaemonSet 9. 核心概念总结 Kubernetes 简称 k8s,是支持云原生部署的一个平台,起源于谷歌。谷歌早在十几

    2024年02月03日
    浏览(186)
  • 云原生Kubernetes:K8S配置资源管理

    目录 一、理论 1.Secret 2.Secret创建 3.Secret使用 4.Configmap 5.Configmap创建 6.Configmap使用 二、实验 1.Secret创建 2.Secret使用 3.Configmap创建 4.Configmap使用 三、问题 1.变量引用生成资源报错 2.查看pod日志失败 3.创建configmap报错 4.YAML创建configmap报错 5. 生成资源报错 6.文件挂载pod报错Error 四

    2024年02月07日
    浏览(62)
  • Kubernetes(k8s)容器编排Pod介绍和使用

    Pod是kubernetes中你可以创建和部署的最小也是最简的单位,一个Pod代表着集群中运行的一个进程。 Pod有两个必须知道的特点 通过yaml文件或者json描述Pod和其内容器的运行环境和期望状态,例如一个最简单的运行nginx应用的pod,定义如下 3.1.1 参数描述 下面简要分析一下上面的

    2024年02月08日
    浏览(78)
  • 【云原生 | Kubernetes 系列】— 部署K8S 1.28版本集群部署(基于Containerd容器运行)

    主机名 IP地址 备注 k8s-master01 192.168.0.109 master k8s-node1 192.168.0.108 node1 k8s-node2 192.168.0.107 node1 k8s-node3 192.168.0.105 node1 1、主机配置 2、升级内核 3、配置内核转发以及过滤 4、安装ipset ipvsadm,IPVS(IP Virtual Server)是一个用于负载均衡的 Linux 内核模块,它可以用来替代 kube-proxy 默认的

    2024年02月20日
    浏览(78)
  • 【云原生 | Kubernetes 系列】K8s 实战 管理 Secret 详解

    Secret 是一种包含少量敏感信息例如密码、令牌或密钥的对象。 这样的信息可能会被放在 Pod 规约中或者镜像中。 用户可以创建 Secret,同时系统也创建了一些 Secret。 一个 Secret 可以包含 Pod 访问数据库所需的用户凭证。 例如,由用户名和密码组成的数据库连接字符串。 你可

    2024年02月02日
    浏览(61)
  • Kubernetes(K8s):容器化应用的航空母舰

    Kubernetes(K8s)是一个开源的容器编排系统,它的出现就像是为容器化应用提供了一艘强大的航空母舰。在这艘母舰上,你的应用容器就像是一架架战斗机,Kubernetes负责指挥它们起飞、飞行、降落,确保它们能在正确的时间、正确的地点执行任务。 Pod: Kubernetes的基本飞行编队

    2024年04月08日
    浏览(64)
  • 云上攻防-云原生篇&Kubernetes&K8s安全&API&Kubelet未授权访问&容器执行

    Kubernetes是一个开源的, 用于编排云平台中多个主机上的容器化的应用,目标是让部署容器化的应用能简单并且高效的使用, 提供了应用部署,规划,更新,维护的一种机制 。其核心的特点就是能够自主的管理容器来保证云平台中的容器按照用户的期望状态运行着,管理员可

    2024年02月08日
    浏览(82)
  • 【云原生 | Kubernetes 系列】K8s 实战 如何给应用注入数据

    前面我们已经一起学习了很多的东西了,本篇文章,我们将一起学习,如何给应用注入数据,当然,本篇文章不会讲解全部知识点,而是带领大家,一起学习如何对我们的项目进行相关的配置和设置。 创建 Pod 时,可以为其下的容器设置启动时要执行的命令及其参数。如果要

    2024年02月02日
    浏览(64)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包