Helm 初体验

Helm 的三大概念

  • Chart: 代表着 helm 包,它包含在 kubernetes 集群内部运行应用的程序,工具或者服务所需的所有资源定义。可以看作 apt dpkg, 或者 yum rpm 在 kubernetes 中的等价物
  • Repository: 仓库是用来存放和共享 charts 的地方
  • Release: 是运行在 kubernetes 集群中的 chart 实例,一个chart 通常会在同一个集群中安装多次。每一次安装都会创建一个新的 release

Helm 安装 charts 到 kubernetes 集群中,每次安装都会创建一个新的 release。我们可以在 chart repositories 中寻找新的 chart

Helm 安装

使用脚本安装

[root@master ~]# curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 chmod 700 get_helm.sh ./get_helm.sh
[root@master ~]# chmod 700 get_helm.sh
[root@master ~]# ./get_helm.sh
[root@master ~]# helm version version.BuildInfo{Version:"v3.8.0", GitCommit:"d14138609b01886f544b2025f5000351c9eb092e", GitTreeState:"clean", GoVersion:"go1.17.5"}

初始化

添加一个示例仓库

[root@master ~]# helm repo add bitnami https://charts.bitnami.com/bitnami "bitnami" has been added to your repositories

查看可使用的 helm chart 列表

[root@master ~]# helm search repo bitnami
NAME                                            CHART VERSION   APP VERSION     DESCRIPTION
bitnami/bitnami-common                          0.0.9           0.0.9           DEPRECATED Chart with custom templates used in ...
bitnami/airflow                                 12.0.6          2.2.3           Apache Airflow is a tool to express and execute...
bitnami/apache                                  9.0.6           2.4.52          Apache HTTP Server is an open-source HTTP serve...
bitnami/argo-cd                                 3.0.9           2.2.5           Argo CD is a continuous delivery tool for Kuber...
bitnami/argo-workflows                          0.2.6           3.2.8           Argo Workflows is meant to orchestrate Kubernet...
bitnami/aspnet-core                             3.1.6           6.0.2           ASP.NET Core is an open-source framework for we...
bitnami/cassandra                               9.1.8           4.0.3           Apache Cassandra is an open source distributed ...
bitnami/cert-manager                            0.4.6           1.7.1           Cert Manager is a Kubernetes add-on to automate...
bitnami/common                                  1.11.2          1.11.2          A Library Helm Chart for grouping common logic ...
bitnami/concourse                               1.0.4           7.6.0           Concourse is an automation system written in Go...
bitnami/consul                                  10.2.8          1.11.4          HashiCorp Consul is a tool for discovering and ...
bitnami/contour                                 7.3.11          1.20.1          Contour is an open source Kubernetes ingress co...
bitnami/contour-operator                        0.2.7           1.19.1          The Contour Operator extends the Kubernetes API...
...

安装 Chart 示例

我们可以通过 helm install 命令安装 Chart。
Helm 可以通过多种途径查找和安装 chart,但最简单的是安装官方的 bitnami charts

# 确定可以拿到最新的 charts 列表
helm repo update

# 发布 chart, 名称为自动生成的 mysql-1646116379
[root@master ~]# helm install bitnami/mysql --generate-name
NAME: mysql-1646116379
LAST DEPLOYED: Tue Mar  1 01:33:02 2022
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
CHART NAME: mysql
CHART VERSION: 8.8.26
APP VERSION: 8.0.28

可以通过执行命令了解到这个 chart 的简单信息或者全部信息:

# 简单信息
$ helm show chart bitnami/mysql

# 所有信息
$ helm show  all bitnami/mysql

Tips: 每次执行 helm install 命令的时候,都会创建一个新的发布版本,所以一个 chart 在同一个集群中可以被安装多次,每一个都是可以被独立的管理和升级。

关于版本发布

通过 helm 可以很容易的查询到发布的 chart:

[root@master ~]# helm list
NAME                    NAMESPACE       REVISION        UPDATED                                 STATUS          CHART           APP VERSION
mysql-1646116379        default         1               2022-03-01 01:33:02.275578355 -0500 EST deployed        mysql-8.8.26    8.0.28    

查看该 chart 的版本信息:

