Helm简单使用

Helm是用于Kubernetes的包管理工具,它通过Chart简化应用的部署和管理。Helm包含客户端和(Helm3之前)Tiller服务器,两者通过KubernetesAPI交互。Helm3移除了Tiller,直接与Kubernetes集群通信。文章提供了Helm的安装教程,包括下载客户端、创建和管理Chart,以及部署应用程序。
摘要由CSDN通过智能技术生成

Helm 简介

Helm 是 Kubernetes 的包管理工具,用于创建、打包和部署应用程序。它使用称为 Chart 的打包文件来描述 Kubernetes 资源对象的集合,从而简化了 Kubernetes 应用程序的部署和管理。

Helm 包含两个组件:

Helm 客户端:用于创建、打包和部署 Chart。
Tiller 服务器:在 Kubernetes 集群中运行,负责管理已安装的 Chart。(Helm 3 中,Tiller 服务器被移除,因此不再需要单独安装 Tiller)
Helm 客户端与 Tiller 服务器通过 Kubernetes API 通信,以创建、更新和删除 Kubernetes 资源对象。

Helm 架构

以下是 Helm 的架构图:
在这里插入图片描述

Helm 客户端通过与 Chart 存储库通信获取 Chart,然后使用 Tiller 服务器将 Chart 安装到 Kubernetes 集群中。Helm 客户端与 Tiller 服务器之间的通信通过 Kubernetes API 完成。

Helm 安装部署教程

如何在 Kubernetes 集群中安装和使用 Helm。

步骤1:安装 Helm 客户端

要安装 Helm 客户端,请访问 Helm Releases 页面,下载适用于您操作系统的最新版本的 Helm 客户端。
在 Linux 上,您可以使用以下命令下载和安装 Helm:

Kubernetes集群(版本为1.8或更高版本)
kubectl命令行工具
curl命令行工具
首先,我们需要从Helm官方网站下载Helm二进制文件。请根据您的操作系统下载相应的二进制文件。例如,在Linux系统上,我们可以使用以下命令来下载Helm v3.7.0:
curl https://get.helm.sh/helm-v3.7.0-linux-amd64.tar.gz -o helm.tar.gz
然后,我们需要将二进制文件解压缩并将可执行文件移动到系统路径中。例如,在Linux系统上,我们可以使用以下命令:
tar -zxvf helm.tar.gz
sudo mv linux-amd64/helm /usr/local/bin/helm

验证 Helm 是否正确安装:

$ helm version
version.BuildInfo{Version:"v3.7.1", GitCommit:"7c41e2e8c431300e09b832f417b56bab5f61cae6", GitTreeState:"clean", GoVersion:"go1.17.4"}

步骤2:安装 Tiller 服务器(helm3不用执行)

在 Helm 3 中,Tiller 服务器被移除,因此不再需要单独安装 Tiller。相反,Helm 3 使用 Kubernetes 的原生机制与 Kubernetes API 通信,以管理已安装的 Chart。

步骤3:创建 Chart

要创建 Chart,请使用 Helm CLI 工具创建一个名为“mychart”的新 Chart:

$ helm create mychart

这将在当前目录中创建一个名为“mychart”的新 Chart 目录,其中包含一些默认的 Chart 文件和目录。
我们可以使用以下命令查看Chart的目录结构:
输出应如下所示:

mychart
├── Chart.yaml
├── charts
├── templates
│   ├── NOTES.txt
│   ├── _helpers.tpl
│   ├── deployment.yaml
│   ├── ingress.yaml
│   ├── service.yaml
│   └── serviceaccount.yaml
└── values.yaml
Chart.yaml: Chart的元数据,包括Chart名称、版本、描述、维护者等信息。
values.yaml: 包含Chart的默认值和配置选项。使用者可以通过自定义values来覆盖默认值。
charts/: 包含Chart所依赖的其他Chart。这些依赖项也称为子Chart。
templates/: 包含Kubernetes资源的模板文件。这些模板文件使用Go语言的模板引擎来渲染Kubernetes YAML文件。
helpers/: 包含一些通用的Go语言模板文件,可以在其他模板文件中重用。
LICENSE: Chart的许可证。
README.md: Chart的文档,包括如何使用Chart、如何配置Chart等等。
下面是一些常用的目录和文件:
templates/deployment.yaml: 用于定义Kubernetes Deployment资源的模板文件。
templates/service.yaml: 用于定义Kubernetes Service资源的模板文件。
templates/ingress.yaml: 用于定义Kubernetes Ingress资源的模板文件。
templates/configmap.yaml: 用于定义Kubernetes ConfigMap资源的模板文件。
templates/secret.yaml: 用于定义Kubernetes Secret资源的模板文件。
values.yaml: 包含Chart的默认值和配置选项。使用者可以通过自定义values来覆盖默认值。
Chart.yaml: Chart的元数据,包括Chart名称、版本、描述、维护者等信息。

