helm学习
Helm 入门学习概念:helm是什么?Helm 是Kubernetes的包管理器。包管理器类似于在Ubuntu中使用的apt,能快速查找、下载和安装软件包。Helm由客户端组件helm和服务端组件Tiller组成, 能够将一组K8S资源打包统一管理, 是查找、共享和使用为Kubernetes构建的...
Helm 学习
概念:
Helm 是Kubernetes的包管理器。包管理器类似于在Ubuntu中使用的apt,能快速查找、下载和安装软件包。能够将一组K8S资源打包统一管理, 是查找、共享和使用为Kubernetes构建的软件的最佳方式。因为在Kubernetes中部署一个可以使用的应用,需要涉及到很多的 Kubernetes 资源的共同协作。而这些k8s资源过于分散,不方便进行管理,直接通过 kubectl 来管理一个应用,十分麻烦。所以使用helm就可以解决:简化部署 ;高度可配置:Helm Charts提供了高度可配置的选项,可以轻松自定义和修改应用程序的部署配置;版本控制 :Helm允许管理应用程序的多个版本,从而轻松实现版本控制和回滚;模板化:使用YAML模板来定义Kubernetes对象的配置,提高了可重复性和可扩展性;
原理:
helm的两大核心组件,Helm 客户端:用户在本地安装的命令行工具,用于与 Helm 服务器(Tiller)交互。Tiller 服务器:Helm 的服务器端组件,部署在 Kubernetes 集群中,负责处理 Helm 客户端的请求。从 Helm 3 开始,Tiller 被移除,Helm 客户端直接与 Kubernetes API 交互。
组件:
helm客户端:Helm客户端 是终端用户的命令行客户端。负责以下内容:本地chart开发;管理仓库;管理发布;与Helm库建立接口;发送安装的chart;发送升级或卸载现有发布的请求
Helm库: 提供执行所有Helm操作的逻辑。与Kubernetes API服务交互并提供以下功能:结合chart和配置来构建版本;将chart安装到Kubernetes中,并提供后续发布对象;与Kubernetes交互升级和卸载chart。
helm安装:
安装前提条件:1)一个Kubernetes集群或有一个可访问的集群;2)决定将哪些安全配置应用于安装(如果有的话)3)安装和配置Helm。
你必须安装Kubernetes。对于Helm的最新版本推荐Kubernetes的最新稳定版本,它在大多数情况下是第二个最新的次要版本,还应该有一个本地配置的kubectl以便检查你helm install之后的chart包的部署情况。
安装:Helm客户端可以从源代码安装,也可以从预先构建的二进制版本安装。安装简单:下载需要的版本->解压->在解压目录中找到helm程序,移动到需要的目录中(mv linux-amd64/helm /usr/local/bin/helm)
三个重要的概念及使用:
chart:
chart是一个Helm包。它包含了在Kubernetes集群中运行应用程序、工具或服务所需的所有资源定义。可以把它看作Kubernetes的Homebrew formula、一个Apt dpkg或一个Yum RPM文件。
仓库(repository)
Repository(仓库) 是用来存放和共享 charts 的地方。它就像 Perl 的 CPAN 档案库网络 或是 Fedora 的 软件包仓库,只不过它是供 Kubernetes 包所使用的。
发布(release)
Release 是运行在 Kubernetes 集群中的 chart 的实例。一个 chart 通常可以在同一个集群中安装多次。每一次安装都会创建一个新的 release。以 MySQL chart为例,如果你想在你的集群中运行两个数据库,你可以安装该chart两次。每一个数据库都会拥有它自己的 release 和 release name。
开发使用
开发的一般流程:1)首先创建并编辑chart的配置;2)接着打包并发布至Helm的仓库;3)理员使用helm命令安装时,相关的依赖会从仓库下载;4)接着helm会根据下载的配置部署资源至k8s;
helm search: helm search hub 从 Artifact Hub 中查找并列出 helm charts。 Artifact Hub中存放了大量不同的仓库。
helm search repo 从你添加(使用 helm repo add)到本地 helm 客户端中的仓库中进行查找。该命令基于本地数据进行搜索,无需连接互联网。
helm install安装:使用helm install安装包,它只需要一个chart的名称。如$ helm install stable/mariadb;注:安装chart会创建一个新的发布对象。(如果你想使用自己的发布名称,只需在helm install
上使用--name
选项即可)在安装期间,helm
客户端将打印关于创建了哪些资源、发布的状态如何以及是否可以或应该执行其他配置步骤的有用信息。Helm不会等到所有资源都运行之后才退出。许多chart需要大小超过600M的Docker镜像,并且可能需要很长时间才能安装到集群中。
在安装过程中有两种传递配置数据的方法: 1) --values 或者 -f:指定YAML文件覆盖配置项。可以指定多次,最右边的文件将优先;
2) --set 与其变种 --set-string 和--set-file:在命令行中指定要覆盖的配置项。如果两者都使用,--set值将合并到具有更高优先级的 --values 值中。用--set指定的覆盖将持久化在ConfigMap中。可以通过 helm get values <release-name>查看通过--set已设置的值。通过 --set 设置的值可以执行 helm upgrade时指定 --reset-values来清除。从Helm 2.5.0开始,可以使用数组索引语法访问列表项。有时需要在--set行中使用特殊字符。你可以使用反斜杠来转义字符;
升级与回滚 upgrade/rollback
当一个chart的新版本发布时,或者当你想要改变发布的配置时,你可以使用helm upgrade命令。升级采用现有版本并根据你提供的信息进行升级。因为Kubernetes chart可能很大也很复杂,Helm试图执行侵入性最小的升级。它将只更新自上一个版本以来更改的内容。
使用 helm rollback [RELEASE] [REVISION]很容易回滚到以前的发布。可以使用helm history [RELEASE]来查看某个发布的修订号。
在安装、升级、回滚期间,还可以指定几个其他有用的选项来自定义Helm的行为。
(1)--timeout:等待Kubernetes命令完成的秒数值,默认为300(5分钟)
(2) --wait:等待,直到所有的pod都处于就绪状态,PVC被绑定,部署在就绪状态中有最少的pod(Desired 减去maxUnavailable),服务有一个IP地址(如果是LoadBalancer类型,则为Ingress),然后才将发布标记为成功。它将等待与--timeout值一样长的时间。如果超时,则发布将被标记为FAILED。注意:在部署将 replicas设置为1而maxUnavailable不设置为0作为滚动更新策略的一部分的场景中,--wait将返回Ready,因为它满足了Ready条件下的最少Pod。
(3) --no-hooks:跳过钩子执行
(4) --recreate-pods(只对 upgrade 和rollback可用) :此选项将导致重新创建所有pod(属于部署的pod除外)
helm delete:删除发布,可以使用helm list命令查看你目前部署的所有发布:
helm repo:操作仓库,可以使用helm repo list查看配置了哪些仓库:使用helm repo add添加一个新仓库:$ helm repo add dev https://example.com/dev-charts由于chart仓库经常更改,在任何时候都可以通过运行helm repo update来确保helm客户端是最新的。
包资源安装顺序:
- Namespace
- NetworkPolicy
- ResourceQuota
- LimitRange
- PodSecurityPolicy
- PodDisruptionBudget
- ServiceAccount
- Secret
- SecretList
- ConfigMap
- StorageClass
- PersistentVolume
- PersistentVolumeClaim
- CustomResourceDefinition
- ClusterRole
- ClusterRoleList
- ClusterRoleBinding
- ClusterRoleBindingList
- Role
- RoleList
- RoleBinding
- RoleBindingList
- Service
- DaemonSet
- Pod
- ReplicationController
- ReplicaSet
- Deployment
- HorizontalPodAutoscaler
- StatefulSet
- Job
- CronJob
- Ingress
- APIService
heml常用命令
命令 | 释义 |
helm repo add/update/remove | 添加/更新/删除 helm chart仓库 |
helm list | 列举chart仓库 |
helm repo index | 基于包含打包chart的目录,生成索引文件 |
helm dependency build helm dependency list helm dependency update | 基于Chart.lock文件重新构建charts/目录 列出给定chart的依赖 基于Chart.yaml内容升级charts/ |
helm package | 将chart目录打包 |
helm completion | 为指定的shell生成自动补全脚本 |
helm create | 使用给定的名称创建chart |
helm env | helm客户端环境信息 |
helm get | 下载命名版本的扩展信息 |
helm history | 检索发布历史 |
helm install | 安装chart |
helm lint | 验证chart是否存在问题 |
helm plugin | 安装、列举或卸载Helm插件 |
helm pull | 从仓库下载chart并(可选)在本地目录中打开 |
helm push | 推送chart到远程 |
helm registry | 从注册表登录或登出 |
helm rollback | 回滚发布到上一个版本 |
helm search | helm中搜索关键字 |
helm show | 显示chart信息 |
helm status | 显示命名版本的状态 |
helm template | 本地渲染模板 |
helm test | 执行发布的测试 |
helm uninstall | 卸载版本 |
helm upgrade | 升级版本 |
helm verify | 验证给定路径的chart已经被签名且是合法的 |
helm version | 打印客户端版本信息 |
Helm | Docs |
更多推荐
所有评论(0)