美文网首页
k8s helm3 学习笔记

k8s helm3 学习笔记

作者: 华阳_3bcf | 来源:发表于2021-05-06 15:55 被阅读0次

    Helm 是一个 Kubernetes 应用的包管理工具,用来管理 chart——预先配置好的安装包资源,有点类似于 Ubuntu 的 APT 和 CentOS 中的 YUM。2019 年 11 月 13 日,Helm 3 发布,2020 年 4 月 30 日,从 CNCF 中毕业。本文基于 Helm 3。

    移除 Tiller

    helm 在 helm v2 时分为客户端 (helm client,即命令行工具) 与服务端 (helm server) 两部分,在服务端又叫 Tiller,安装 Tiller 时会在集群中部署一个 Pod,用以接替资源部署。

    在 Helm 3 中移除了 Tiller, 版本相关的数据直接存储在了 Kubernetes 中。移除原因是 Tiller 存在一些安全隐患,因为它需要集群管理员的ClusterRole才能创建。

    基本概念

    先了解下helm中的基本概念

    helm和yum一样也有源(repo)、包的概念:

    • chart:类似于yum的rpm包,里面定义了部署资源以及一些依赖的信息(deployment,service等)。和rpm包作用上类似,我们需要部署那些服务,按照格式定义好就行了。
    • repo:类似于yum源,helm也有自己的源,存放chart。
    • Release:是运行在 Kubernetes 集群中的 chart 的实例。一个 chart 通常可以在同一个集群中安装多次。每一次安装都会创建一个新的 release。以 MySQL chart为例,如果你想在你的集群中运行两个数据库,你可以安装该chart两次。每一个数据库都会拥有它自己的 releaserelease name

    安装

    $ curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3
    $ chmod 700 get_helm.sh
    $ ./get_helm.sh
    Downloading https://get.helm.sh/helm-v3.5.4-linux-amd64.tar.gz
    Verifying checksum... Done.
    Preparing to install helm into /usr/local/bin
    helm installed into /usr/local/bin/helm
    

    Helm Chart编写

    这是针对自己写/修改 chart 文件。

    利用helm create命令,创建一个简单的示例。helm create的示例chart也并不是一无所有,它包含了大部分的资源抽象,例如kubernetes deployment,service,ingress,serviceaccount等资源。

    $ helm create hello-world
    Creating hello-world
    $ tree hello-world
    hello-world
    ├── Chart.yaml # 存储一些元数据,例如chart的信息,描述等等
    ├── charts # 该目录保存其他依赖的 chart(子 chart)
    ├── templates # chart 配置模板,用于渲染最终的 Kubernetes YAML 文件
    │   ├── NOTES.txt # 用户运行 helm install 时候的提示信息
    │   ├── _helpers.tpl # 用于创建模板时的帮助类
    │   ├── deployment.yaml # Kubernetes deployment 配置
    │   ├── ingress.yaml # Kubernetes ingress 配置
    │   ├── service.yaml # Kubernetes service 配置
    │   ├── serviceaccount.yaml # Kubernetes serviceaccount 配置
    │   └── tests
    │       └── test-connection.yaml
    └── values.yaml # 定义 chart 模板中的自定义配置的默认值,可以在执行 helm install 或 helm update 的时候覆盖
    
    3 directories, 10 files
    
    

    做一个最基础的测试,我们清空template文件下的内容,以及value.yaml中的内容

    我们添加一个configmap.yaml文件到template目录下

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: hellworld-configmap
    data:
      myvalue: "Hello World"
    

    helm install命令,看到已经部署到集群中了

    $ helm install helloworld ./hello-world/
    NAME: helloworld
    LAST DEPLOYED: Thu May  6 07:16:17 2021
    NAMESPACE: default
    STATUS: deployed
    REVISION: 1
    TEST SUITE: None
    $ oc get cm hellworld-configmap
    NAME                  DATA      AGE
    hellworld-configmap   1         30m
    

    使用

    添加helm chart 源 (helm3 中不再有预定义中心仓库,需要手工添加)

    $ helm repo add stable https://charts.helm.sh/stable
    "stable" has been added to your repositories
    $ helm repo list
    NAME    URL
    stable  https://charts.helm.sh/stable
    

    查看源里可安装的包(chart)

    $ helm search repo stable
    NAME                                    CHART VERSION   APP VERSION             DESCRIPTION
    stable/acs-engine-autoscaler            2.2.2           2.1.1                   DEPRECATED Scales worker nodes within agent pools
    stable/aerospike                        0.3.5           v4.5.0.5                DEPRECATED A Helm chart for Aerospike in Kubern...
    stable/airflow                          7.13.3          1.10.12                 DEPRECATED - please use: https://github.com/air...
    stable/ambassador                       5.3.2           0.86.1                  DEPRECATED A Helm chart for Datawire Ambassador
    stable/anchore-engine                   1.7.0           0.7.3                   Anchore container analysis and policy evaluatio...
    ...<snip>...
    

    上面的例子是从 repo 里面搜索,还可以从hub 搜索。

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

    • helm search hubArtifact Hub 中查找并列出 helm charts。 Artifact Hub中存放了大量不同的仓库。
    • helm search repo 从你添加(使用 helm repo add)到本地 helm 客户端中的仓库中进行查找。该命令基于本地数据进行搜索,无需连接互联网。

    你可以通过运行 helm search hub 命令找到公开可用的charts:

    $ helm search hub wordpress
    URL                                                 CHART VERSION APP VERSION DESCRIPTION
    https://hub.helm.sh/charts/bitnami/wordpress        7.6.7         5.2.4       Web publishing platform for building blogs and ...
    https://hub.helm.sh/charts/presslabs/wordpress-...  v0.6.3        v0.6.3      Presslabs WordPress Operator Helm Chart
    https://hub.helm.sh/charts/presslabs/wordpress-...  v0.7.1        v0.7.1      A Helm chart for deploying a WordPress site on ...
    

    安装一个chart

    To install the chart with the release name my-release:

    $ helm repo add bitnami https://charts.bitnami.com/bitnami
    $ helm install my-release bitnami/mysql
    

    参考

    https://helm.sh/zh/docs/intro/quickstart/

    https://helm.sh/zh/docs/intro/using_helm/

    https://jimmysong.io/kubernetes-handbook/practice/helm.html

    https://blog.csdn.net/weixin_36938307/article/details/105226395

    相关文章

      网友评论

          本文标题:k8s helm3 学习笔记

          本文链接:https://www.haomeiwen.com/subject/nqsddltx.html