入门Helm

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
简介: 入门Helm

今天给大家带来Heml的入门学习。

一.什么是 Helm

官方中文网址:https://helm.sh/zh/

Helm 是 Kubernetes 的包管理器。包管理器类似于我们在 Ubuntu 中使用的apt、

Centos中使用的yum 或者Python中的 pip 一样,能快速查找、下载和安装软件包。

Helm 由客户端组件 helm 和服务端组件 Tiller 组成, 能够将一组K8S资源打包

统一管理, 是查找、共享和使用为Kubernetes构建的软件的最佳方式。

有了 Helm,开发者可以:

 查找要安装和使用的预打包软件(Chart);

 轻松创建和托管自己的软件包;

 将软件包安装到任何 K8s 集群中;

 查询集群以查看已安装和正在运行的程序包;

 更新、删除、回滚或查看已安装软件包的历史记录;

一言以蔽之,通过 Helm,你可以轻松在 Kubernetes 中运行应用程序。

Helm3 以Helm2的核心功能为基础,对 Chart repo、发行版管理、安全性和 library Charts 进行了改进。

一言以蔽之,通过 Helm,你可以轻松在 Kubernetes 中运行应用程序。

Helm3 以Helm2的核心功能为基础,对 Chart repo、发行版管理、安全性和 library Charts 进行了改进。

Helm 3 的新变化

面对新版本,相信很多开发者都有这样的疑问:

 Helm 3 的工作流程与 Helm 2 相比有什么变化?如果我还是使用 Helm 2 运行这些命令,是否可以看到相同的输出?

 Helm 2 描述了用于创建、安装和管理 Chart 的工作流程。Helm 3 建立在该工作流程的基础上,更改了基础架构,以满足不断发展的生态系统的需求。

比较大的改动是,移除 Tiller(Helm 2 是一种 Client-Server 结构,客户端称为 Helm,服务器称为 Tiller)。Helm 3 只有客户端结构,客户端仍称为 Helm。如下图所示,它的操作类似于 Helm 2 客户端,但客户端直接与 Kubernetes API 服务器交互

 1. 移除 Tiller

在 Helm 2 开发周期中,Helm 团队引入了 Tiller。它使多个不同的操作员可以与同一组发行版进行交互,对于在共享集群中工作的团队非常有用。

但 Kubernetes v1.6 默认启用基于角色的访问控制(RBAC),这之后在生产环境中用 Tiller 会变得难以管理。同时出于安全策略考虑,Helm 3 移除了 Tiller,安全模型从根本上得以简化。

 2. 三方战略合并补丁

Helm 2 使用双向战略合并补丁,在升级过程中,它会比较最新 Chart 清单与建议 Chart 清单的差异,以确定需要对 Kubernetes 中的资源进行哪些更改。

在 Helm 3 中,它现在使用三向战略合并补丁。生成补丁时,Helm 会考虑旧清单、当前状态和新清单,充分保障资源能回滚到以前的状态。

 3. Release Names 现在位于命名空间

随着 Tiller 的删除,在 Helm 3 中,有关特定版本的版本信息现在存储在与版本本身相同的命名空间中。

4. Secrets 作为默认存储驱动程序

Helm 2 默认情况下使用 ConfigMaps 存储发行信息。在 Helm 3 中,现在将 Secrets 用作默认存储驱动程序。

 5. Go 导入路径更改

在 Helm 3 中,它将 Go 导入路径从`k8s.io/helm`切换为`helm.sh/helm/v3`。

 6. 使用 JSONSchema 验证 Chart 值

Helm 现在可以将 JSON Schema 强加于 Chart 值。这样可以确保用户提供的值遵循 Chart 维护者设计的架构,当用户为 Chart 提供一组错误值时,它能提供更好的错误报告。

 7. 合并

Chart 依赖关系管理系统已从`requirements.yaml`和`requirements.lock`移至`Chart.yaml`和`Chart.lock`。

 8. 安装时现在需要名称

在 Helm 2 中,如果未提供名称,它会给出一个自动生成的名称。但在 Helm 3 中,如果未提供名称,则会引发错误。

 9. 将 Chart 推送到 OCI 注册中心