该目录包含了一些默认的Kubernetes资源,例如Deployment、Service和Ingress。这些资源的定义位于templates目录中。

部署应用

创建 Helm Chart

在 Helm 中,我们使用 Chart 来打包应用,类似于 Kubernetes 的 Deployment。Chart 中包含了应用所需要的所有资源和配置,方便部署和管理。
首先,我们需要创建一个 Helm Chart。在终端中运行以下命令:

$ helm create mywebapp

这会在当前目录下创建一个名为 mywebapp 的目录,其中包含了 Chart 所需的文件和目录结构。

4.2 配置 Chart

接下来,我们需要配置 Chart,指定应用名称、镜像等信息。在 mywebapp 目录下,打开 values.yaml 文件,将其修改为如下内容:

replicaCount: 1

image:
  repository: nginx
  tag: stable
  pullPolicy: IfNotPresent

nameOverride: ""
fullnameOverride: ""

service:
  type: ClusterIP
  port: 80

ingress:
  enabled: false
  annotations: {}
  path: /
  hosts:
    - chart-example.local
  tls: []

resources:
  limits:
    cpu: 100m
    memory: 128Mi
  requests:
    cpu: 100m
    memory: 128Mi

nodeSelector: {}

tolerations: []

affinity: {}

在这里,我们指定了应用使用的镜像为 nginx 的 stable 版本,并配置了服务类型、资源限制等信息。具体内容可以根据实际情况进行修改。

安装 Chart

接下来,我们就可以使用 Helm 来安装 Chart。在 mywebapp 目录下,运行以下命令:

$ helm install mywebapp .

这会将 Chart 打包成一个 Helm Release,并将其部署到 Kubernetes 集群中。你可以通过以下命令查看该 Release 的状态:

$ helm status mywebapp

如果一切正常,你应该能够看到输出类似于以下内容:

NAME: mywebapp
LAST DEPLOYED: Wed Dec 22 10:34:07 2021
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
1. Get the application URL by running these commands:
  export POD_NAME=$(kubectl get pods --namespace default -l "app.kubernetes.io/name=mywebapp,app.kubernetes.io/instance=mywebapp" -o jsonpath="{.items[0].metadata.name}")
  echo "Visit http://127.0.0.1:8080 to use your application"
  kubectl --namespace default port-forward $POD_NAME 8080:80

这表示应用已经成功部署到 Kubernetes 集群中了。

卸载 Chart

当你不再需要该应用时,可以使用以下命令将其卸载:

$ helm uninstall mywebapp

这会删除所有与该 Release 相关的资源和对象,包括应用的所有 Pod、Service、Deployment 等。

部署应用程序

现在可以使用Helm部署应用程序了。例如,您可以使用Helm部署Nginx:

helm install nginx stable/nginx-ingress

此命令将安装Nginx Ingress Controller到Kubernetes集群中。您可以使用kubectl命令检查它是否成功安装:

kubectl get pods

您应该看到一个名为nginx-ingress-controller的Pod在运行。

同样,您可以使用Helm部署其他应用程序,例如WordPress,Joomla,GitLab等等。只需在命令中指定相应的chart即可。

helm install wordpress stable/wordpress
helm install joomla stable/joomla
helm install gitlab gitlab/gitlab

这些命令将安装相应的应用程序,并为它们创建Kubernetes资源。安装完成后,您可以使用kubectl命令检查是否已成功创建资源。

删除应用程序

如果您想从Kubernetes集群中删除应用程序,您可以使用Helm删除命令。
例如,如果您要删除WordPress应用程序,可以运行以下命令:

helm delete wordpress

这将删除Kubernetes集群中与该应用程序相关的所有资源。同样,您可以使用相应的命令删除其他应用程序。

通过使用Helm,您可以更轻松地管理Kubernetes应用程序。Helm提供了一种简单而灵活的方法来安装,升级和删除Kubernetes应用程序。与手动创建和管理Kubernetes资源相比,使用Helm可以大大提高生产力,并简化管理过程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值