• Helm基础知识


    0、安装Helm

    安装Helm

    下载helm安装包,releases

    解压tar.gz文件

    mv linux-amd64/helm /usr/bin/helm

    接着就可以使用helm。

    一、 什么是Helm

    Helm是针对K8s的包管理器,使得打包、配置、部署应用/微服务到K8s集群中,变得简单容易。如果没有Helm, K8s的各种资源相互依赖,必须被手动的创建,这样将会复杂又浪费时间。 Helm由1个命令行的Helm client组成, 用户可以通过命令行的helm client去接入Kubernets API server。 用户的Helm permissions通过用户的kubeconfig file进行配置和定义。

    Helm所使用的打包格式叫Chart。1个Chart是一系列文件的集合,定义了部署微服务所需要的k8s resources。所有的chart文件被添加到1个目录中,这个目录的名字就是helm chart的名字。

    Example:

     tree
    .
    ├── Chart.yaml
    ├── README.md
    ├── templates
    │   ├── Kafka-zk-tls-cert-client.yaml
    │   ├── _helpers.tpl
    │   ├── _logshipper-helpers.tpl
    │   ├── configmap.yaml
    │   ├── kafka-client-ca-certificate.yaml
    │   ├── kafka-client-client-ca-certificate.yaml
    │   ├── kafka-server-certificate.yaml
    │   ├── kafka-ss.yaml
    │   ├── kafka-svc-client.yaml
    │   ├── kafka-svc.yaml
    │   ├── logshipper-configmap.yaml
    │   ├── logshipper-tls-cert-lt-client.yaml
    │   ├── pdb.yaml
    │   ├── rolebinding.yaml
    │   ├── sasl-secret.yaml
    │   ├── service-account.yaml
    │   └── service-nodeport.yaml
    ├── values.schema.json
    └── values.yaml
    
    1 directory, 21 files

    image

    1) 必须的文件

    Chart.yaml 描述chart, chart的name和version必须被定义。
    values.yaml 包含chart的所有参数和默认值,默认值可以被覆盖,当微服务部署的时候。

    2)可选的文件

    LICENSE 普通的明文表示license的信息。
    README.md 1个README文件。
    requirements.yaml 列出对于其他charts的依赖。

    子目录templates下面包含以下文件:
    YAML-files: 定义要create的k8s resources。
    NOTES.txt: 当chart部署的时候,显示的文本。
    _helpers.tpl:可以用到YAML-files中templates

    二、Helm是如何工作的

    image

    每当执行Helm install命令,charts被发送给Helm中的Go template 渲染机,解析chart结构。提供chart的方式由.tar.gz文件或者目录。

    当Helm命令执行的时候,chart可以存储到本地也可以是remote repo。通过templates files, Helm对象被创建在机器中,使得通过helm对象去访问templates之间的values提供了可能

    YAML-files最终被生成,helm调用适当的k8s api去创建resource,就像chart中所定义/指定的那样。

    Helm对象有:
    Chart:Chart.yaml 的内容
    Values:values.yaml文件提供的传给template的和用户提供的(用户提供指的是通过helm install or helm upgrade操作提供。
    Release:release对象本身。release name和类似的东西,这些可以在deploy时候被创建,通过release对象被访问到。
    Files:用该对象访问/接入charts中除template files外的一般文件。
    Capabilities:k8集群的Capabilities,包含类似于k8s版本信息的东西。
    Template:主要是关于当前正在执行的template的信息。

    更多helm内置对象,https://helm.sh/docs/chart_template_guide/#built-in-objects

    Helm简单的命令:

    helm list 
    helm status serviceName
    helm get all serviceName
    helm upgrade
    helm history serviceName
    helm rollback serviceName 1
    helm version
    version.BuildInfo{Version:"v3.6.2", GitCommit:"ee407bdf364942bcb8e8c665f82e15aa28009b71", GitTreeState:"clean", GoVersion:"go1.16.5"}
    
    helm --help
    The Kubernetes package manager
    ........
    
    export NAMESPACE="schema-registry-sr-install"
    helm list -n $NAMESPACE
    NAME                            NAMESPACE                       REVISION        UPDATED                                 STATUS          CHART                                   APP VERSION
    eric-data-coordinator-zk        eric-schema-registry-sr-install 1               2021-07-20 16:42:13.0619995 +0800 CST   deployed        eric-data-coordinator-zk-1.17.0+17
    eric-data-message-bus-kf        eric-schema-registry-sr-install 1               2021-08-12 20:57:50.0334071 +0800 CST   deployed        eric-data-message-bus-kf-1.16.0+27
    
    kubectl get pods -n $NAMESPACE
    NAME                         READY   STATUS    RESTARTS   AGE
    eric-data-coordinator-zk-0   1/1     Running   56         98d
    eric-data-message-bus-kf-0   1/1     Running   45         75d
    eric-data-message-bus-kf-1   1/1     Running   42         75d
    eric-data-message-bus-kf-2   1/1     Running   42         75d

    更多 Helm command

    三、Helm chart设计原则(如何创建简单的Helm chart)

    https://docs.bitnami.com/kubernetes/how-to/create-your-first-helm-chart/

     

  • 相关阅读:
    webpack-dev-server 源码
    2021前端会有什么新的变化
    父类 超类 基类 子类 派生类
    Java的权限修饰符(public,private,protected,默认friendly)
    class修饰符public、private、protected、static、abstract
    hash和签名 、证书
    前端加密解密crypto
    appid app_key app_secret
    sdk开发 、sdk与插件的区别
    CF76C
  • 原文地址:https://www.cnblogs.com/gracejiang/p/15468364.html
Copyright © 2020-2023  润新知