[root@master ~]# helm status mysql-1646116379
NAME: mysql-1646116379
LAST DEPLOYED: Tue Mar  1 01:33:02 2022
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
CHART NAME: mysql
CHART VERSION: 8.8.26
APP VERSION: 8.0.2

卸载一个版本

$ helm uninstall mysql-1646116379

Tips: 如果在执行 helm uninstall 的时候提供 --keep-history 选项,helm 将保存版本历史.

常用命令说明

  1. helm search: 查找 Charts

    Helm 自带一个强大的搜索命令,可以从两种来源中进行搜索

    • helm search hub 从 Artifact Hub 中查找并列出 helm charts。 Artifact 中存放了大量不同的仓库

      [root@master ~]# helm search hub wordpress
      URL                                                     CHART VERSION   APP VERSION             DESCRIPTION                               
      https://artifacthub.io/packages/helm/kube-wordp...      0.1.0           1.1                     this is my wordpress package              
      https://artifacthub.io/packages/helm/bitnami-ak...      13.0.7          5.8.3                   WordPress is the world's most popular blogging ...
      https://artifacthub.io/packages/helm/bitnami/wo...      13.0.19         5.9.1                   WordPress is the world's most popular blog
      ...
      
    • helm search repo 从添加(使用 helm repo add)到本地的 helm 客户端中的仓库中进行查找。该命令基于本地数据进行搜索,无需连接互联网。

      [root@master ~]# helm repo add brigade https://brigadecore.github.io/charts
      "brigade" has been added to your repositories
      
      [root@master ~]# helm search repo brigade
      NAME                            CHART VERSION   APP VERSION     DESCRIPTION
      brigade/brigade                 1.10.0          v1.5.0          Brigade provides event-driven scripting of Kube...
      brigade/brigade-github-app      0.8.0           v0.4.1          The Brigade GitHub App, an advanced gateway for...
      brigade/brigade-github-oauth    0.4.0           v0.20.0         The legacy OAuth GitHub Gateway for Brigade
      brigade/brigade-k8s-gateway     0.3.0                           A Helm chart for Kubernetes
      brigade/brigade-project         1.1.0           v1.0.0          Create a Brigade project
      brigade/kashti                  0.7.0           v0.4.0          A Helm chart for Kubernetes
      

    Tips: helm 搜索可以使用模糊字符串匹配:

    [root@master ~]# helm search repo kash
    NAME            CHART VERSION   APP VERSION     DESCRIPTION
    brigade/kashti  0.7.0           v0.4.0          A Helm chart for Kubernetes
    
  2. helm install: 安装一个 helm 包

    使用 helm install 命令安装一个新的 helm 包,最简单的使用办法只需要传入两个参数: 命名的 release 名字和想安装的 chart 的名称

    [root@master ~]# helm install happy-panda bitnami/wordpress
    NAME: happy-panda
    LAST DEPLOYED: Tue Mar  1 02:20:13 2022
    NAMESPACE: default
    STATUS: deployed
    REVISION: 1
    TEST SUITE: None
    NOTES:
    CHART NAME: wordpress
    CHART VERSION: 13.0.19
    APP VERSION: 5.9.1
    

    现在wordpress chart 已经安装。注意安装chart时创建了一个新的 release 对象。上述发布被命名为 happy-panda。 (如果想让Helm生成一个名称,删除发布名称并使用--generate-name。)

    在安装过程中,helm 客户端会打印一些有用的信息,其中包括:哪些资源已经被创建,release当前的状态,以及你是否还需要执行额外的配置步骤。

    Helm 客户端不会等到所有资源都运行才退出。许多 charts 需要大小超过 600M 的 Docker 镜像,可能需要很长时间才能安装到集群中。

    你可以使用 helm status 来追踪 release 的状态,或是重新读取配置信息:

    [root@master ~]# helm status happy-panda
    NAME: happy-panda
    LAST DEPLOYED: Tue Mar  1 02:20:13 2022
    NAMESPACE: default
    STATUS: deployed
    REVISION: 1
    TEST SUITE: None
    NOTES:
    CHART NAME: wordpress
    CHART VERSION: 13.0.19
    APP VERSION: 5.9.1
    

Helm 资源在 K8S 中的安装顺序

  • 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

参考资料

helm 中文文档 (https://helm.sh/zh/docs/)

posted @   木冉96  阅读(139)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示