对于 Chart 的远程托管,Helm 3 希望实现 Docker Registry 那样的功能,借助 OCI Registry As Storage,根据镜像 OCI 标准规范,复用 Registry 来存储 Chart。

10.Helm 的下阶段规划

核心维护人员对此次发布 Helm 3.0 感到非常满意。**Helm 的下一个开发阶段将围绕稳定性新功能和对现有功能的增强**。

- 增强`Helm test`的功能;

- 增强`Helm test`的功能;

- 对 Helm OCI 集成的改进;

- Go 客户端库的增强功能。

而对于 Helm 2,开发团队将继续接受错误修复并修复出现的任何安全问题,但不会接受任何新功能。所有功能开发将移至 Helm 3。

在 Helm 3 公开发布 6 个月后,团队将停止接受除安全问题以外的 Helm 2 错误修复。

------------------------------------------------------

charts:  包。    relieases: 实例。

二.Helm的安装

官方安装文档:https://helm.sh/zh/docs/intro/install/
支持多种安装方式
1.使用脚本安装
Helm现在有个安装脚本可以自动拉取最新的Helm版本并在 [本地安装](https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3)。
2.查看配置信息
[root@master ~]# helm env
HELM_BIN="helm"
HELM_DEBUG="false"
HELM_KUBEAPISERVER=""
HELM_KUBECONTEXT=""
HELM_KUBETOKEN=""
HELM_NAMESPACE="default"
HELM_PLUGINS="/root/.local/share/helm/plugins"
HELM_REGISTRY_CONFIG="/root/.config/helm/registry.json"
HELM_REPOSITORY_CACHE="/root/.cache/helm/repository"HELM_REPOSITORY_CONFIG="/root/.config/helm/repositories.yaml"
3.添加公用的仓库
# 查看当前配置的仓库地址
$ helm repo list
# 删除默认仓库,默认在国外pull很慢
$ helm repo remove stable
# 添加几个常用的仓库,可自定义名字
$ helm repo add stable https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
$ helm repo add kaiyuanshe http://mirror.kaiyuanshe.cn/kubernetes/charts
$ helm repo add azure http://mirror.azure.cn/kubernetes/charts
$ helm repo add dandydev https://dandydeveloper.github.io/charts
$ helm repo add bitnami https://charts.bitnami.com/bitnami
# 搜索chart
$ helm search repo redis
# 拉取chart包到本地
$ helm pull bitnami/redis-cluster --version 8.1.2
# 安装redis-ha集群,取名redis-ha,需要指定持存储类
$ helm install redis-cluster bitnami/redis-cluster --set global.storageClass=nfs,global.redis.password=xiagao --version 8.1.2
# 卸载
$ helm uninstall redis-cluster
ps:当前阿里云的helm仓库,还是基于k8s1.15版本部署软件。
====================================================================

我们现在的k8s如果是1.18就不能使用阿里云的helm仓库了。

需要更换成 helm repo add stable http://mirror.azure.cn/kubernetes/charts 微软仓库。

[root@master ~]# helm repo add stable http://mirror.azure.cn/kubernetes/charts
[root@master ~]# helm repo update
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "aliyun" chart repository
Update Complete. ⎈ Happy Helming!⎈ 
[root@master ~]# helm repo list
NAME      URL           
azure    http://mirror.azure.cn/kubernetes/charts
4.指定对应的k8s集群
这一步非常关键,它是helm与k8s通讯的保证,这一步就是把k8s环境变量KUBECONFIG进行配置
[root@master ~]# export KUBECONFIG=/root/.kube/config
//可以写到/etc/profile里
[root@master ~]# vim /etc/profile
KUBECONFIG=/root/.kube/config
[root@master ~]# source /etc/profile
5.查询一个charts
[root@master ~]# helm search repo mysql
NAME                             CHART VERSION    APP VERSION    DESCRIPTION                                       
zure/mysql                        1.6.9            5.7.30         DEPRECATED - Fast, reliable, scalable, and easy...
azure/mysqldump                    2.6.2            2.4.1          DEPRECATED! - A Helm chart to help backup MySQL...
azure/prometheus-mysql-exporter    0.7.1            v0.11.0        DEPRECATED A Helm chart for prometheus mysql e
helm的  hub  网址:https://hub.helm.sh/
---------------------------------------------

