作者介绍:简历上没有一个精通的运维工程师。请点击上方的蓝色《运维小路》关注我,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。
我们上一章介绍了Docker基本情况,目前在规模较大的容器集群基本都是Kubernetes,但是Kubernetes涉及的东西和概念确实是太多了,而且随着版本迭代功能在还增加,笔者有些功能也确实没用过,所以只能按照我自己的理解来讲解。
我们前面介绍了多种资源,比如一个真正的应用可能会包括多个资源(deploy,svc,cm,secret等),如果我们要创建一个应用得全部手工编写这些资源,有没有一种方式可以一键完成这些资源的创建呢?k8s给我们提供了一个资源叫做Helm,它就具有这个功能。
Helm介绍
Helm 是一个 Kubernetes 应用程序的包管理工具。它简化了Kubernetes应用的安装和管理。Helm 由客户端工具 helm 和服务端组件 tiller(仅在 Helm v2 中)组成。Helm v3 在后来的版本中移除了 Tiller 组件,以增强安全性和简化操作。它和Linux里面的yum实际上比较类似。
以下是 Helm 的一些关键特性:
应用程序包格式:
-
Helm 定义了一种应用程序包格式称为“图表”(charts)。一个图表是一组描述Kubernetes资源的文件集合。
-
图表可以简化复杂应用的安装流程,因为它们包含了应用所有必要的Kubernetes资源和配置信息。
应用程序仓库:
-
Helm 允许用户从仓库中添加、更新和下载图表。
-
Helm Hub 是 Helm 官方的集中仓库,用户可以找到各种社区维护的图表。
-
用户也可以创建和维护私有仓库。
版本控制和升级:
-
Helm 管理图表的版本,使得部署的应用可以轻松升级和回滚。
-
通过Helm,你可以升级应用到新版本,或者回滚到旧版本,而无需直接操作底层Kubernetes资源。
模板化和配置:
-
图表使用模板语言来动态配置Kubernetes资源,这为部署相同应用的不同实例(例如不同的环境或配置)提供了灵活性。
-
Helm 的模板语法允许用户重用代码,通过简单的配置改变来定制资源。
依赖管理:
- Helm 允许图表定义依赖于其他图表,这使得复杂应用的部署成为可能,因为你可以组合不同的图表来构建整个应用。
社区和生态系统:
-
由于 Helm 的流行,已经建立了一个庞大的社区和生态系统。这意味着许多常见的应用和服务都有现成的图表可以使用。
-
Helm 社区积极维护和更新图表,确保与Kubernetes的兼容性。
从 Helm v2 到 Helm v3 的主要变化:
-
移除了 Tiller,图表的安装和管理现在完全在客户端进行,提高了操作及安全性。
-
引入了新的图表API版本及相关改进,例如改进的版本控制和发布追踪机制。
-
改进了对Kubernetes资源的处理,包括对CRDs(自定义资源定义)的支持。
Helm 是 Kubernetes 生态系统中的核心工具之一,它大幅简化了Kubernetes应用的部署和管理流程。
Helm安装
要在Kubernetes集群上安装Helm,你需要按照以下步骤来安装Helm客户端并初始化它:
-
下载Helm: 前往官方Helm发布页面来下载适合你的操作系统的Helm版本。你可以使用以下命令在Linux上下载并解压Helm(以特定版本为例,确保更换为最新版本):
curl -s https://get.helm.sh/helm-v3.16.4-linux-amd64.tar.gz | tar xz -
安装Helm: 从解压后的目录中找到
helm二进制文件,并移动它到某个在你的PATH中的位置,如/usr/local/bin/。mv linux-amd64/helm /usr/local/bin/helm -
验证Helm安装: 确认Helm已正确安装:
helm version
你应该看到Helm的版本信息,则说明安装成功。
4.添加仓库: Helm V3不再自带默认仓库。你可以根据需要添加官方仓库或者其他仓库(不添加仓库等于yum没有对应的repo文件),比如添加Nginx Ingress仓库:
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm repo update
5.使用Helm安装应用: 一旦Helm客户端安装并配置好,你就可以开始使用它来安装应用了。例如,你可以用Helm来安装Nginx Ingress控制器:
helm install my-nginx ingress-nginx/ingress-nginx \
--namespace ingress-nginx \
--create-namespace
这条命令将会在ingress-nginx命名空间中安装一个名为my-nginx的Nginx Ingress控制器实例。
当然这个对网络有一定的要求,大部分环境可能都无法安装成功,当然我也没成功。
简单来说Helm实际上只是Linux的的二进制命令,它需要配合仓库配置才能使用,类似yum命令。就可以完成当前集群一键安装升级卸载应用的功能。
运维小路
一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!
关注微信公众号《运维小路》获取更多内容。