三.Helm基本概念

//在安装某个Charts包之前,可以先去查找,由于国内网络环境原因,通常我们直接在上述添加的阿里云的Charts仓库内查找,比如,要下载一个MySQL服务。
[root@master ~]# helm search repo mysql
NAME                             CHART VERSION  APP VERSION    DESCRIPTION                                       
zure/mysql                        1.6.9            5.7.30       DEPRECATED - Fast, reliable, scalable, and easy...
azure/mysqldump                    2.6.2            2.4.1          DEPRECATED! - A Helm chart to help backup MySQL...
azure/prometheus-mysql-exporter    0.7.1            v0.11.0        DEPRECATED A Helm chart for prometheus mysql e
1.//部署helm的charts包
[root@master ~]# helm install test-mysql azure/mysql
PS:  注意,helm2版本,在部署的时候,如果不自定名称,会生产自定义的名称,但在helm3版本中,如果没有自定义名称会报错。
//可以去查看一下刚才安装过后的Charts包的信息,注意,一个Charts包在部署安装过后,我们称之为一个releases版本。
root@master ~]# helm list
NAME          NAMESPACE    REVISION    UPDATED                                    STATUS      CHART          APP VERSION
test-mysql    default      1           2022-11-18 11:30:23.488053194 +0800 CST    deployed    mysql-1.6.9    5.7.30   
//在我们部署安装一个releases之后,会在/root/.cache/helm/repository目录下生产一些文件,并且会有一个tar包。
[root@master repository]# pwd
/root/.cache/helm/repository
[root@master repository]# ls
azure-charts.txt  azure-index.yaml  mysql-1.6.9.tgz
//上述mysql-1.6.9.tgz这个包,就是我们所部署安装的Charts包,解压查看一下,里边到底有什么东西
[root@master repository]# tar -zxf mysql-0.3.5.tgz
[root@master repository]# tree -C mysql
mysql
├── Chart.yaml
├── README.md
├── templates
│   ├── configmap.yaml
│   ├── deployment.yaml
│   ├── _helpers.tpl
│   ├── NOTES.txt
│   ├── pvc.yaml
│   ├── secrets.yaml
│   └── svc.yaml
└── values.yaml
1 directory, 10 files
2.分析Chart包解压过后的文件

1、Chart.yaml

这个是一个chart包的概要信息。其中name和version字段相对重要一些。

2、README.md

记录了关于这个Chart包的使用描述信息。

3、values.yaml

这个yaml文件,描述了整个Chart包的所有资源对象涉及到的默认的值。





相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
7月前
|
存储 Kubernetes Ubuntu
第一章 Helm 详细介绍
第一章 Helm 详细介绍
147 0
|
Kubernetes 应用服务中间件 Linux
helm安装和使用-通过helm部署k8s应用
helm安装和使用-通过helm部署k8s应用
|
2月前
|
应用服务中间件 nginx Perl
|
4月前
|
存储 Kubernetes 关系型数据库
Helm 简介:Kubernetes 的包管理器
Helm 简介:Kubernetes 的包管理器
125 2
|
4月前
|
Kubernetes 容器
在K8S中,helm是什么?如何使用?
在K8S中,helm是什么?如何使用?
|
7月前
|
Kubernetes 关系型数据库 数据库
使用 Helm 部署 Wikijs
使用 Helm 部署 Wikijs
|
Kubernetes 安全 容器
007_安装helm
007_安装helm
110 0
|
关系型数据库 MySQL Perl
入门Helm(2)
入门Helm(2)
85 2
|
Kubernetes 关系型数据库 容器
Helm入门
Helm入门
268 0
|
存储 Kubernetes Go
helm chart编写入门
helm chart编写入门
2024 0